我一直在使用android大约两周时间,并且需要创建一个应用程序,在这个应用程序中,您基本上单击并拖动边缘视图以使其像滑动按钮一样。我不确定这个词,所以可能有一个我找不到的答案。
我自己想出的是:
public class MyButton extends View implements View.OnTouchListener {
float defaultX;
int defaultWidth;
public MyButton(Context context, int width) {
super(context);
defaultX = getX();
defaultWidth = width;
setOnTouchListener(this);
}
public boolean onTouch(View view, MotionEvent event) {
int X = (int) event.getRawX();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
setX(X);
break;
case MotionEvent.ACTION_UP:
setX(defaultX);
break;
}
// Check if view is past width of screen
if (getX()+getWidth() > defaultWidth) {
callOnClick();
setX(defaultX);
}
return true;
}
}
它基本上有效,除了调用click时,它似乎被多次调用。我打电话给finish()
后,在我的下一个活动中搞砸了,屏幕再次弹回,因为它认为点击被一遍又一遍地调用 - 通常是大约4或5次。我认为这是由于为活动存储了拖动事件的消息队列。
是否有更好或“正常”的实施方式?我能想到的最接近的东西就像我想要制作的那样,就像iPhone上的滑动解锁按钮一样。