Activity之间动画的切换
2016-02-08 18:35
239 查看
Activity之间的动画需要使用Tween动画来实现.主要的实现方法是在对2个Activity进行切换的时候,紧跟一个overridePendingTransition方法,这个方法必须紧跟在startActivity()方法或者finish()方法之后,这个是API文档中所述.
举例如下 :
我在网上搜索到了一些有用的资源,在这里分享一下,是关于XML的一套动画实现的,里面有对xml动画中的一些属性进行讲解,方便更好的理解书写过程. 这是网址: http://download.csdn.net/detail/iloveyoueveryday/6909031
这里是贡献值(原博主)的博客: /article/2352006.html
这里是对Tween动画的一些介绍,如果看了XML文件的话,有些属性不明白,这里面都有介绍.
http://blog.csdn.net/feng88724/article/details/6318430.
接下来介绍我写的Demo.
我在Demo中使用Spinner来对多个动画的名称进行匹配.
这是Spinner的所需要的字符串数组.把这段话复制到res/values/strings.xml文件下即可
我在主界面放置了一个Button和Spinner.当点击button的时候,通过Spinner对象的getSelectId()方法来获取点击的item号,注意这是从0开始且返回值为long.
这是项目的github地址 : https://github.com/JavaSuperior/AnimationBetweenActivities .
举例如下 :
Intent intent = new Intent(MainActivity.this, SecondActivity.class); //MainActivity 为第一个Activity名,SecondActivity为第二个的名字; startActivity(intent); overridePendingTransition(这里写anim的资源ID, 这里写anim的资源ID);//anim的资源一般防止在res/anim 文件目录下.引用使用R.anim.XXX语句;
我在网上搜索到了一些有用的资源,在这里分享一下,是关于XML的一套动画实现的,里面有对xml动画中的一些属性进行讲解,方便更好的理解书写过程. 这是网址: http://download.csdn.net/detail/iloveyoueveryday/6909031
这里是贡献值(原博主)的博客: /article/2352006.html
这里是对Tween动画的一些介绍,如果看了XML文件的话,有些属性不明白,这里面都有介绍.
http://blog.csdn.net/feng88724/article/details/6318430.
接下来介绍我写的Demo.
我在Demo中使用Spinner来对多个动画的名称进行匹配.
这是Spinner的所需要的字符串数组.把这段话复制到res/values/strings.xml文件下即可
<string-array name="AnimationName"> <item >淡入淡出</item> <item>缩小淡入淡出</item> <item>放大淡入淡出</item> <item>放大切入切出</item> <item>缩小切入切出</item> <item>上滑切入切出</item> <item>下滑切入切出</item> <item>左滑切入切出</item> <item>右滑切入切出</item> <item>旋转飞入飞出</item> </string-array>然后需要在layout文件中来指定spinner控件的entries属性,该属性名即为 上方代码中的 AnimationName .
我在主界面放置了一个Button和Spinner.当点击button的时候,通过Spinner对象的getSelectId()方法来获取点击的item号,注意这是从0开始且返回值为long.
<?xml version="1.0" encoding="utf-8"?> <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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".SecondActivity"> <Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:entries="@array/AnimationName" android:spinnerMode="dialog" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click"/> </LinearLayout><span style="color:#ff0000;font-weight: bold;"> </span>然后在主Activity中获取Button并设置点击事件.
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); selectId = (int) spinner.getSelectedItemId(); // overridePendingTransition(android.R.anim.slide_out_right, android.R.anim.slide_in_left); //android本身也提供相关动画. if (selectId < AnimationInIds.length && selectId > -1) { setAnimation(selectId); } else { showTip(); } startActivity(intent); overridePendingTransition(AnimationInId, AnimationOutId); }
//下面这一种方法也可以,这是将当前想要做的动作加入消息队列中,但有1000ms的延迟.
new Handler().postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); finish(); overridePendingTransition(资源ID, 资源ID); } },1000);
这是项目的github地址 : https://github.com/JavaSuperior/AnimationBetweenActivities .
相关文章推荐
- 在Qt中如何使用QtDesigner创建的UI文件
- 面向对象开发设计 (1)
- 中介者模式
- QMessageBox 中的 OK 按钮改为中文“确定”
- linux 进程间通信 FIFO
- 使用MVVM构建一个简单的WPF应用
- 人的提升不是直线上升的,也不是一直弧线上升的(人之所以有文明就是因为不断的学习和积累好的东西)
- Python Requests爬虫——获取一个收藏夹下所有答案的图片
- QT显示机制(7篇相关文章)
- alertDialog示例
- js区分大小写
- QT update和repaint的区别
- 手把手教你安装QT集成开发环境(操作系统为ubuntu10.04)
- QWidget类中默认是忽略inputMethodEvent事件(要获取输入的内容就必须使用这个事件)
- 【小白的CFD之旅】02 江小白
- 命令集合
- Qt中Ui名字空间以及setupUi函数的原理和实现
- 关于身体健康的内心独白
- 《代码整洁之道》之三 函数
- TImage也有OnClick事件,可以当按钮使用,配上合适的图片(背景透明,效果前凸)更是几乎以假乱真