`
wangleyiang
  • 浏览: 216091 次
社区版块
存档分类
最新评论

Android ViewFlipper简单示例

阅读更多

ViewFlipper简单示例,详情请参考:http://developer.android.com/reference/android/widget/ViewFlipper.html

 

main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" android:background="#ffffff">

    <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">

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="1"
                android:textSize="60dip" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="2"
                android:textSize="60dip" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="3"
                android:textSize="60dip" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="4"
                android:textSize="60dip" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="5"
                android:textSize="60dip" />
        </LinearLayout>
    </ViewFlipper>

    <Button
        android:id="@+id/left_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_margin="5dip"
        android:text="左" />

    <Button
        android:id="@+id/right_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_margin="5dip"
        android:text="右" />

</RelativeLayout>

 说明:

  • 使用RelativeLayout做父容器,添加按钮在ViewFlipper顶部;
  • ViewFlipper的每个子页面并列于该View内;
  • ViewFlipper的每个子页面显示一个TextView;

main.xml效果:



 main.xml布局结构:



 运行效果图:



 

 

 说明:

  1. 点击顶部按钮,可以完成页面切换;
  2. 点击底部按钮,可以实现页面切换;
  3. 滑动页面,可以实现页面的切换;

切换动画/res/anim/目录下的动画文件分别如下:

push_left_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="500"
        android:fromXDelta="100%p"
        android:toXDelta="0" />

    <alpha
        android:duration="500"
        android:fromAlpha="0.1"
        android:toAlpha="1.0" />

</set>

 push_left_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="500"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />

    <alpha
        android:duration="500"
        android:fromAlpha="1.0"
        android:toAlpha="0.1" />

</set>

 push_right_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="500"
        android:fromXDelta="-100%p"
        android:toXDelta="0" />

    <alpha
        android:duration="500"
        android:fromAlpha="0.1"
        android:toAlpha="1.0" />

</set>

 push_right_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="500"
        android:fromXDelta="0"
        android:toXDelta="100%p" />

    <alpha
        android:duration="500"
        android:fromAlpha="1.0"
        android:toAlpha="0.1" />

</set>

主要代码:

import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import android.widget.ViewFlipper;

public class MainActivity extends Activity implements OnClickListener {
	
	private WindowManager windowManager;
	
	private Button leftButton;
	private Button rightButton;
	
	private ViewFlipper viewFlipper;
	
	private float xDown;
	private float yDown;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);
		getWindow().requestFeature(Window.FEATURE_NO_TITLE);
		
		setContentView(R.layout.main);

		viewFlipper = (ViewFlipper) this.findViewById(R.id.viewFlipper);
		
		windowManager = (WindowManager) getApplicationContext().getSystemService("window");
		LayoutParams windowManagerParams = new WindowManager.LayoutParams();
		windowManagerParams.type = LayoutParams.TYPE_PHONE;
		windowManagerParams.format = PixelFormat.RGBA_8888;
		windowManagerParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
				| LayoutParams.FLAG_NOT_FOCUSABLE;
		windowManagerParams.x = 0;
		windowManagerParams.y = 0;
		windowManagerParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
		windowManagerParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
		
		leftButton = new Button(this);
		leftButton.setBackgroundResource(android.R.drawable.alert_light_frame);
		leftButton.setText("<");
		leftButton.setOnClickListener(this);
		windowManagerParams.gravity = Gravity.LEFT | Gravity.BOTTOM;
		windowManager.addView(leftButton, windowManagerParams);
		
		rightButton = new Button(this);
		rightButton.setBackgroundResource(android.R.drawable.alert_light_frame);
		rightButton.setText(">");
		rightButton.setOnClickListener(this);
		windowManagerParams.gravity = Gravity.RIGHT | Gravity.BOTTOM;
		windowManager.addView(rightButton, windowManagerParams);
		
		findViewById(R.id.left_button).setOnClickListener(this);
		findViewById(R.id.right_button).setOnClickListener(this);
		
	}

	private void showPrevious() {
		viewFlipper.setInAnimation(this, R.anim.push_left_in);
		viewFlipper.setOutAnimation(this, R.anim.push_left_out);
		viewFlipper.showPrevious();
	}

	private void showNext() {
		viewFlipper.setInAnimation(this, R.anim.push_right_in);
		viewFlipper.setOutAnimation(this, R.anim.push_right_out);
		viewFlipper.showNext();
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			xDown = event.getX();
			yDown = event.getY();
			break;
		case MotionEvent.ACTION_MOVE:
			break;
		case MotionEvent.ACTION_UP:
			float dx = event.getX() - xDown;
			float dy = event.getY() - yDown;
			// 简单定义:当x方向变化量的绝对值大于y方向时,为水平方向滑动
			if (Math.abs(dx) > Math.abs(dy)) {
				// 水平方向变化量大于0时,为向右运动
				if (dx > 0) {
					showNext();
				}
				// 水平方向变化量小于0时,为向左运动
				else if (dx < 0) {
					showPrevious();
				}
			}
			break;
		}
		return true;
	}

	@Override
	protected void onStop() {
		super.onStop();
		windowManager.removeView(leftButton);
		windowManager.removeView(rightButton);
	}

	@Override
	public void onClick(View v) {
		if (v == leftButton) {
			showPrevious();
			return;
		}
		if (v == rightButton) {
			showNext();
			return;
		}
		switch (v.getId()) {
		case R.id.left_button:
			showPrevious();
			break;
		case R.id.right_button:
			showNext();
			break;
		default:
			break;
		}
	}
}

 说明:

  • 底部两个白色背景的按钮是通过WindowManager添加的,是系统级别的窗口,故需要添加对应的权限;
  • 添加<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />权限;
  • 通过viewFlipper.setInAnimation和viewFlipper.setOutAnimation方法设置动画效果;
  • 在onStop时,需要remove添加的系统级别的窗口,否则点击Home后,那两个系统级别的按钮还存在于桌面;
  • getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);请求全屏;
  • getWindow().requestFeature(Window.FEATURE_NO_TITLE);请求没有标题栏;

多说一句:就个人而言,不喜欢总是要各种权限的应用!除非操作需要,尽量不要随意添加权限!:)

 

 

 

 

  • 大小: 7 KB
  • 大小: 9.9 KB
  • 大小: 11.6 KB
  • 大小: 12.9 KB
  • 大小: 11.9 KB
分享到:
评论

相关推荐

    android ViewFlipper使用示例(注册引导页)

    android ViewFlipper使用示例(注册引导页)。做设定好的流程类的填写注册(就例如用户注册,帮助手册,引导页面也可以)。我的博客地址:http://blog.csdn.net/qq_16064871。

    android中使用ViewFlipper实现滑动翻页示例

    android中使用ViewFlipper实现滑动翻页示例,详细可以参见博客:http://www.cnblogs.com/lea-fu/p/3298827.html

    AndroidViewSwapper:Android ViewFlipper 替代布局

    Android ViewFlipper 替代布局。由于 ViewFlipper 在 Dialog 中可能存在问题,因此造了个轮子。 本应用的示例 本示例基于 AndroidHelpers 库,访问 添加依赖。 开始使用: 在布局文件中声明一个 ViewSwapper 视图...

    Android开发之ViewFlipper自动播放图片功能实现方法示例

    主要介绍了Android开发之ViewFlipper自动播放图片功能实现方法,结合实例形式分析了Android使用ViewFlipper实现图片播放的相关界面布局及功能实现技巧,需要的朋友可以参考下

    Android-ViewFlipper-wth-Position-Indicator:显示如何使用位置指示器实现视图翻转器

    这是一个示例应用程序,显示了如何使用位置指示器实现视图翻转器 如何使用: 1.在布局xml文件中,您只需要将“ ViewFlipper”替换为“ com.byunghwa.demo.viewflipperwithindicator.ViewFlipperIndicator”。 2....

    android 简单的手势切换视图示例.doc

    android 简单的手势切换视图示例 android的home screen,可以通过手指的向左拖动和向右拖动,切换屏幕视图。 这样做的好处是用户体验比较好,比向下滚屏或者使用tab切换视图。 在自己的代码中要用到这个动作效果...

    GitSource:从git下载

    您好,欢迎来到JavatechIG,这是一个热情专业的技术和信息小组。 javatechig-android-ui 在本系列教程中,我们向您显示了一些基础教程列表,以帮助您开始...Android ViewFlipper示例 在Android中使用自定义字体字体

    Android 滑动翻页源码

    在这段代码示例中,对手指滑动的距离进行了计算,如果滑动距离大于120像素,就做切换动作,否则不做任何切换动作。 可以看到,onFling()方法有四个参数,arg0和arg1上面代码用到了,比较好理解。参数arg3和arg4是做...

    android开发demo集合

    简明、完整、全面的安卓开发demo集合,包含如下示例 1、LinearLayout Button、RadioGroup、 CheckBox 2、TableLayout 3、FrameLayout 霓虹灯效果 4、RelativeLayout 梅花效果 5、自定义view跟着触点走的小球 6、 ...

    Android 滑动翻页源码.zip

    在这段代码示例中,对手指滑动的距离进行了计算,如果滑动距离大于120像素,就做切换动作,否则不做任何切换动作。 可以看到,onFling()方法有四个参数,arg0和arg1上面代码用到了,比较好理解。参数arg3和arg4是做...

    Android代码-AutoScrollLayout

    实际上传入一个List即可简单实现,可自行修改; 4、实现自动滚动的View,仿中奖缓慢滚动效果 5~7、是使用ViewFlipper实现的几种不同的切换效果 示例图如下,有需要的自己扣源码。当然如果没有想要的效果,也可以继续...

    ActivityGroup + GridView + ViewFlipper 实现选项卡.zip

    例如,我们使用了Android Studio作为开发工具,它提供了一系列的功能和工具,如代码编辑器、调试器和模拟器,使得开发人员可以快速开发和测试安卓应用。我们还使用了Java作为主要的编程语言,它是安卓应用开发的主流...

    Android典型技术模块开发详解

    12.4.1 简单对象类型转换 12.4.2 数组和集合类型转换 12.5 xStream 12.6 本章小结 第四篇 Android应用开发案例 第13章 Ksoap2 13.1 SOAP协议 13.1.1 请求 13.1.2 响应 13.2 WSDL介绍 13.3 Ksoap2应用——天气预报 ...

    Android实现左右滑动效果的方法详解

    关于滑动效果,在Android中用得比较多,本示例实现的滑动效果是使用ViewFlipper来实现的,当然也可以使用其它的View来实现。接下来就让我们开始实现这种效果。为了方便大家理解,我们先来看一下效果图:主要效果图如...

    Android学习系列教程实例.pdf

    3.6. 使用 ViewFlipper 实现左右滑动效果82 3.6.1. 原理分析 ................................ 82 3.6.2. 示例分析 ................................ 83 3.6.3. 效果展示 ................................ 87 3.7...

    Android实现图片左右滑动效果

    关于滑动效果,在Android中用得比较多,本示例实现的滑动效果是使用ViewFlipper来实现的,当然也可以使用其它的View来实现。接下来就让我们开始实现这种效果。 接下来我们看一下程序结构图: MainActivity文件中...

Global site tag (gtag.js) - Google Analytics