安卓ViewFlipper和ViewPager

先说说两者的区别:(转自:http://www.cnblogs.com/a121984376/p/3600694.html)

ViewFlipper继承ViewAnimator,切换view的时候是有动画效果的,适合做ppt,多界面的程序欢迎引导界面,算是个轻量级的组件,适合展示静态数据,少量数据。

ViewPager继承ViewGroup。看官网描述,这货和Fragment是好搭档,Fragment有自己的生命周期。也就是说ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实现数据的动态加载。

ViewFlipper的用法:(转自:http://www.open-open.com/lib/view/open1326371644030.html)

1、屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面;一个个性化设置页面。

2、介绍ViewFilpper类

ViewFlipper

extends ViewAnimator

java.lang.Object
   ? android.view.View
     ? android.view.ViewGroup
       ? android.widget.FrameLayout
         ? android.widget.ViewAnimator
           ? android.widget.ViewFlipper

Class Overview

Simple ViewAnimator that will animate between two or more views that have been added to it. Only one child is shown at a time. If requested, can automatically flip between each child at a regular interval.

意思是:简单的ViewAnimator之间,两个或两个以上的view加上动画效果。只有一个小孩会显示在一个时间。如果需要,每个孩子能自动翻转之间在固定的时间间隔。

该类继承了Framelayout类,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果。

该类有如下几个和动画相关的函数:

setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本,一个接受单个参数,类型为android.view.animation.Animation;一个接受两个参数,类型为Context和int,分别为Context对象和定义Animation的resourceID。

setOutAnimation: 设置View退出屏幕时候使用的动画,参数setInAnimation函数一样。

showNext: 调用该函数来显示FrameLayout里面的下一个View。

showPrevious: 调用该函数来显示FrameLayout里面的上一个View。

3、首选看一下定义四个动画的xml文件:

in_leftright.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>

out_leftright.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>

in_rightleft.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>

out_rightleft.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>

4、定义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="wrap_content"
                android:layout_height="wrap_content" android:src="@drawable/a1" />
        </LinearLayout>
        <!-- 第二个页面 -->
        <LinearLayout android:layout_width="fill_parent"
            android:layout_height="fill_parent" android:gravity="center">
            <ImageView android:layout_width="wrap_content"
                android:layout_height="wrap_content" 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="wrap_content"
                android:layout_height="wrap_content" 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="wrap_content"
                android:layout_height="wrap_content" android:src="@drawable/a4"
                android:gravity="center" />
        </LinearLayout>
    </ViewFlipper>
</LinearLayout>

5、java代码实现:

public class SwitchTest2Activity extends Activity {

    ViewFlipper viewFlipper = null;
    float startX;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.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.in_leftright);
                viewFlipper.setOutAnimation(this, R.anim.out_leftright);
                viewFlipper.showNext();
            } else if (event.getX() < startX) { // 向左滑动
                viewFlipper.setInAnimation(this, R.anim.in_rightleft);
                viewFlipper.setOutAnimation(this, R.anim.out_rightleft);
                viewFlipper.showPrevious();
            }
            break;
        }

        return super.onTouchEvent(event);
    }

}

6、效果图:

在这里看不出效果图,我贴几张图片吧!!

 从左向右滑滑到的结果

时间: 2024-11-13 08:09:15

安卓ViewFlipper和ViewPager的相关文章

ViewFlipper实现ViewPager的页面切换效果

activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" a

安卓界面之Viewpager和Tablayout实现滑动界面

摘要:六部实现选项卡界面 一. 在gradle文件添加以下代码: implementation 'com.android.support:design:28.0.0' 在gradle文件添加以上代码后,才能使用Tablayout(版本号28.0.0是我做实验时最新的版本) 二.布局代码 <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height

安卓开发6 -Viewpager+fragment更新数据

首先,上连接:对这个问题的解析http://www.devba.com/index.php/archives/5826.html http://www.trinea.cn/android/dropdown-to-refresh-and-bottom-load-more-listview/ 其次,对这个问题的理解其实哟点错误 感谢qq群的大牛们先 我想做的是 fragment初始化oncreat()--->根据web服务发过来的数据更新fragment 经过大牛指点,这部分要用工作线程完成 就学习

Android中使用ViewPager实现屏幕页面切换和页面轮播效果

之前关于如何实现屏幕页面切换,写过一篇博文<Android中使用ViewFlipper实现屏幕切换>,相比ViewFlipper,ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实现数据的动态加载. ViewPager是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一,利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等. 下面我们就展示下Vie

安卓开发笔记——自定义广告轮播Banner(无限循环实现)

关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户"友好性",下面来看几个示例图:     再来看下我仿写的效果: 关于广告轮播Banner这个东西,GitHub上面应该有现成的开源组件,不过我没去找过,觉得实现起来不会太难,就自己去仿写了,下面我说下实现的思路: 1.首先看到这个可以滑动切换图片的界面,我们很自然就会想到ViewPager

安卓开发笔记——多种方式实现底部菜单栏(仿微信界面)

关于底部菜单是什么,我想没必要介绍了,在市场上的APP里太常见了,这里提供两种方式来实现. 记得之前写过几篇关于底部菜单实现的方法,有兴趣的朋友可以看看: 1.<安卓开发复习笔记——TabHost组件(一)(实现底部菜单导航)> 2.<安卓开发复习笔记——TabHost组件(二)(实现底部菜单导航)> 3.<安卓开发笔记——Fragment+FragmentTabHost组件(实现新浪微博底部菜单)> 今天带来种相对更通俗易懂的写法,不再和过去一样去沿用TabHost了

ViewFlipper的简单用法

ViewFlipper和ViewPager挺像的,都是一个view容器.内部可以添加多个view,只是viewpager可以通过左右滑动来切换view,而viewFlipper则没有这个功能,所以需要在它上面监听手势.比较方便的是它不用使用适配器就能添加view,所以比较方便. 首先在布局文件中定义这个控件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&qu

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

转--2014年最新810多套android源码2.46GB免费一次性打包下载

转载自:http://www.eoeandroid.com/thread-497046-1-1.html 感谢该博客主人无私奉献~~ 下面的源码是从今年3月份开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被博主分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是博主一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不