本人已经写好一个类,这个类里边可以实现“拖动图片后图片回弹”效果,只是回弹的速度太快而自己不知道怎么控制,请大神们指教该如何以更慢的速度来实现“拖动图片后图片回弹”这个效果,下边是代码:
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()+"--------视图坐标-----");
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是center,所以图片完全没有经过缩放
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()+"--------视图坐标-----");
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是center,所以图片完全没有经过缩放
解决方案 »
- Could not find class 'org.ksoap2.serialization.SoapObject'
- listView数据的动态显示效果
- 关闭收音机问题
- SQLite问题
- Android 驱动中如何发送触摸屏multi-touch的抬起事件
- android中如何构造这种布局
- 如何实现晃动切换歌曲(必须以屏幕关掉以后)
- 请问九宫格解锁中划线是怎么实现的??
- 安卓开发中调用系统摄像头摄像,怎么设置保存的录像的种类
- ListView不能刷新,原有的数据不更新,只更新新增的数据的问题
- 关于Mediaplayer的reset()的疑问。。。。
- 为什么android中引用的stings.xml的值不显示
在MotionEvent.ACTION_UP:
中起一个线程
然后把 (mx - curX) 距离分成若干份,线程每次都执行一小段
当回到原位的时候结束线程。如果是android3.0以上版本,你可以考虑一下属性动画,属性动画是可以设置时间的。如果有问题请回复
http://www.eoeandroid.com/thread-234342-1-1.html
我觉得应该对你有帮住,你可以看看,明天给你找找属性动画的demo
不过属性动画要求最低api是11,所以一般的应用都不轻易加属性动画,不过效果确实很好。
switcherView.scrollTo(0, 0);
break; 不要直接移动到底部0.0,在中间放一个loop循环,然后从当前位置经过许多迭代到达底部0.0。大概这样:case MotionEvent.ACTION_UP:
for (int i =mx; i > mx; i--) {
myImage.scrollTo((int) mx, 0);
}
break; 还可以在迭代之间加延迟,这样移动的更平滑。