ViewFilpper的使用

ViewFilpper的使用

1、layout中定义ViewFlipper

activity_main文件中定义一个ViewFlipper,使用include标签包含进来几个layout文件

    <ViewFlipper
        android:layout_weight="1"
        android:id="@+id/viewFlipper"
        android:layout_width="wrap_content"
        android:layout_height="0dp">

        <include
        android:id="@+id/mainbody02"
        layout="@layout/mainbody2" />

        <include
        android:id="@+id/mainbody03"
        layout="@layout/mainbody3" />

        <include
         android:id="@+id/mainbody01"
         layout="@layout/mainbody1" />
   ViewFilpper>

2、使用动画

在res目录下创建一个anim文件夹,里面写几个动画的xml文件
push_left_in.xml


<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:duration="500"
        android:toXDelta="0.0"
        android:fromXDelta="-100.0%p"
        />
    <alpha
        android:duration="500"
        android:fromAlpha="0.1"
        android:toAlpha="0.8"/>
set>

push_left_out.xml


<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:duration="500"
        android:fromXDelta="0.0"
        android:toXDelta="100.0%p"
        />
    <alpha
        android:duration="500"
        android:fromAlpha="1.0"
        android:toAlpha="0.5"/>
set>

push_right_in.xml


<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:duration="500"
        android:fromXDelta="100.0%p"
        android:toXDelta="0.0"
        />
    <alpha
        android:duration="500"
        android:fromAlpha="0.1"
        android:toAlpha="0.8"/>
set>

push_right_out.xml


<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:duration="500"
        android:fromXDelta="0.0"
        android:toXDelta="-100.0%p"
        />
    <alpha
        android:duration="500"
        android:fromAlpha="1.0"
        android:toAlpha="0.5"/>
set>

3、在activity中使用ViewFlipper和动画

//实现滑屏效果,此处不要使用onTouchEvent事件,原因是listview的onTouchEvent事件优先级高于activity的,所以会屏蔽掉activity的onTouchEvent
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        if(event.getAction()==MotionEvent.ACTION_DOWN)
        {
            //取得手指按下时的坐标mTouchDownX;
            mTouchDownX=event.getX();
            //取得手指按下时的坐标mTouchDownY;
            mTouchDownY=event.getY();
        }
        else if (event.getAction()==MotionEvent.ACTION_UP) {
            //手指松开时的X,Y;
            mTouchUpX=event.getX();
            mTouchUpY=event.getY();
            //为了取得更好的效果可以限制一下手指滑动时Y的变化范围
            mTransY = Math.abs(mTouchUpY-mTouchDownY);
            //手指从左往右滑,切换到上一个view
            if(mTouchUpX-mTouchDownX>100 && mTransY<200 && mTouchDownY <1000)
            {
                //设置view退出屏幕时的动画
                mViewFilpper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
                //设置view进入屏幕时的动画
                mViewFilpper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
                //显示上一个view
                mViewFilpper.showPrevious();
            }
            //手指从右往左,切换到下一个view
            else if (mTouchDownX-mTouchUpX>100&& mTransY<200 && mTouchDownY<1000)
            {
                mViewFilpper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));
                mViewFilpper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));
                mViewFilpper.showNext();
            }
        }
        return super.dispatchTouchEvent(event);
    }

你可能感兴趣的:(android学习)