我知道有一个MotionEvent
,但这是一个不同的情况:我希望View
变得越来越大,而我触摸它,并逐渐缩小到原来的大小,如果我不再按View
。
onTouchEvent
仅在我第一次按View
时调用ACTION_DOWN
);发布View
(ACTION_UP
);或擦洗我的手指(ACTION_MOVE
)。他们对我的案子没有帮助。所以我想知道,有没有优雅的解决方案,而不是使用像计时器来解决低级别的问题?
答案 0 :(得分:1)
不,没有一种优雅的方法可以做到这一点(如果你考虑使用计时器作为不优雅的)。但我真的不担心使用这些解决方案。你可以这样做(假设view
是你动画的View
):
View
- Activity
或Fragment
):
private static final float SCALE_FACTOR = 0.2f;
private static final long STEP_DELAY = 300;
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
@Override
public void run() {
view.animate().scaleXBy(SCALE_FACTOR).scaleYBy(SCALE_FACTOR);
handler.postDelayed(runnable, STEP_DELAY);
}
};
OnTouchListener
设置View
:
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
handler.postDelayed(runnable, STEP_DELAY);
return true;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
userImage.animate().cancel();
handler.removeCallbacks(mRunnable);
return false;
}
return true;
}
});
调整SCALE_FACTOR
和STEP_DELAY
以完全符合您的需求。