2014年4月27日日曜日

バックグラウンド処理の間プログレスダイアログを表示するAsyncTask

AsyncTaskのパラメタライズはそのままに、共通化したい前処理や後処理を実装するとこんな感じ。

/** * バックグラウンド処理の間にキャンセルできないプログレスダイアログを表示する */ public abstract class ModalProgressTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> { private final WeakReference<ProgressDialog> mProgressRef; public ModalProgressTask(Context context, String message) { ProgressDialog dialog = new ProgressDialog(context); dialog.setMessage(message); dialog.setCancelable(false); mProgressRef = new WeakReference<ProgressDialog>(dialog); } @Override protected void onPreExecute() { super.onPreExecute(); ProgressDialog dialog = mProgressRef.get(); if (dialog != null && !dialog.isShowing()) { dialog.show(); } } @Override protected void onPostExecute(Result result) { super.onPostExecute(result); ProgressDialog dialog = mProgressRef.get(); if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } } @Override protected void onCancelled() { super.onCancelled(); ProgressDialog dialog = mProgressRef.get(); if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } } }


2014年4月15日火曜日

InsetDrawableで余白のある区切り線を作る

InsetDrawableについては「Android InsetDrawableを活用する」で取り上げましたが、これを使うとListView用に左右に余白のある区切り線を作ることができます。 res/drawable/list_divider.xml <?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetLeft="8dp" android:insetRight="8dp"> <shape> <solid android:color="#cccccc" /> <size android:height="1dp" /> </shape> </inset> public class MainListFragment extends ListFragment { @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ListView lv = getListView(); lv.setDivider(getResources().getDrawable(R.drawable.list_divider)); } ... }



2014年4月14日月曜日

Android 画像サイズ

アップアイコン (48dp x 48dp)

ldpi36 x 36(1dp = 3/4px4dp = 3px)
mdpi48 x 48(1dp = 1px4dp = 4px)
hdpi72 x 72(1dp = 1.5px4dp = 6px)
xhdpi96 x 96(1dp = 2px4dp = 8px)
xxhdpi144 x 144(1dp = 3px4dp = 12px)
xxxhdpi192 x 192(1dp = 4px4dp = 16px)




Action Bar (32dp x 32dp、24dp x 24dp)

外枠内枠
ldpi24 x 2418 x 186
mdpi32 x 3224 x 248
hdpi48 x 4836 x 3612
xhdpi64 x 6448 x 4816
xxhdpi96 x 9672 x 7224
xxxhdpi128 x 12896 x 9632




Notification (24dp x 24dp、22dp x 22dp)

外枠内枠
ldpi18 x 1816.5 x 16.51.5
mdpi24 x 2422 x 222
hdpi36 x 3633 x 333
xhdpi48 x 4844 x 444
xxhdpi72 x 7266 x 666
xxxhdpi96 x 9688 x 888