zoukankan      html  css  js  c++  java
  • android动画介绍之 自己定义Animation动画实现qq抖一抖效果

    昨天我们介绍了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);
                }
            });
    
        }
    }
    


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

    源码下载

  • 相关阅读:
    ECharts之柱状图 饼状图 折线图
    Vue自定义指令(directive)
    HDU 1231 最大连续子序列
    POJ 2533 Longest Ordered Subsequence
    HDU 1163 Eddy's digital Roots
    HDU 2317 Nasty Hacks
    HDU 2571 命运
    HDU 4224 Enumeration?
    HDU 1257 最少拦截系统
    HDU 2740 Root of the Problem
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6796428.html
Copyright © 2011-2022 走看看