ポップアップでdrag and drop できるカラーピッカー


パソコンの世界では常識だが、スマホ/タブレットの世界ではあまり見ないもの。
そう、「ウインドウ」という概念。

Androidだと、PopupWindowとかいうクラスが標準で用意されているけど、
http://stackoverflow.com/questions/9035678/android-how-to-dragmove-popupwindow
このへんを見る限り、ドラッグ&ドロップ機能を標準で持っているものでは無さそうだなー。
そもそも、Activityの枠を超えて表示ってできんのかな?などいろいろ疑問があり、
練習も兼ねて
・ポップアップ表示
・タイトルバーをつかんでドラッグ&ドロップできる
カラーピッカーを使ってみた。

もとのペイントアプリ側が、FW側のパーミッション改造を要するダメダメアプリなので、カラーピッカーは独立したapkとして、ブロードキャストでやりとりするようにしてみた。



カラーピッカー→ https://docs.google.com/file/d/0B4UHSMVmhaPvZ2xfeEttMUZORDQ/edit?usp=sharing
らくがき→ https://docs.google.com/file/d/0B4UHSMVmhaPvaW1ZakFPQ1hueUU/edit?usp=sharing

といっても、開発中ということもあり、できあがったころにソース公開します。

カラーピッカーだけは単体で使えるようなAPI的なものがあるので、下記に記載しておきます。

 ・カラーピッカーを表示する
Intent intent = new Intent("com.example.colorpicker.intent.show");
intent.putExtra("initialcolor",0xffff0000);//optional 初期色を赤に設定
sendBroadcast(intent);

 ・カラーピッカーを閉じる
Intent intent = new Intent("com.example.colorpicker.intent.hide");
sendBroadcast(intent);

 ・カラーピッカーからの色変更を受け取る
registerReceiver(receiver, new IntentFilter("com.example.colorpicker.intent.colorchanged"));

 BroadcastReceiverはこんな感じ
receiver = new BroadcastReceiver(){
@Override
public void onReceive(Content context, Intent intent){
//エラー処理とかいろいろだいぶ省略
int color = intent.getIntExtra("color",DEFAULT_COLOR);
}
}

ひとつのapkにガンガン詰め込むのもありですが、こういう感じでapkを分けてやるのも、再利用をする上では結構重要だったりする。