我编写了一个可以拖动图像然后弹回图像的应用程序。但回弹的速度太快了。我试过但找不到减缓它的方法。
如何控制速度?
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是中心,图像尚未缩放。
答案 0 :(得分:0)
案例switcherView.scrollTo(0, 0)
中的电话MotionEvent.ACTION_UP
告诉Android将图片移至指定位置。
如果您想减慢此动作,则需要在ImageView switcherView
参见TranslateAnimation课程。我怀疑你只需指向正确的方向,谷歌搜索提供了许多参考。
答案 1 :(得分:0)
你需要在这里写一些代码
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);
<强>更新强> 如果你从右向左拖动但从左向右拖动不能正常工作,这是代码正常工作,所以纠正你自己。