1 package jp.sourceforge.gokigen.memoma;
4 import java.util.Enumeration;
6 import android.app.ProgressDialog;
7 import android.content.Context;
8 import android.os.AsyncTask;
9 import android.util.Log;
12 * オブジェクトの位置を整列するクラス (非同期処理を実行)
15 * MeMoMaObjectHolder : 実行時に渡すクラス(Param)
16 * Integer : 途中経過を伝えるクラス(Progress)
17 * String : 処理結果を伝えるクラス(Result)
22 public class ObjectAligner extends AsyncTask<MeMoMaObjectHolder, Integer, String>
24 ProgressDialog executingDialog = null;
25 IAlignCallback receiver = null;
29 public ObjectAligner(Context context, IAlignCallback client)
33 // プログレスダイアログ(「保存中...」)を表示する。
34 executingDialog = new ProgressDialog(context);
35 executingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
36 executingDialog.setMessage(context.getString(R.string.dataAligning));
37 executingDialog.setIndeterminate(true);
38 executingDialog.setCancelable(false);
39 executingDialog.show();
47 protected void onPreExecute()
54 * (バックグラウンドで実行する(このメソッドは、UIスレッドと別のところで実行する))
58 protected String doInBackground(MeMoMaObjectHolder... datas)
60 MeMoMaObjectHolder objectHolder = datas[0];
62 // オブジェクトの出力 (保持しているものはすべて表示する)
63 Enumeration<Integer> keys = objectHolder.getObjectKeys();
64 while (keys.hasMoreElements())
66 Integer key = keys.nextElement();
67 MeMoMaObjectHolder.PositionObject pos = objectHolder.getPosition(key);
69 float newLeft = (float) Math.floor((pos.rect.left + 15.0f)/ 30.0) * 30.0f;
70 float newTop = (float) Math.floor((pos.rect.top + 15.0f)/ 30.0) * 30.0f;
71 pos.rect.offsetTo(newLeft, newTop);
83 protected void onProgressUpdate(Integer... values)
93 protected void onPostExecute(String result)
100 receiver.objectAligned();
105 Log.v(Main.APP_IDENTIFIER, "ObjectAligner::onPostExecute() : " + ex.toString());
109 executingDialog.dismiss();
119 public interface IAlignCallback
121 public abstract void objectAligned();