android学习-动画(用户指南的应用)
2013-07-24 14:11
477 查看
在安装完apk之后,通常第一次打开都会有一个用户指南给用户查看,一般都是左右滑动式的,主要放一些本apk的特性以及新添加的功能。这种左右滑动的效果是可以通过android动画来实现,其实看起来觉得挺复杂的,其实点都不复杂。这里就简单地看看translate动画的应用,不说原理。
看代码,这里anim目录下有4个动画的配置文件,他们分别是:
push_left_in.xml——从左边滑入
push_right_out.xml——从右边滑出
push_right_in.xml——从右边滑入
push_left_out.xml——从左边滑出
到此为止,也该介绍一下,Activity中实现播放动画的方法,那就是:public void overridePendingTransition (int enterAnim, int exitAnim),参数解释如下;
由于我这里的android设备是机顶盒,用遥控器来控制,所有我就捕捉的向左向右事件,来响应向左向右滑动。
建立3个Activity:
Left_Right_ActivityActivity.java
Next_1_Activity.java
Next_2_Activity.java
至于activity的布局文件,想怎么写就怎么写。
如果希望activity的显示不留Title栏的话,这里可以在工程的配置文件中声明,如果是全部都不需要,那么application节点声明,如果只是单个activity的话,就在该activity中声明即可,内容为:android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
总结:关键是动画的配置文件要写正确,android:fromXDelta和android:toXDelta 到底要填多少,需要仔细考虑。可以结合overridePendingTransition这个方法来考虑,先考虑第一个参数,即将进入的activity的坐标变化,再考虑即将出去的activity的坐标变化,个人觉得有了这个思路,就不容易搞混淆了。
看代码,这里anim目录下有4个动画的配置文件,他们分别是:
push_left_in.xml——从左边滑入
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="1000" /> </set>
push_right_out.xml——从右边滑出
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="1000" /> </set>
push_right_in.xml——从右边滑入
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%" android:toXDelta="0" android:duration="1000" /> </set>
push_left_out.xml——从左边滑出
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="1000" /> </set>看到这几个配置文件的名字就知道他们的作用,这里push_left_in和push_right_out配对着使用,会有页面向右滑动的效果,push_right_in和push_left_out配合使用会有页面向左滑动的效果。
到此为止,也该介绍一下,Activity中实现播放动画的方法,那就是:public void overridePendingTransition (int enterAnim, int exitAnim),参数解释如下;
enterAnim | A resource ID of the animation resource to use for the incoming activity. Use 0 for no animation. |
---|---|
exitAnim | A resource ID of the animation resource to use for the outgoing activity. Use 0 for no animation. |
建立3个Activity:
Left_Right_ActivityActivity.java
package dxd.android.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; public class Left_Right_ActivityActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){ startActivity(new Intent(Left_Right_ActivityActivity.this ,Next_1_Activity.class)); finish(); overridePendingTransition(R.anim.push_right_in,R.anim.push_left_out); } return super.onKeyDown(keyCode, event);
Next_1_Activity.java
package dxd.android.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; public class Next_1_Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.next1); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT){ startActivity(new Intent(Next_1_Activity.this ,Left_Right_ActivityActivity.class)); finish(); overridePendingTransition(R.anim.push_left_in,R.anim.push_right_out); } if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){ startActivity(new Intent(Next_1_Activity.this ,Next_2_Activity.class)); finish(); overridePendingTransition(R.anim.push_right_in,R.anim.push_left_out); } return super.onKeyDown(keyCode, event); } }
Next_2_Activity.java
package dxd.android.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; public class Next_2_Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.next2); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT){ startActivity(new Intent(Next_2_Activity.this ,Next_1_Activity.class)); finish(); overridePendingTransition(R.anim.push_left_in,R.anim.push_right_out); } if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){ //可扩展下一个activity } return super.onKeyDown(keyCode, event); } }
至于activity的布局文件,想怎么写就怎么写。
如果希望activity的显示不留Title栏的话,这里可以在工程的配置文件中声明,如果是全部都不需要,那么application节点声明,如果只是单个activity的话,就在该activity中声明即可,内容为:android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
总结:关键是动画的配置文件要写正确,android:fromXDelta和android:toXDelta 到底要填多少,需要仔细考虑。可以结合overridePendingTransition这个方法来考虑,先考虑第一个参数,即将进入的activity的坐标变化,再考虑即将出去的activity的坐标变化,个人觉得有了这个思路,就不容易搞混淆了。
相关文章推荐
- Android学习指南之二十五:Android动画的实现 下
- Android移动应用开发学习笔记(二)——用户注册
- 【Android应用场景】学习Android动画效果
- Android学习指南之十四:Service详解及应用实例
- Android学习指南之二十六:Android GPS服务的应用
- Android学习指南之二十四:Android动画的实现 上
- Android学习指南之十四:Service详解及应用实例
- Android学习指南之八:详解Intent及其应用实例
- android移动应用开发学习笔记(三)——用户信息提交
- android菜鸟学习笔记29----Android应用向用户发送提示信息的方式总结
- android 应用的loading加载动画制作(闪屏)
- android 日期选择器(DatePicker)学习与应用
- Android官方技术文档翻译——Gradle 插件用户指南(6)
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android学习之 移动应用<App>微信支付集成小结
- 【Scikit-Learn 中文文档】二十七:经网络模型(无监督)- 无监督学习 - 用户指南 | ApacheCN
- android学习路线 1.1 Android应用开发揭秘 所学之对已用处
- 【Scikit-Learn 中文文档】八:最近邻 - 监督学习 - 用户指南 | ApacheCN
- Android学习路线指南
- Android开发者应该深入学习的10个开源应用项目