稳扎稳打_Android开发课[30]_用户界面之ViewFlipper(视图切换)

步步为营_Android开发课[30]_用户界面之ViewFlipper(视图切换)

Focus on technology, enjoy life!—— QQ:804212028
浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305


  • 主题:用户界面之ViewFlipper(视图切换)
    -
    ViewFlipper多视图切换(实例)
    实现效果:
    左右滑动,模拟欢迎界面的图片切换。

稳扎稳打_Android开发课[30]_用户界面之ViewFlipper(视图切换)

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <ViewFlipper 
        android:id="@+id/viewFlipper"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent">
        <!-- 第一个页面 -->
        <LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:gravity="center">

            <ImageView 
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" 
                android:src="@drawable/a1" />
        </LinearLayout>
        <!-- 第二个页面 -->
        <LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:gravity="center">

            <ImageView 
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" 
                android:src="@drawable/a2"
                android:gravity="center" />
        </LinearLayout>
        <!-- 第三个页面 -->
        <LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:gravity="center">

            <ImageView 
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" 
                android:src="@drawable/a3"
                android:gravity="center" />
        </LinearLayout>
        <!-- 第四个页面 -->
        <LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:gravity="center">

            <ImageView 
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" 
                android:src="@drawable/a4"
                android:gravity="center" />
        </LinearLayout>
    </ViewFlipper>
</LinearLayout>

在res文件下创建anim文件,再在anim文件下创建四个动画布局。

left_to_right_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="3000"
        android:fromXDelta="-100%p"
        android:toXDelta="0" />
</set>

left_to_right_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="3000"
        android:fromXDelta="0"
        android:toXDelta="100%p" />
</set>

right_to_left_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="3000"
        android:fromXDelta="100%p"
        android:toXDelta="0" />
</set>

right_to_left_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="3000"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />
</set>

MainActivity.java:

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.ViewFlipper;

public class MainActivity extends Activity {

    ViewFlipper viewFlipper = null;
    float startX;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        init();
    }

    private void init() {
        viewFlipper = (ViewFlipper) this.findViewById(R.id.viewFlipper);
    }

    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            startX = event.getX();
            break;
        case MotionEvent.ACTION_UP:

            if (event.getX() > startX) { // 向右滑动
                viewFlipper.setInAnimation(this, R.anim.left_to_right_in);
                viewFlipper.setOutAnimation(this, R.anim.left_to_right_out);
                viewFlipper.showNext();
            } else if (event.getX() < startX) { // 向左滑动
                viewFlipper.setInAnimation(this, R.anim.right_to_left_in);
                viewFlipper.setOutAnimation(this, R.anim.right_to_left_out);
                viewFlipper.showPrevious();
            }
            break;
        }

        return super.onTouchEvent(event);
    }
}

Focus on technology, enjoy life!—— QQ:804212028
浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305