Android实现控件随手指滑动缩放

android实现控件抖动效果

本来这就是我平时的两篇练习,但是昨天看了一下感觉其实还挺有用的.就把他拿出了献丑了,还有另外一篇关于手指滑动实现控件缩放的的博客喜欢的可以关注.

实现思路

实现这种动画的方式是很多的,可以是补间动画,熟悉动画,而我们用xml动画的方式(也就是补间动画)实现控件的抖动效果

先贴代码

动画文件代码 anim.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"

>
<translate
android:fromXDelta="0"
android:toXDelta="-50"
android:fromYDelta="0"
android:toYDelta="-50"
android:duration="150"
android:interpolator="@anim/interplator"
/>
<translate
android:fromXDelta="0"
android:toXDelta="50"
android:fromYDelta="0"
android:toYDelta="-50"
android:startOffset="150"
android:interpolator="@anim/interplator"
android:duration="150"
/>
<translate
android:fromXDelta="0"
android:toXDelta="-50"
android:fromYDelta="0"
android:toYDelta="70"
android:startOffset="300"
android:duration="150"
android:interpolator="@anim/interplator"
/>
<translate
android:fromXDelta="0"
android:toXDelta="50"
android:fromYDelta="0"
android:toYDelta="70"
android:startOffset="450"
android:duration="150"
android:interpolator="@anim/interplator"
/>
<translate
android:fromXDelta="0"
android:toXDelta="-50"
android:fromYDelta="0"
android:toYDelta="-50"
android:duration="150"
android:startOffset="600"
android:interpolator="@anim/interplator"
/>

</set>

差值器代码 interpolator.xml

<?xml version="1.0" encoding="utf-8"?>
<accelerateInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:cycles="20"

>

</accelerateInterpolator>

这段代码看起来还不是特别的流畅如果想要真正用到项目中,还需要多加调试

实现原理

上面anim.xml文件一共五个动画

第一个动画::向右上方移动
第二个动画::向左上方移动
第三个动画::向右下方移动
第四个动画::向左下方移动
还有第五个动画重复第一个动画

这样就能实现抖动效果了

注意上面从第二个动画开始的动画开始时间,每一个动画的开始时间都在它上一个动画运行的的中间时间开始(当然也可以是其它的时间),

为什么要这样做呢: 因为如果我们将一个动画的开始时间设置为它的上一个动画的结束时间,那么中间会有短时间的停顿,整个动画的效果会变得不好.通过将下一个动画的开始时间提前可以消除掉这种停顿,这也是网上大多数抖动效果没有说清楚的地方.

东西不多刚好是这些没有说清楚的地方是动画的关键,我只是将这些别人疏忽的地方讲清楚而已.

你可能感兴趣的:(Android实现控件随手指滑动缩放)