我正在嘗試修改一些我在網上找到的代碼以滿足我的需求。它應該抓住一個MotionEvent(特別是一次投擲)並啓動一個單獨的活動。我是java新手,所以在理解代碼時遇到了一些麻煩。這是我到目前爲止有:在Android中處理用戶界面事件
public class Hypertension extends Activity {
private GestureDetector flingDetector;
View.OnTouchListener gestureListener;
private TextView redView;
private TextView greenView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
redView = (TextView)findViewById(R.id.buttonRed);
greenView = (TextView)findViewById(R.id.buttonGreen);
redView.setOnTouchListener(gestureListener);
greenView.setOnTouchListener(gestureListener);
flingDetector = new GestureDetector(new MyFlingListener());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (flingDetector.onTouchEvent(event)) {
//startActivity(new Intent(Hypertension.this, Green.class));
return true;
}
return false;
}
};
}
class MyFlingListener extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
startActivity(new Intent(Hypertension.this, Green.class));
return false;
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (flingDetector.onTouchEvent(event))
return true;
else
return false;
}
}
我的理解是,當屏幕被觸摸時的onTouchEvent被調用。在上面的代碼中,這個方法被覆蓋來調用flingDetector,它偵聽一個fling。如果有人聽到,它會啓動該活動。
但是,到現在爲止,當我在模擬器中執行一些操作時,什麼也沒有發生。另外,我對各種布爾方法實際表示的返回值相當困惑。
非常感謝!我得到了它的工作。我簡化了我的應用程序,以響應點擊而不是手勢,並研究了它的語法如何適合您的三步過程。一旦我理解了這一點,這只是將它翻譯成滑動的問題。有沒有辦法將這個線程標記爲已解決? – dfetter88 2010-07-02 20:18:41
太棒了!真高興你做到了!而且你已經將線程標記爲已解決:) – idolize 2010-07-04 18:33:03