1、屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面;一个个性化设置页面。
ViewFlipper
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加上动画效果。只有一个小孩会显示在一个时间。如果需要,每个孩子能自动翻转之间在固定的时间间隔。
该类有如下几个和动画相关的函数:
setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本,一个接受单个参数,类型为android.view.animation.Animation;一个接受两个参数,类型为Context和int,分别为Context对象和定义Animation的resourceID。
setOutAnimation: 设置View退出屏幕时候使用的动画,参数setInAnimation函数一样。
showNext: 调用该函数来显示FrameLayout里面的下一个View。
showPrevious: 调用该函数来显示FrameLayout里面的上一个View。
3、首选看一下定义四个动画的xml文件:
1
2
3
4
5
6
7
|
<? 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——从左到右出去屏幕
1
2
3
4
5
6
7
|
<? 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——从右到左进入屏幕
1
2
3
4
5
6
7
|
<? 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——从右到左出去屏幕
1
2
3
4
5
6
7
|
<? 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文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<? 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代码实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
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、效果图:
Android利用ViewFlipper实现屏幕切换动画效果的更多相关文章
-
UI特效--Android利用ViewFlipper实现屏幕切换动画效果
.屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面:一个个性化设置页面.2.介绍ViewFilpper类ViewFl ...
-
Android成长日记-使用ViewFlipper实现屏幕切换动画效果
(一) ViewFlipper介绍 Android系统自带的一个多页面管理控件,它可以实现子界面的自动切换 (二) 为ViewFlipper加入View 1. 静态导入:在Layout布局文件中直接导 ...
-
Android 中利用ViewFlipper 滑动屏幕切换页面,ListView展示数据
首先新建一个Android项目,命名为ViewFlipperTest 如图:项目机构,本项目主要操作图中红色箭头标注的文件 1.HgroupAdapter.java文件代码↓主要实现listview数 ...
-
Android的Activity屏幕切换动画-左右滑动切换
. --> 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始 ...
-
Android的Activity屏幕切换动画(一)-左右滑动切换
(国内知名Android开发论坛eoe开发者社区推荐:http://www.eoeandroid.com/) Android的Activity屏幕切换动画(一)-左右滑动切换 在Android开发过程 ...
-
Android 动画之View动画效果和Activity切换动画效果
View动画效果: 1.>>Tween动画通过对View的内容进行一系列的图形变换(平移.缩放.旋转.透明度变换)实现动画效果,补间动画需要使用<set>节点作为根节点,子节点 ...
-
解决Activity启动黑屏和设置android:windowIsTranslucent不兼容activity切换动画的问题
在该项目中遇到开Activity之后,黑屏问题,解决的办法是在网上通过设置发现theme和style特性,可以实现. http://www.cnblogs.com/sunzn/p/3407078.ht ...
-
Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40411921,本文出自:[张鸿洋的博客] 1.概述 之前写过一篇博文:Andro ...
-
Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0下面)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40411921.本文出自:[张鸿洋的博客] 1.概述 之前写过一篇博文:Andro ...
随机推荐
-
MySQL查询优化:查询慢原因和解决技巧
在开发的朋友特别是和mysql有接触的朋友会碰到有时mysql查询很慢,当然我指的是大数据量百万千万级了,不是几十条了,下面我们来看看解决查询慢的办法. MySQL查询优化:查询慢原因和解决方法 会经 ...
-
dp --- Codeforces 245H :Queries for Number of Palindromes
Queries for Number of Palindromes Problem's Link: http://codeforces.com/problemset/problem/245/H M ...
-
Valid Anagram
class Solution { public: bool isAnagram(string s, string t) { if(t=="") return s=="&q ...
-
C语言知识总结(3)
数组 数组的特点: 只能存放一种类型的数据,比如int类型的数组.float类型的数组 里面存放的数据称为“元素” 初始化方式 ] = {, , }; ] = {,}; , , }; ] = {[]= ...
-
python3编码问题
继续收集python3编码问题相关资料 资料来源 鹏程的新浪博客(转载)http://blog.sina.com.cn/s/blog_6d7cf9e50102vo90.html 这篇鹏程老师写的关 ...
-
MPlayer播放器安装
http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.1.1.tar.xz [tim@L MPlayer-1.1.1]$ mplayer ...
-
JavaWeb(一)-Servlet知识
一.Servlet简介 Servlet是sun公司提供一门用于开发动态web资源的技术. sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个java程序向浏 ...
-
洛咕 P4556 [Vani有约会]雨天的尾巴
终于把考试题清完了...又复活了... 树上差分,合并用线段树合并,但是空间会炸. 某大佬:lca和fa[lca]减得时候一定已经存在这个节点了,所以放进vector里,合并完之后减掉就好了... 玄 ...
-
OpenCV膨胀与腐蚀
膨胀与腐蚀 本篇博客主要介绍使用OpenCV中的函数接口实现对一个图片的腐蚀或者膨胀,听起来有点像是对图像进行放大和缩小的意思,如果你也是这样认为,那我只能说你跟我一样肤浅!!在OpenCV中几乎所有 ...
-
bzoj 1862: [Zjoi2006]GameZ游戏排名系统 &; bzoj 1056: [HAOI2008]排名系统
傻叉了一晚上,把t打成x,然后这题神奇在于输出一段数,不足的不用输出,一开始我的是直接找没有后面就退,然后这样会格式错误囧……然后最后zj的还卡了下空间,于是不用string就过了……string毁一 ...