Android动画中Interpolator 加速器的使用
来源:互联网 发布:网络协议是 编辑:程序博客网 时间:2024/05/01 03:46
遇到一个项目需求,想让动画变得更活泼一点,于是想到了动画属性中的Interpolator,写了基本例子测试一下android提供给我们现成的加速器的效果:
设置布局的时候,直接找了一个背景 还有一个需要移动的图片
<RelativeLayout 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:background="@drawable/bg" tools:context=".MainActivity" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:src="@drawable/peo" /></RelativeLayout>
在页面中,直接让ImageView执行平移动画也没问题,图片成功的加速的向左运行
public class MainActivity extends Activity {ImageView img;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); img=(ImageView)findViewById(R.id.imageView1); TranslateAnimation translate=new TranslateAnimation(0, -750, 0, 0);translate.setDuration(4000);translate.setFillAfter(true);translate.setInterpolator(new AccelerateInterpolator() );img.setAnimation(translate);}}
写到这儿,突然想把所有的加速动画效果都看一遍,于是就在ActionBar上把menu都添加上了,运行的时候,ActionBar上那三个小点不见了,只能通过点击物理键盘的菜单键,才能弹出menu,所以在代码中,有加上getOverflowMenu()方法
//显示ActionBar上隐藏目录的三个点private void getOverflowMenu() { try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); if(menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception e) { e.printStackTrace(); } }
然后在onMenuItemSelected方法中,开始设置每一个加速度的效果,但是发现一个问题,明明已经运行进入case R.id.morefast分支了,但是动画就是不显示
@Overridepublic boolean onMenuItemSelected(int featureId, MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case R.id.morefast: //越来越快 TranslateAnimation translate=new TranslateAnimation(0, -750, 0, 0);translate.setDuration(4000);translate.setFillAfter(false);translate.setInterpolator(new AccelerateInterpolator() );img.setAnimation(translate);break;case R.id.moreslow: //越来越慢 TranslateAnimation translate_1=new TranslateAnimation(0, -750, 0, 0); translate_1.setDuration(4000); translate_1.setFillAfter(true); translate_1.setInterpolator(new DecelerateInterpolator() );img.setAnimation(translate_1);break;
后来在每一个case分支,都先对ImageView 清除一下动画显示,再增加新的动画就可以实现效果了
case R.id.morefast: //越来越快 img.clearAnimation(); TranslateAnimation translate=new TranslateAnimation(0, -750, 0, 0);translate.setDuration(4000);translate.setFillAfter(false);translate.setInterpolator(new AccelerateInterpolator() );img.setAnimation(translate);break;
测试程序的下载地址:点击打开链接
0 0
- Android动画中Interpolator 加速器的使用
- android动画加速器(插值器)interpolator和速度曲线
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- 默认构造函数的常见问题
- 蓝桥杯试题集 基础练习 01字符串
- 剑指offer 面试题14 数组元素奇数调整到偶数之前
- spring编码过滤器配置
- 【Alljoyn】 Alljoyn学习笔记六 Alljoyn基本概念
- Android动画中Interpolator 加速器的使用
- 张晋铭-微信红包技术分享
- iOS開発で参考になる資料まとめ
- 学习Python编程的11个资源
- C#获取指定网页源码
- 网卡驱动程序设计
- SVN clean失败解决方法
- Python基础学习篇—assert用法
- WebSphere : Unknown column name STATUS. ERRORCODE=-4460, SQLSTATE=null