ViewFlipper 视图容器

大家好,好久不见,这段时间一直忙来着,也没上来进行更新,但是我还在想,我应该给大家更新点什么呢?东西太多了,想更新的东西,我怕有些东西我描述的不清楚,给大家造成干扰,纠结了一段时间后,但是我还是坚定了自己的信念,接着写,欢迎大家指正里面的错误!
今天讲的呢是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了。

这就是今天想要分享的内容,大家有什么想知道的,我会尽我努力去搞出来,欢迎大家提出你们的建议~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Harry Potter%

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值