不,沒有一個真正優雅的方法來做到這一點(如果你考慮使用定時器不雅)。但我真的不用擔心使用這些解決方案。你可以這樣來做(假設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
恰好滿足您的需求。