使用ViewFlipper实现屏幕滚动切换动画
标签(空格分隔): ViewFlipper Android 自动切换
Android系统自带的一个多页面管理控件,可以实现子界面的自动切换。
使用ViewFlipper实现图片轮播
1.静态导入:在layout布局文件中直接导入
<ViewFlipper
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/viewFlipper">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ex2"
android:scaleType="matrix"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ex3"
android:scaleType="matrix"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ex4"
android:scaleType="matrix"/>
</ViewFlipper>
2.动态导入
addView()方法
flipper=(ViewFlipper)findViewById(R.id.flipper);
flipper.addView(getImageView(R.drawble.pic1));
flipper.addView(getImageView(R.drawble.pic2));
flipper.addView(getImageView(R.drawble.pic3));
flipper.addView(getImageView(R.drawble.pic4));
3.ViewFlipper常用方法
setInAnimation: 设置View进入屏幕时的动画
setOutAnimation: 设置View退出屏幕时的动画
showNext: 调用该函数来显示ViewFlipper里的下一个View
showPrevious: 调用该函数来显示ViewFlipper里的上一个View
setFlipInterval: 设置View之间切换的时间间隔
startFlipping: 使用上面设置的时间间隔来开始切换所有的View,切换后会循环进行
stopFlipper: 停止View切换
ViewFlipperActivity.java
package com.excavator.viewflipperdemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.ImageView;
import android.widget.ViewFlipper;
public class ViewFlipperActivity extends Activity {
private ViewFlipper mFlipper;
private int[] resId = {R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4};
private float startX;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_flipper);
mFlipper= (ViewFlipper) findViewById(R.id.flipper);
//动态导入方式加入子View
for (int id:resId) {
mFlipper.addView(getImageView(id));
}
/*//为ViewFlipper添加动画效果
mFlipper.setInAnimation(this, R.anim.left_in);
mFlipper.setOutAnimation(this, R.anim.left_out);
//设置时间间隔
mFlipper.setFlipInterval(3000);
mFlipper.startFlipping();*/
}
//手势滑动
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
//落下
case MotionEvent.ACTION_DOWN:
startX = event.getX();
break;
//滑动
case MotionEvent.ACTION_MOVE:
if (event.getX()-startX>100) { //向右滑动看前一页
mFlipper.setInAnimation(this,R.anim.left_in);
mFlipper.setOutAnimation(this,R.anim.left_out);
mFlipper.showPrevious();
}else if (startX-event.getX()>100) { //向左滑动看后一页
mFlipper.setInAnimation(this, R.anim.right_in);
mFlipper.setOutAnimation(this, R.anim.right_out);
mFlipper.showNext();
}
break;
//离开
case MotionEvent.ACTION_UP:
break;
}
return super.onTouchEvent(event);
}
private ImageView getImageView(int resId) {
ImageView image = new ImageView(this);
// image.setImageResource(resId);
image.setBackgroundResource(resId);
return image;
}
}