链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/01/2376067.html

一、概述

ViewFlipper这个部件是用来实现多页显示的,多页之间的显示一般通过手势的滑动来实现,比如处于Home界面时,可以通过滑动来显示另一页,有点像Activity之间的切换。下面的实现没有涉及到手势识别这个功能。

二、要求

掌握ViewFlipper的使用。

三、实现

新建工程MyFlipper,修改/res/layout/main.xml文件,在里面添加一个ViewFlipper,完整的main.xml文件如下:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 <ViewFlipper
8 android:id="@+id/viewflipper"
9 android:layout_width="fill_parent"
10 android:layout_height="fill_parent"
11 >
12
13 </ViewFlipper>
14
15 </LinearLayout>

在/res/layout下新建2个文件firstview.xml和secondview.xml。这两个文件的内容几乎一样,只是显示的内容不一样,firstview.xml如下:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="fill_parent"
3 android:layout_height="fill_parent"
4 android:orientation="vertical" >
5
6 <TextView
7 android:layout_width="fill_parent"
8 android:layout_height="wrap_content"
9 android:text="这是第一个View"
10 android:textColor="#FFFF0000"
11 android:gravity="center_horizontal"
12 android:textSize="20dip"
13 />
14
15
16 <Button
17 android:id="@+id/firstbutton"
18 android:layout_width="fill_parent"
19 android:layout_height="wrap_content"
20 android:text="显示第二个View"
21 />
22
23
24 </LinearLayout>

secondview.xml如下:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 <TextView
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="这是第二个View"
11 android:textColor="#FF0000FF"
12 android:gravity="center_horizontal"
13 android:textSize="20dip"
14 />
15
16 <Button
17 android:id="@+id/secondbutton"
18 android:layout_width="fill_parent"
19 android:layout_height="wrap_content"
20 android:text="显示第一个View"
21 />
22
23
24 </LinearLayout>

接着,修改MyFlipperActivity.java文件,主要是定义一个ViewFlipper对象,向它添加两个View,设置两个按钮的监听,在监听里显示前、后一个View。

 1 package com.nan.flipper;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.LayoutInflater;
6 import android.view.View;
7 import android.widget.Button;
8 import android.widget.ViewFlipper;
9
10 public class MyFlipperActivity extends Activity
11 {
12 private ViewFlipper mViewFlipper = null;
13 private LayoutInflater mLayoutInflater = null;
14
15 private Button firstButton = null;
16 private Button secondButton = null;
17
18 /** Called when the activity is first created. */
19 @Override
20 public void onCreate(Bundle savedInstanceState)
21 {
22 super.onCreate(savedInstanceState);
23 setContentView(R.layout.main);
24
25 mViewFlipper = (ViewFlipper)this.findViewById(R.id.viewflipper);
26
27 mLayoutInflater = LayoutInflater.from(MyFlipperActivity.this);
28 //将布局文件firstview.xml变为View对象
29 View firstView = mLayoutInflater.inflate(R.layout.firstview, null);
30 //将布局文件secondview.xml变为View对象
31 View secondView = mLayoutInflater.inflate(R.layout.secondview, null);
32 //添加View
33 mViewFlipper.addView(firstView);
34 //添加View
35 mViewFlipper.addView(secondView);
36
37 firstButton = (Button)firstView.findViewById(R.id.firstbutton);
38 //设置按钮监听
39 firstButton.setOnClickListener(new View.OnClickListener()
40 {
41
42 @Override
43 public void onClick(View v)
44 {
45 // TODO Auto-generated method stub
46 //显示后一个View
47 mViewFlipper.showNext();
48 }
49 });
50
51 secondButton = (Button)secondView.findViewById(R.id.secondbutton);
52 //设置按钮监听
53 secondButton.setOnClickListener(new View.OnClickListener()
54 {
55
56 @Override
57 public void onClick(View v)
58 {
59 // TODO Auto-generated method stub
60 //显示前一个View
61 mViewFlipper.showPrevious();
62 }
63 });
64
65 }
66
67 }

好了,运行该程序:

点击一下“显示第二个View”按钮,效果如下:

好了,完成。
      如果加上手势识别的话就可以通过滑动来切换页面了。

