[英]how to slow down the picture when it springs back
我寫了一個可以拖動圖像然后彈回圖像的應用程序。 但是回彈的速度太快。 我已經嘗試過,但是找不到降低速度的方法。
我該如何控制速度?
public class CustomViewActivity extends Activity {
float mx,my;
ImageView switcherView;
Bitmap bitmap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_view);
switcherView = (ImageView) this.findViewById(R.id.img);
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.kh06);
switcherView.setImageBitmap(bitmap);
switcherView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent event) {
float curX, curY;
//System.out.println(switcherView.getScrollX()+"--------view axis-----");
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mx = event.getX();
break;
case MotionEvent.ACTION_MOVE:
curX = event.getX();
switcherView.scrollBy((int) (mx - curX), 0);
mx = curX;
break;
case MotionEvent.ACTION_UP:
switcherView.scrollTo(0, 0);
break;
}
return true;
}
});
}
}
圖像的scaleType為中心,圖像尚未縮放。
在MotionEvent.ACTION_UP
告訴Android將圖像移動到指定位置的情況下switcherView.scrollTo(0, 0)
調用switcherView.scrollTo(0, 0)
。
如果要減慢移動速度,則需要在ImageView switcherView
指定動畫
請參見TranslateAnimation類。 我懷疑您只是需要指出正確的方向,因此Google搜索提供了許多參考。
你需要在這里寫一些代碼
case MotionEvent.ACTION_UP:
switcherView.scrollTo(0, 0);
break;
而不是直接移回0,0,而是進行for循環,並在許多迭代中從當前位置移至0,0。 這樣的事情。
case MotionEvent.ACTION_UP:
new Timer().schedule(new TimerTask() {
@Override
public void run() {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
myImage.scrollTo((int) mx, 0);
myImage.invalidate();
}
});
if (mx > 0) {
mx -= 1;
} else {
cancel();
}
}
}, 100,10);
更新如果您從右向左拖動,則此代碼有效,但從左向右拖動時,此代碼無法正常工作,請自行糾正。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.