本人已经写好一个类,这个类里边可以实现“拖动图片后图片回弹”效果,只是回弹的速度太快而自己不知道怎么控制,请大神们指教该如何以更慢的速度来实现“拖动图片后图片回弹”这个效果,下边是代码:
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,所以图片完全没有经过缩放

解决方案 »

  1.   

    使用Scroller类,这个类就是根据你想要滚动到的位置和想要滚动的时间计算一些值,并执行线程去执行,这样可以实现平滑的滚动。或者你自己用一个线程来实现也行
      

  2.   

    你可以在利用Thread+Handler
    在MotionEvent.ACTION_UP:
    中起一个线程
    然后把 (mx - curX) 距离分成若干份,线程每次都执行一小段
    当回到原位的时候结束线程。如果是android3.0以上版本,你可以考虑一下属性动画,属性动画是可以设置时间的。如果有问题请回复
      

  3.   

    逛论坛,突然看到了这个scrollView
    http://www.eoeandroid.com/thread-234342-1-1.html
    我觉得应该对你有帮住,你可以看看,明天给你找找属性动画的demo
    不过属性动画要求最低api是11,所以一般的应用都不轻易加属性动画,不过效果确实很好。
      

  4.   

    你要在这里加点代码:case MotionEvent.ACTION_UP:                                                
        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; 还可以在迭代之间加延迟,这样移动的更平滑。
      

  5.   

    现在这个贴可以结了,我自己已经知道如何较好地实现这一效果了,写一个ImageView的子类,运用scroller来实现这个效果,当然ImageView的子类要实现View中一个方法:computeScroll,感谢所以回帖帮我的亲们