Android应用开发基础篇(11)-----ViewFlipper的更多相关文章

  1. Android应用开发基础篇(1)-----Button

    Android应用开发基础篇(1)-----Button   一.概述        Button,顾名思义就是按钮的意思,它主要的功能是响应用户按下按钮时的动作. 二.应用      新建一个工程, ...

  2. Android应用开发基础篇(3)-----ListView

    一.概述 ListView是一个列表显示控件,它的应用非常广泛,在很多应用程序中都可以看到它的身影,比如来电通,网易新闻等等,特别是QQ.因此非常有必要熟练掌握它. 二.要求 能够利用ListView ...

  3. Android应用开发基础篇(4)-----TabHost(选项卡)

    一.概述 TabHost是一种用来显示标签的组件,不清楚?看一下来电通这个应用就知道了.这个组件用起来与其他组件不太一样,它需要继承TabActivity这个类,还有它的布局文件与我们平时用的也有些不 ...

  4. Android应用开发基础篇(12)-----Socket通信

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/03/2378669.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌 ...

  5. Android应用开发基础篇(14)-----自定义标题栏

    一.概述 每一个应用程序默认的标题栏(注意与状态栏的区别)只有一行文字(新建工程时的名字),而且颜色.大小等都是固定的,给人的感觉比较单调.但当程序需要美化的时候,那么修改标题栏是就是其中一项内容,虽 ...

  6. Android应用开发基础篇(13)-----GestureDetector(手势识别)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/05/2381025.html 一.概述 GestureDetector是一个用于识别手势的类,这 ...

  7. Android应用开发基础篇(12)-----Socket通信(转载)

    转自:http://www.devdiv.com/android_socket_-blog-258060-10594.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌握网络 ...

  8. Android应用开发基础篇(2)-----Notification(状态栏通知)

    一.概述      Notification这个部件的功能是在状态栏里显示消息提醒,比如有未读的短信或者是未接的电话,那么状态栏里都会有显示,更或者是从某个应用(比如QQ,酷我音乐等等)里按Home键 ...

  9. Android应用开发基础篇(16)-----ScaleGestureDetector(缩放手势检测)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/11/2390274.html 一.概述 ScaleGestureDetector这个类是专门用来 ...

随机推荐

  1. support.SerializationFailedException: Failed to deserialize payload.

    support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of c ...

  2. CentOS7 vs centos6

    The CentOS Project has announced general availability of CentOS-7, the first release of the free Lin ...

  3. Autoconf/Automake工具简介

    在linux下编程的时候,有时候工程项目很大,文件比较多,此时需要使用自动创建Makefile文件功能.也就是使用Autoconf/Automake工具自动生成Makefile,为编译程序带来了方便, ...

  4. Unix/Linux环境C编程入门教程(15) BT5开发环境搭建

    1. Backtrack 是处于世界领先地位的渗透测试和信息安全审计发行版本.有着上百种预先安装好的工具软件,并确定能完美运行,Backtrack5 提供了一个强大的渗透测试平台--从Web hack ...

  5. Linux的正常关机

    Azure上的 IaaS 虚拟机可使用多种方式关闭,例如通过 Azure 管理门户.Azure Powershell cmdlet 或 CLI 工具,甚至还可以由交互式登录的用户关闭.Azure 平台 ...

  6. poj2141---字符串转换

    #include <stdio.h> #include <stdlib.h> int main() { ]; char tmp; scanf("%s",ke ...

  7. 历峰集团3.43亿美元收购Net-a-Porter剩余股权_财经_腾讯网

    历峰集团3.43亿美元收购Net-a-Porter剩余股权_财经_腾讯网 历峰集团3.43亿美元收购Net-a-Porter剩余股权

  8. 顺序栈之C++实现

    顺序栈就是用顺序表(数组)实现的栈.其组织形式如下图所示: 下面介绍下我用C++实现的顺序栈,在VC6下调试通过.不足之处还请指正. 1.文件组织 2.ss.h栈类的声明及宏的定义 #ifndef _ ...

  9. linux下Oracle11g RAC搭建(六)

    linux下Oracle11g RAC搭建(六) 五.校验安装前的环境 root身份下完毕解压grid.database安装包 [grid@node1 soft]$ su - Password: [r ...

  10. 从零开始Unity3D游戏开发【3烘焙】

    烘焙:通过烘焙能把动态场景转化为静态场景.从而提高游戏的性能. [烘焙步骤] 1.Edit---Player---Rendering[forword] 2.Directional light(必须是这 ...