android动画介绍之 自定义Animation动画_html/css_WEB-ITnose

WBOY
发布: 2016-06-24 11:40:01
原创
1231 人浏览过

昨天我们介绍了Animation的基本用法。小伙伴们了解的怎么样了?如果还没有了解过Animation的小伙伴可以看看这篇博客

android动画介绍--Animation 实现loading动画效果

安卓内置的四种动画虽然说可以用AnimationSet进行组合操作,但是这些组合往往在特定场合是不够用的,就像view一样,我们可以自定义动画效果。

今天要做成的效果是模仿qq的抖一抖效果,老规矩,先来看今天的效果图:


自定义动画的实现方法为 继承Animation类重写applyTransformation()方法

public class CustomAnimation extends Animation {    @Override    protected void applyTransformation(float interpolatedTime, Transformation t) {        t.getMatrix().setTranslate((float)Math.sin(interpolatedTime*50)*20,0);        super.applyTransformation(interpolatedTime, t);    }}
登录后复制

可以看到 applyTransformation()方法有两个参数  第一个参数interpolatedTime代表一个0-1逐渐增大的float, t代表view所需要的变化,例如t.setAlpha();  t.setTranslate();顾名思义这两个方法是发生透明度变化和位移变化。

那么我们今天的目标是实现抖一抖效果,思路如下: view先向左位移,再向右位移。 坐标为  (0-n,0) --->(0+n,n),一正一负的变化,就要用到我们的三角函数了。所以这里t.setTranslate(Math.sin())。

这样基本上我们的自定义 动画就完成了,接下来在MainActivity下获取当前的布局,给他添加动画效果

public class MainActivity extends ActionBarActivity {    private Button mButton;    private RelativeLayout mRelativeLayout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mButton = (Button) findViewById(R.id.shake);        mRelativeLayout = (RelativeLayout) findViewById(R.id.relativelayout);        final CustomAnimation ca = new CustomAnimation();        ca.setDuration(1000);        mButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                mRelativeLayout.startAnimation(ca);            }        });    }}
登录后复制


这样便大功告成!如果喜欢我的博客,请点赞哦

源代码下载

版权声明:本文为博主原创文章,欢迎注明出处后转载。

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板