当前位置: 移动技术网 > IT编程>移动开发>Android > Android仿google now效果的呼吸按钮

Android仿google now效果的呼吸按钮

2019年09月09日  | 移动技术网IT编程  | 我要评论

新概念英语第二册mp3,邮政包裹跟踪,缪世璇

呼吸按钮是我最早接触到为view添加动画效果的需求,刚刚参加安卓开发工作,要求设计一个好看的语音按钮效果,就有了这个成果,但是后来又改方案了,所以我也就没有对该按钮进行封装为一个自定义按钮,本文主要是展示一种合理组合利用animation来实现一些好看的动画效果,只是一种思路。

先上图:

实现该效果,重要的是我们要如何实现这种动态的呼吸效果,因为是一种非线性运动,直接实现起来有些麻烦,特别是对于像我刚刚入行的菜鸟来说。但是幸好,android的sdk提供了一种叫interpolator属性,通过设置该属性为accelerate_decelerate_interpolato可以实现加速效果,使动画看起来更丰满,更具活力。

首先,我们需要三个anim文件。

进入效果anim:

<?xml version="1.0" encoding="utf-8"?>
  <set xmlns:android="http://schemas.android.com/apk/res/android"
  android:interpolator="@android:anim/decelerate_interpolator"
  android:shareinterpolator="true">
  <scale 
    android:fromxscale="0.0"
    android:toxscale="0.9"
    android:fromyscale="0.0"
    android:toyscale="0.9"
    android:pivotx="50%"
    android:pivoty="50%"
    android:duration="1000"/>
</set>

呼吸效果anim:

<?xml version="1.0" encoding="utf-8"?>
  <set xmlns:android="http://schemas.android.com/apk/res/android"
  android:interpolator="@android:anim/accelerate_decelerate_interpolator"
  android:shareinterpolator="true">
  <scale
    android:fromxscale="0.9"
    android:toxscale="1.0"
    android:fromyscale="0.9"
    android:toyscale="1.0"
    android:duration="1500"
    android:pivotx="50%"
    android:pivoty="50%"
    android:repeatcount="infinite"
    android:repeatmode="reverse"/>
</set>

退出效果anim:

 <?xml version="1.0" encoding="utf-8"?>
  <set xmlns:android="http://schemas.android.com/apk/res/android"
  android:interpolator="@android:anim/accelerate_interpolator"
  android:shareinterpolator="true">
  <scale 
    android:fromxscale="0.95"
    android:toxscale="0.0"
    android:fromyscale="0.95"
    android:toyscale="0.0"
    android:pivotx="50%"
    android:pivoty="50%"
    android:duration="1000"/>
</set>

然后是java代码,代码很简单,在mainactivity中,对按钮设置点击事件,唤起开始动画->执行呼吸动画->唤起结束对话。同时对开始和接收的动画进行监听,执行完毕后完成显示和隐藏背景的设置。部分代码:

private void initview() {
    voice.setonclicklistener(new view.onclicklistener() {
      @override
      public void onclick(view v) {
        if (!isvisible) {
          back.startanimation(animationin);
          isvisible = true;
        } else {
          back.startanimation(animationexit);
          isvisible = false;
        }

      }
    });

}

animtion动画相关部分代码

 //动画监听
animationin.setanimationlistener(new animation.animationlistener() {

      @override
      public void onanimationstart(animation animation) {

      }

      @override
      public void onanimationrepeat(animation animation) {

      }

      @override
      public void onanimationend(animation animation) {
        back.startanimation(animationvoice);  //开始呼吸动画
        back.setvisibility(view.visible);
      }
    });

    animationexit.setanimationlistener(new animation.animationlistener() {
      @override
      public void onanimationstart(animation animation) {

      }

      @override
      public void onanimationend(animation animation) {
        back.clearanimation(); //清除动画
        back.setvisibility(view.invisible);
      }

      @override
      public void onanimationrepeat(animation animation) {

      }
    });

好了,一个呼吸按钮就成了,有兴趣的可以把呼吸按钮封装一下,做成一个自定义按钮来使用。最后附上github链接:breathbutton  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网