Android:レスポンシブユーザーインターフェイスのベストプラクティス
質問
私はAndroidとJavaが初めてです。イベントがメッセージとともにディスパッチされるC ++を使用する前に。ここで、Androidプラットフォームと同じユーザーエクスペリエンスを作成したいと思います。イベントをユーザーコントロールにバインドする最適な方法についての提案やコメントをお願いします。
C ++の例を次に示します。
ON_MESSAGE(WM_RECORD_START, &CMainFrame::OnRecordStart)//Method OnRecordStarts() executes on WM_RECORD_START_MESSAGE
...
LRESULT CMainFrame::OnRecordStart(WPARAM wParam, LPARAM lParam)
{
m_pNetworkCtrl->SetGeoLocationInfo();
...
}
...
void CMainFrame::RecordStart()
{
PostMessage(WM_RECORD_START);
}
上記の場合、メソッド RecordStart()
は Button
にバインドされ( Button
が押されると実行されます)、投稿しますメッセージ WM_RECORD_START
。メッセージ WM_RECORD_START
を受信すると、メソッド OnRecordStart()
が実行されます。
前述のように、レスポンシブユーザーインターフェースを作成したいのですが、 OnRecordStart()
メソッドが RecordStart()
:
void RecordStart()
{
OnRecordStart();
}
ご意見をお寄せいただければ幸いです。
解決
ハンドラ Runnable をメッセージキューに投稿します。
これは簡単な例です
class MyClass
{
Handler m_myHandler;
Runnable m_myRunnable;
MyClass()
{
m_myHandler = new Handler();
m_myRunnable = new RUnnable()
{
public void run()
{
// do your stuff here
}
};
}
public void onclickListener(...)
{
// push the runnable into the message queue
m_myHandler.post(m_myRUnnable);
}
}
他のヒント
ここには2つの質問があります。
-
コントロールをバインドする方法。私が使う どこでも匿名の内部クラス。入力するのは少し冗長ですが、自動補完により簡単に入力できます。
-
UIをレスポンシブにする方法。 鍵は何もしないことです UIスレッドで消費します。それであれば .1秒以上かかり、作業を行う ワーカースレッドとUIに通知する タスクが完了したら更新します。の 他のことはあなたを確認することです 大量のゴミを生成しないでください アンドロイドGCは現在非常に原始的であるため。
Button
sの場合、通常は Button
クラスを拡張し、 onTouchEvent()
public boolean onTouchEvent (MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
setPressed(true);
}
return super.onTouchEvent(event);
}