2013年9月12日木曜日

Androidでドラッグ&ドロップ

 ドラッグ&ドロップを実装しますよー


上のスクショだと→の鳥がもともと表示してあるImageView、
中央にあるのがドラッグ中のものです。()


        img_bird  = (ImageView) findViewById(R.id.img_bird);

        img_bird.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                ClipData data = ClipData.newPlainText("Launch", "LaunchIcon");
                view.startDrag(data, new View.DragShadowBuilder(view), (Object) view, 0);

                return false;
            }
        });

        img_bird.setOnDragListener(new View.OnDragListener() {
            @Override
            public boolean onDrag(View view, DragEvent dragEvent) {
                switch (dragEvent.getAction()){
                    case DragEvent.ACTION_DRAG_STARTED :

                        break;

                    case DragEvent.ACTION_DRAG_ENDED :

                        // 終了位置を取得、それによってアレする
                        float x = dragEvent.getX();
                        float y = dragEvent.getY();

                        break;

                    case DragEvent.ACTION_DRAG_EXITED :

                        break;

                    default:

                        break;

                }

                return false;
            }
        });


ImageViewにonTouchListenerをセット、
その中でstartDragを呼び出しています。
タッチしたときにDragが始まって、別にセットされたonDragListenerの
onDragで取得したEventを処理する感じらしいです。

なんでこんな中途半端かというと、動かせた時点で「あ、やりたいこと違うな」とおもって
今から別のコードに書き換えるから。
とりあえず忘備録として。

Android 3.0の新APIで簡単ドラッグ&ドロップ実装
Drag and Dropを用いてViewをドラッグする
6.7 ドラッグ & ドロップ - ソフトウェア技術ドキュメントを勝手に翻訳

2013年8月15日木曜日

AndroidQuery便利ですね。

お久しぶりです。
最近またAndroidの開発をしてまして。
AndroidQueryがとても便利だということに気づきました。
公式サイト

ajax処理の方は使っていないのですが、viewの処理をするのにちょー便利。

http://be-hase.com/android/173/
こちらのサイトさんとかで詳しくは取り扱ってますね。

詰まった点を一点。
例えばボタンをクリックしたとき。

        AQuery aq = new AQuery(this);

        aq.id(R.id.btn_hoge).clicked(this, "onClick");

としたときに、
onClickメソッドのスコープはpublicにしましょう。
privateじゃそりゃ他のところから呼び出すときに見えねーよ当たり前だろと思いつつも
ものの見事にハマったので一応。

2013年5月21日火曜日


AsyncTaskで処理中にUIスレッドでProgressDialogだそうと思ったらエラー。

05-21 13:14:35.878: E/AndroidRuntime(10934): FATAL EXCEPTION: main
05-21 13:14:35.878: E/AndroidRuntime(10934): java.lang.RuntimeException: Unable to start activity ComponentInfo{対象アクティビティ名}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application


private ProgressDialog dialog;

protectedvoid onPreExecute() {
dialog = new ProgressDialog(mActivity.getApplicationContext());
dialog.setTitle("Now loading...");
dialog.setMessage("ただいま検索しています。少々お待ちください。");
dialog.show();
}
で、dialogの引数が悪かったらしい。

アプリケーション自体のコンテキストじゃだめだって。

なので4行目を
dialog = new ProgressDialog(mActivity);

に変更したらちゃんと動きました。よかったよかった。

2013年2月27日水曜日

Google Places APIを捨てるかどうか迷っている。

今すごく迷っている。

現在私はAndroid端末のGPS使って位置情報取得→周囲のレストラン情報取得して
ごにょごにょなアプリをサンデーというかアフターファイブプログラミングで開発している。

んで、今のところGoogle Places APIを利用しているのだが、

いくらなんでもGoogle Places API、飲食店の情報としては少なすぎるのだ。
提供される情報が。

店舗の名前は出てくるが、一体何料理屋かというのは一切出てこない。
出てくるのはcafeかbarかrestaurantかという区切りのみ、それすらも複数出る。

あと開店時刻も確実に載ってるわけではない。
(そりゃそーだユーザーの集合知頼りなんだから。載ってるお店もあるけれども。)

いくらなんでもこれじゃ作ってもユーザーに不便かけるだけだから、
ここまできたけどあきらめて捨てようかな。

しかし代替案というと、

  • ぐるなび
  • ホットペッパー
  • 食べログ
になるのだが。

まず食べログはAPIを法人向けにしか公開してないし。
(そりゃねーっすよぅ…)

ホットペッパーよりもぐるなびのが店舗登録数多いらしいし
あとホットペッパーはチェーンばっかだって言うし


じゃあぐるなびかぁ、ってなるんだけど


………
XMLしかねーーーーーーーーーーーーーー


頑張ってJacksonと格闘しまくってJSON取得ならできるようになったぜヒャッハしてたのに
また戻ることになるのかと思うと大分悲しいです。ヽ(`Д´)ノウワァン

まぁでも情報としてはどうかんがえてもぐるなび…
もうやるなら今しかねーから諦めてリプレイスするかああああああ
あーーーーめんどうくさーーーーーーー

(というか迷ってるっていいながら決まってんじゃん。)

2013年2月3日日曜日

Google Map Android API v2がやっと動かせたよー

Google Map Android API v2がやっと動かせました。
私の土日を返せっていうステキなミスでした。

まず大事なポイント。
持ってるAndroidの教本持ちながらぽちぽちやってる人で、
Map使いたい人はその本のMap部分を捨て去ってください。(2013年1月現在)
2012年末に発表になったので2013年1月次点で対応してる本はほぼないんじゃないでしょうか。

たとえば、Google MapをAndroidアプリで使うのに、以前はGoogleAPI内のMap関連を使うために
CompileをAndroid*.*じゃなく、GoogleApi*.*を使っていたとおもいますが、
Google Map Android API v2はそこの依存はなくなったみたいで、Android*.*の方で
コンパイルするみたいです。
(Androidに入ってるGooglePlay開発者サービスというアプリを利用するらしーのですが、
こちらがFroyo以降のAndroidには自動で入っているものなので多分ほぼ気にしなくてOKかと)


というわけで本題。


http://foonyan.sakura.ne.jp/wisteriahill/gmap_androidapiv2/index.html
こちらのサイトを参考に。


私がやっていく中でつまったのは以下の点。


  • AndroidManifestで <uses-liblary android:name="com.google.android.maps" />が入ったままだった(v1時代の名残。バッティングしちゃうのでこれ消さなきゃいけないらしい)
  • google_play_serviceのライブラリープロジェクトを入れる時に「isLibrary」にチェック入れてた(ライブラリープロジェクトは起動できないって怒られた)

それ以外は完璧なのに動かない。。何故。。
一応MapFragment自体は開くけどグレーグリッドのまま。
apiKeyの設定はちゃんとしてる。。何故。。

なんでやねーーーんといろいろ全部見直したら。


上の画像の赤部分の「Google Map Android API v2」をONにするのが正しいのですが
そのときはその下の「Google Map API v2」をONにしてました。orz

そしたらちゃんとGoogleMap表示されたよ!!やったね!!!


ちなみに私は実機でデバッグしてます。(XperiaGX、ISC4.0.2の公式ROM)
Map Android API v2、エミュレータではまだうまく動かない、らしい?し
何よりも起動が鬼のように遅いので。

2013年1月28日月曜日

はじめまして。

はじめまして。
Android開発にあたって、メモ代わりに使えたらいいなと思って作ってみました。

本当に初心者なのでよちよちで頑張ろうと思います…がんばれるかなー作れるかなーorz