使用viewFilpper,实现左右滚动的相册

来源:互联网 发布:pptv网络电视官方 编辑:程序博客网 时间:2024/05/19 12:11

1、xml--------------------------》

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <ViewFlipper        android:id="@+id/flipper"        android:layout_width="match_parent"        android:layout_height="match_parent"></ViewFlipper></LinearLayout>
2、MainActivity代码-----------------------》

public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener {    ViewFlipper filpper;    GestureDetector detector;//手势识别器    Animation[] animations = new Animation[4];//定义动画数组,用于为viewflipper指定切换动画效果    final int FLIP_DISTANCE = 50;//定义手势冬至两点之间的最小距离    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        detector = new GestureDetector(this, this);        filpper = ((ViewFlipper) findViewById(R.id.flipper));        //为filpper添加留个imageview控件        filpper.addView(addImageView(R.mipmap.p1));        filpper.addView(addImageView(R.mipmap.p2));        filpper.addView(addImageView(R.mipmap.p3));        filpper.addView(addImageView(R.mipmap.p4));        filpper.addView(addImageView(R.mipmap.p5));        filpper.addView(addImageView(R.mipmap.p6));        //初始化Animation数组        animations[0] = AnimationUtils.loadAnimation(this, R.anim.slide_in_right);        animations[1] = AnimationUtils.loadAnimation(this, R.anim.slide_out_left);        animations[2] = AnimationUtils.loadAnimation(this, R.anim.slide_in_left);        animations[3] = AnimationUtils.loadAnimation(this, R.anim.slide_out_right);    }    private View addImageView(int resId) {        ImageView imageView = new ImageView(this);        imageView.setImageResource(resId);        imageView.setScaleType(ImageView.ScaleType.CENTER);        return imageView;    }    @Override    public boolean onDown(MotionEvent e) {        return false;    }    @Override    public void onShowPress(MotionEvent e) {    }    @Override    public boolean onSingleTapUp(MotionEvent e) {        return false;    }    @Override    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {        return false;    }    @Override    public void onLongPress(MotionEvent e) {    }    @Override    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {        if (e1.getX() - e2.getX() > FLIP_DISTANCE) {            //说明是从右往左滑动            filpper.setInAnimation(animations[0]);            filpper.setOutAnimation(animations[1]);            filpper.showPrevious();            return true;        }        if (e1.getX() - e2.getX() < FLIP_DISTANCE) {            //说明是从左往右滑            filpper.setInAnimation(animations[2]);            filpper.setOutAnimation(animations[3]);            filpper.showPrevious();            return true;        }        return false;    }    @Override    public boolean onTouchEvent(MotionEvent event) {        return detector.onTouchEvent(event);    }}
3、代码中的动画,在res下面新建一个anim的文件夹:

  (1) slid_in_left

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:duration="@android:integer/config_mediumAnimTime"        android:fromXDelta="-100%"        android:toXDelta="0%" />    <alpha        android:duration="@android:integer/config_mediumAnimTime"        android:fromAlpha="0.5"        android:toAlpha="1.0" /></set>

(2)slide_in_right

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:duration="@android:integer/config_mediumAnimTime"        android:fromXDelta="100%"        android:toXDelta="0%" />    <alpha        android:duration="@android:integer/config_mediumAnimTime"        android:fromAlpha="0.5"        android:toAlpha="1.0" /></set>

(3)slide_out_left

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:duration="@android:integer/config_mediumAnimTime"        android:fromXDelta="0%"        android:toXDelta="-100%"></translate>    <alpha        android:duration="@android:integer/config_mediumAnimTime"        android:fromAlpha="1.0"        android:toAlpha="0" /></set>


(4)slide_out_right

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:duration="@android:integer/config_mediumAnimTime"        android:fromXDelta="0%"        android:toXDelta="100%"></translate>    <alpha        android:duration="@android:integer/config_mediumAnimTime"        android:fromAlpha="1.0"        android:toAlpha="0" /></set>

0 1