课程/Android/移动开发
带您完成神秘的涟漪按钮效果-提高篇
-
-
xzhang76
2017-05-19
- 增强涟漪动画效果
1.按钮背景色逐渐变深
(1)使用下面的方法改变颜色的透明度
private int changeColorAlpha(int color, float progress) {
int alpha = (color >> 24) & 0xFF;
alpha = (int) (alpha * progress);
int red = (color >> 16) & 0xFF;
int green = (color >> 8) & 0xFF;
int blue = color & 0xFF;
return (alpha << 24) | (red << 16) | (green << 8) | blue;
}
其实就是变化了alpha值,其他三色都不变。
(2)进度值变化时调用这个方法来改变背景色
private void onProgressChanged(float realProgress) {
mRadius = mMaxRadius * realProgress;
mDrawableX = mDownCenterX + (mCenterX - mDownCenterX) * realProgress;
mDrawableY = mDownCenterY + (mCenterY - mDownCenterY) * realProgress;
mBackgoundColor = changeColorAlpha(0x40000000, realProgress);
invalidateSelf();
}
-
截图
0赞 · 1采集
-
-
最後的最後_
2017-04-13
- 设置前两位的值。不透明的局限就是30
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- ***如果要使得前面两位(ff)有效的效的话,那么就要用到前面那两位。
a为均衡后的透明度。
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- getProgressValue()方法中,第二个参数的大小表示背景颜色的深浅,越小越淡
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- 可以看到背景颜色逐渐加深
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- ***因为只拿取了红绿蓝三种颜色的通道,所以导致0xff000000中的ff无论写aa还是00都是毫无关系的,这两位也就是透明度的通道,因为下面并没有使用颜色的透明度通道,所以这里不管设置什么都是无效的
-
截图
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
- 计算半径 mRippleRadius
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-13
- !!!
-
截图
0赞 · 0采集