现在基本所有的App在注册或者登录时都必须勾选相关协议,对与未勾选的情况一般有多种方式提示用户需要勾选,比如弹出Toast提示用户必须勾选协议,或者将协议部分添加抖动来提示用户。这里简单介绍一下给协议添加抖动的实现原理和方法。
实现原理
如果仔细观察一下协议抖动的过程,会发现其实所谓的协议抖动就是协议布局部分左右短时间内晃动的过程。所以如何实现抖动也可以理解为如何实现布局的左右位移(晃动),这个就比较简单了,使用补间动画就可以完成。
实现过程
创建动画文件
要实现抖动就必须有动画文件,我们在anim下创建一个实现左右位移的动画文件shake.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="0"
android:interpolator="@anim/shake_interpolator"
android:toXDelta="30">
</translate>
稍微解释一下这几个属性 translate标签代表我们的动画是一个位移动画,用来实现位置变化。duration 代表动画时长,fromXDelta代表动画在x轴的起始位置,interpolator 表示动画使用的插值器,插值器可以帮我们实现一些特殊效果,toXDelta 表示动画在x轴的结束位置,或者叫x轴的偏移量。
创建插值器
动画文件创建完成之后就该创建带有抖动效果的插值器了,同样在anim文件夹下创建插值器文件shake_interpolator.xml
<?xml version="1.0" encoding="utf-8"?>
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:cycles="2">
</cycleInterpolator>
cycleInterpolator标签表示这个文件作为一个插值器使用可以实现抖动效果,cycles表示抖动次数。
在代码中使用
动画文件和插值器文件创建好之后就可以在代码中使用了,使用系统自带的AnimationUtils加载动画文件
Animation animation=AnimationUtils.loadAnimation(this,R.anim.shake);
rl_xieyi.startAnimation(animation);