大家好,好久不见,这段时间一直忙来着,也没上来进行更新,但是我还在想,我应该给大家更新点什么呢?东西太多了,想更新的东西,我怕有些东西我描述的不清楚,给大家造成干扰,纠结了一段时间后,但是我还是坚定了自己的信念,接着写,欢迎大家指正里面的错误!
今天讲的呢是ViewFlipper 这个容器
想必大家都用过PPT里面的幻灯片切换,每个图片的在规定时间内定的切换动作,今天实现的这个就类似幻灯片的切换吧;
这个控件的简单介绍,大家百度下就知道了,老规矩,干货上来,一眼就知道:
首先是布局文件:activity_flipper.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ViewFlipper
android:id="@+id/vf"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
是不是看布局就感觉到很简单呢,在来看看具体的实现部分吧
FlipperActivity.java
public class FlipperActivity extends Activity implements GestureDetector.OnGestureListener {
//声明ViewFlipper
private ViewFlipper mViewFlipper;
//声明GestureDetector 手势
private GestureDetector mGestureDetector;
//声明所需的图片
private ImageView mimageView1;
private ImageView mimageView2;
private ImageView mimageView3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_flipper);
//创建ViewFlipper 的子视图
mimageView1 = new ImageView(this);
mimageView2 = new ImageView(this);
mimageView3 = new ImageView(this);
//为ImageView 添加资源图片
mimageView1.setImageResource(R.drawable.image1);
mimageView2.setImageResource(R.drawable.image2);
mimageView3.setImageResource(R.drawable.image3);
//创件手势实例对象
mGestureDetector = new GestureDetector(this);
//初始化ViewFlipper
mViewFlipper = (ViewFlipper) findViewById(R.id.vf);
//创建透明动画
AlphaAnimation alphaAnimation = new AlphaAnimation(0.3f, 1.0f);
//创建动画持续时间
alphaAnimation.setDuration(1500);
//给ViewFlipper 添加动画
mViewFlipper.setAnimation(alphaAnimation);
//为ViewFilpper 添加子视图
mViewFlipper.addView(mimageView1, 0);
mViewFlipper.addView(mimageView2, 1);
mViewFlipper.addView(mimageView3, 2);
//长按屏幕,切换子视图效果
if (mGestureDetector.isLongpressEnabled()) {
//设置子视图却换的时间间隔
mViewFlipper.setFlipInterval(5500);
//开始切换ViewFlipper 中的子视图
mViewFlipper.startFlipping();
}
}
//设置如何使用手指切换ViewFlipper 中的子视图
@Override
public boolean onFling(MotionEvent e1,
MotionEvent e2,
float velocityX,
float velocityY) {
/**
* 当手指在x轴向右滑动的距离超过150dp的时候,展示ViewFlipper的下一个视图
*/
if ((e1.getX() - e2.getX()) > 150) {
this.mViewFlipper.setInAnimation(AnimationUtils
.loadAnimation(this, android.R.anim.fade_in));
this.mViewFlipper.setOutAnimation(AnimationUtils
.loadAnimation(this, android.R.anim.fade_out));
this.mViewFlipper.showNext();
return true;
} else if ((e1.getX() - e2.getX()) < -150) {
this.mViewFlipper.setInAnimation(AnimationUtils
.loadAnimation(this, android.R.anim.fade_in));
this.mViewFlipper.setOutAnimation(AnimationUtils
.loadAnimation(this, android.R.anim.fade_out));
this.mViewFlipper.showPrevious();
return true;
}
return false;
}
@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) {
}
}
行了,这两段代码添加进去就可以了,自己找三张图添加进去就OK了。
这就是今天想要分享的内容,大家有什么想知道的,我会尽我努力去搞出来,欢迎大家提出你们的建议~