课程/Android/移动开发
带您完成神秘的涟漪按钮效果-提高篇
-
-
xzhang76
2017-05-18
- 了解drawable如何实现动画
1.drawable的动画机制
(1)常规动画:逐帧动画,补间动画
仅仅改变动画效果,不改变控件参数值
(2)属性动画
改变控件的参数值
这两种动画都是通过handler来实现的
2.如何实现动画
按下的时候启动一个runnable,并在这个runnable里面继续schedule这个runnable
private void startEnterRunnable() {
mProgress = 0;
mRadius = 0;
unscheduleSelf(mEnterRunnable);
scheduleSelf(mEnterRunnable, SystemClock.uptimeMillis());
}
private Interpolator mEnterInterpolator = new DecelerateInterpolator(1.5f);
private Runnable mEnterRunnable = new Runnable() {
@Override
public void run() {
mProgress = mProgress + 0.03f;
if (mProgress > 1.2) {
return;
}
float realProgress = mEnterInterpolator.getInterpolation(mProgress);
mRadius = 400 * realProgress;
invalidateSelf();
// 延迟16毫秒再重绘, 保证洁面刷新频率接近60fps
scheduleSelf(mEnterRunnable, SystemClock.uptimeMillis() + 16);
}
};
关于插值器,我已经懂了
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- 想要的效果是扩散完之后也就是充满之后能够回到最初的状态。
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- 为了让其更加明显,可以给插值器设置一个参数值,2表示2倍
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- 可以看到由快到慢的效果
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- ***根据之前的观察可以知道该动画是线性增加,我们想让它由快到慢,或者由慢到快。要如何做呢?添加一个插值,让其实现从快到慢的节奏。
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!半径达到500的时候停止了
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- 设置当半径达到500的时候就停止动画蔓延
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- **在onTouchUp()方法中执行unscheduleSelf,那么当你按住屏幕后一旦放开的话,动画就会停止蔓延
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- 返回true,让事件分发机制可以接收到信息
-
截图
0赞 · 0采集
-
-
夏Jue
2017-04-13
- 动画插值器 Interpolator 快-》慢 DecelerateInterpolator(倍数);
方法 getInterpolation(参数0.0-1.0);//返回一个计算后真实的值
-
0赞 · 0采集