/**
* バックグラウンド処理の間にキャンセルできないプログレスダイアログを表示する
*/
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月27日日曜日
バックグラウンド処理の間プログレスダイアログを表示するAsyncTask
AsyncTaskのパラメタライズはそのままに、共通化したい前処理や後処理を実装するとこんな感じ。
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)
Action Bar (32dp x 32dp、24dp x 24dp)
Notification (24dp x 24dp、22dp x 22dp)
| ldpi | 36 x 36 | (1dp = 3/4px | 4dp = 3px) | |
|---|---|---|---|---|
| mdpi | 48 x 48 | (1dp = 1px | 4dp = 4px) | |
| hdpi | 72 x 72 | (1dp = 1.5px | 4dp = 6px) | |
| xhdpi | 96 x 96 | (1dp = 2px | 4dp = 8px) | |
| xxhdpi | 144 x 144 | (1dp = 3px | 4dp = 12px) | |
| xxxhdpi | 192 x 192 | (1dp = 4px | 4dp = 16px) |
Action Bar (32dp x 32dp、24dp x 24dp)
| 外枠 | 内枠 | 差 | ||||
|---|---|---|---|---|---|---|
| ldpi | 24 x 24 | 18 x 18 | 6 | |||
| mdpi | 32 x 32 | 24 x 24 | 8 | |||
| hdpi | 48 x 48 | 36 x 36 | 12 | |||
| xhdpi | 64 x 64 | 48 x 48 | 16 | |||
| xxhdpi | 96 x 96 | 72 x 72 | 24 | |||
| xxxhdpi | 128 x 128 | 96 x 96 | 32 |
Notification (24dp x 24dp、22dp x 22dp)
| 外枠 | 内枠 | 差 | ||||
|---|---|---|---|---|---|---|
| ldpi | 18 x 18 | 16.5 x 16.5 | 1.5 | |||
| mdpi | 24 x 24 | 22 x 22 | 2 | |||
| hdpi | 36 x 36 | 33 x 33 | 3 | |||
| xhdpi | 48 x 48 | 44 x 44 | 4 | |||
| xxhdpi | 72 x 72 | 66 x 66 | 6 | |||
| xxxhdpi | 96 x 96 | 88 x 88 | 8 |
登録:
投稿 (Atom)