简单易懂Android之Animation(动画)及Activity动画跳转
2016-07-26 22:27
736 查看
动画的分类:
1、帧动画(Frame)
类似电影胶片,由很多帧图片,通过不间断的改变,来产生动画效果。
2、补间动画(Tween)
对View控件进行变换(平移,缩放,旋转,透明度)来产生动画效果。
动画的分类:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201607/26/4536aaa9314c0077341e8695ec4dd8e0)
常用的属性如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201607/26/9ad6432417e0bd1ccc97d8053651bb7e)
帧动画:
补间动画:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201607/26/6ba3bd858f2e36c13e6554d9bb91ccd9)
上面图片是我写Demo里面建的类
activity跳转和返回 换一种动画效果如图:
建跳转tran_in.xml tran_out.xml写上要跳转的属性
然后
实现跳转,返回动画效果如下图:
建返回tran_back_in.xml tran_back_out.xml写上要跳转的属性后
用onKeyDown方法实现返回跳转!
以上就是本人的理解,欢迎一起交流指教~
1、帧动画(Frame)
类似电影胶片,由很多帧图片,通过不间断的改变,来产生动画效果。
2、补间动画(Tween)
对View控件进行变换(平移,缩放,旋转,透明度)来产生动画效果。
动画的分类:
常用的属性如下:
帧动画:
public class FrameAnimActivity extends AppCompatActivity { ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_frame_anim); iv = (ImageView) findViewById(R.id.frame_iv); // startFramAnim(); startFramAnim1(); } 静态帧动画如下: private void startFramAnim(){ AnimationDrawable drawable= (AnimationDrawable) iv.getBackground(); drawable.start(); } 调用动态帧动画如下: private void startFramAnim1(){ AnimationDrawable drawable=new AnimationDrawable(); for (int i=1;i<10;i++){ int id=getResources().getIdentifier("e"+i,"mipmap",getPackageName()); Drawable frame=getResources().getDrawable(id); drawable.addFrame(frame,100); } drawable.setOneShot(false); iv.setBackgroundDrawable(drawable); drawable.start(); } }
补间动画:
public class TweenAnimActivity extends AppCompatActivity { ImageView iv1,iv2,iv3,iv4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tween_anim); iv1= (ImageView) findViewById(R.id.tween_iv1); iv2= (ImageView) findViewById(R.id.tween_iv2); iv3= (ImageView) findViewById(R.id.tween_iv3); iv4= (ImageView) findViewById(R.id.tween_iv4); // 让iv1执行平移动画 startTweenTran1(iv1); startTweenTran1(iv2); startRotateAnim(iv3); startAnim(iv4); } /** * 使用xml的方式 * 开始一个平移动画, * 和帧动画的区别:帧动画要先绑定控件,在start(),补间动画要先启动,再绑定 * **/ private void startTweenTran(ImageView iv ){ // 1、 通过引入xml文件的方式加载一个动画 TranslateAnimation animation= (TranslateAnimation) AnimationUtils.loadAnimation(this,R.anim.translate); // 让动画动起来 animation.start(); // 把平移动画和iv对象进行绑定 iv.setAnimation(animation); } /** * fromXType:x坐标起始位置的类型(1.相对自己 2、相对父布局,3、局对位置) * fromXValue:x坐标起始位置的值 * 以下同理 * **/ private void startTweenTran1(ImageView iv){ TranslateAnimation animation=new TranslateAnimation( Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,2f, Animation.RELATIVE_TO_SELF,5f, Animation.RELATIVE_TO_SELF,10f); // 设置动画重置的次数 animation.setRepeatCount(10); // 设置动画 单次实行的时间 animation.setDuration(2000); // 设置动画 执行的模式(Animation.RESTART往返,Animation.RESTART重复) animation.setRepeatMode(Animation.RESTART); // 开始动画 animation.start(); // 让iv控件实现动画效果 iv.setAnimation(animation); } /** * 使用资源文件的方式,实现旋转动画,并启动 * **/ private void startRotateAnim(ImageView iv){ // 把旋转动画的资源文件,转换成旋转动画对象 RotateAnimation animation= (RotateAnimation) AnimationUtils.loadAnimation(this,R.anim.rotate); animation.start(); iv.setAnimation(animation); } /*** * * 使用资源文件实现,旋转和平移组合动画,并启动**/ private void startAnim(ImageView iv){ Animation animation=AnimationUtils.loadAnimation(this,R.anim.rotate_tanslate); animation.start(); iv.setAnimation(animation); } /** * * 响应手机上的按键按下时的方法 * **/ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 1、判断到当前点击的按键为返回键 // 2、既然自己判断了返回键的监听事件,就要自己来实现返回的功能 if(keyCode==KeyEvent.KEYCODE_BACK){ finish(); overridePendingTransition(R.anim.tran_back_in,R.anim.tran_back_out); } return super.onKeyDown(keyCode, event); } }
上面图片是我写Demo里面建的类
activity跳转和返回 换一种动画效果如图:
建跳转tran_in.xml tran_out.xml写上要跳转的属性
然后
@Override public void onClick(View view) { Intent intent=new Intent(MainActivity.this,TweenAnimActivity.class); startActivity(intent); // 添加activity跳转时的动画效果 overridePendingTransition(R.anim.tran_in,R.anim.tran_out);
实现跳转,返回动画效果如下图:
建返回tran_back_in.xml tran_back_out.xml写上要跳转的属性后
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 1、判断到当前点击的按键为返回键 // 2、既然自己判断了返回键的监听事件,就要自己来实现返回的功能 if(keyCode==KeyEvent.KEYCODE_BACK){ finish(); overridePendingTransition(R.anim.tran_back_in,R.anim.tran_back_out); } return super.onKeyDown(keyCode, event); } }
用onKeyDown方法实现返回跳转!
以上就是本人的理解,欢迎一起交流指教~
相关文章推荐
- 最详细的 Android Toolbar 开发实践总结
- Android中图片的三级缓存策略
- Android Studio JNI
- android动画,旋转,渐变,缩放
- ionic命令行cmd直接启动android虚拟机
- android开发性能优化经验总结二
- android之selector
- Android动画Animation
- [译]依赖反转在Android中的实践
- [Android] Visual Studio Emulator For Android 相关
- Android使用SVG实现今日头条下拉刷新动画
- Android Camera开发分辨率相关问题总结
- Android数据存储(一)----SharedPreferences详解
- Android第四十二天
- android资源学习笔记&shape圆角
- Android Studio 提交现有项目到osc
- SlidingMenu+Fragment组合
- 从头学android_ViewPager的使用
- Android开发学习之路-插件安装、检查应用是否安装解决方案
- android studio service