小妹请问ImageView切换图片拖动效果

小妹请教ImageView切换图片拖动效果
我用ImageView做了一个由左向右滑动,换图片的程序.

我想问一下,在切换过程中,怎么能做到很平滑的过去,

而且有拖动效果,就是在手指慢慢拖过去的过程中,第二张图片慢慢的覆盖屏幕。

第一张图片在消失!不知道我描述清楚了吗!就是拖动效果!

或者大家有什么好的思路,请指点我!

嘿嘿~~ 贴上代码!

Java code

package com.imageview.test.demo;

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnTouchListener{
       private ImageView imageView01;
       private GestureDetector gd;//用于捕捉touch的详细手势(gesture)
       int count=0;
       private int[] resIds = new int[]
            { R.drawable.anim_a, R.drawable.anim_b, R.drawable.anim_c,R.drawable.anim_d };
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        imageView01=(ImageView)findViewById(R.id.imageView01);
        imageView01.setImageResource(resIds[0]);
        
        gd = new GestureDetector (this, new GDetector()); //创建一个GestureDetector实例,下文重写其onFling()方法
        imageView01.setOnTouchListener(this); //这里如果没有 implements OnTouchListener 会报错
        imageView01.setLongClickable(true);//不加这个滑动就没反应了

    }

    public class GDetector extends SimpleOnGestureListener //GDetector 名字是随便起的
    {
        //MotionEvent e1 按下时的状态,位置
        //MotionEvent e2, //松手时的状态,位置
        //float vx,//x坐标的移动速度,单位: px/秒
        //float y坐标的移动速度
        @Override
        public boolean onFling(MotionEvent e1,MotionEvent e2, float vx,float vy)
        {
            //滑动速度足够快至少50点/秒,手指起落点减起点是正值且>200 判断属于向左滑动
            if((e1.getX()-e2.getX()>200) && (Math.abs(vx)>50)) 
            {
                count++;
                imageView01.setImageResource(resIds[count]);
                Toast.makeText(MainActivity.this, "count:"+count, 1000).show();
      
            }/*else if ((e2.getX()-e1.getX()>200) && (Math.abs(vx)>50)) //同理判断是向右滑动
            { 
                count--;
                imageView01.setImageResource(resIds[0]);
                Toast.makeText(MainActivity.this, "count:"+count, 1000).show();
            }*/
            return false;
        }
    }
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return gd.onTouchEvent(event);

    }
        

}



XML code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView android:id="@+id/imageView01"
            android:layout_height="fill_parent" android:layout_width="fill_parent" 
            android:layout_centerInParent="true">
        </ImageView>

</LinearLayout>


------解决方案--------------------
做成一个listview不行吗 可以实现你所描述的拖动效果的 呵呵
------解决方案--------------------
if((e1.getX()-e2.getX()>200) && (Math.abs(vx)>50)) 

你的代码第一个参数,就已经决定了不可能慢慢出来的,要滑动结束后 e1 e2确定了才会setImageRes