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了。

這就是今天想要分享的內容,大家有什麼想知道的,我會盡我努力去搞出來,歡迎大家提出你們的建議~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章