今天有人在群里问了一个类似的进度条
颜色变换有点多,对于颜色比较少的,可以用RadialGradient镭射渐变完成,颜色比较多,比较复杂的,美工直接做一个图,遮罩显示就好了。
因为是我自己做得动画,截图不是很流畅,实际是很流畅的,
首先看一下BitmapShader,继承自Shader,我们看一下BitmapShader是啥样的Shader,根据api介绍,主要是把bitmap作为一种纹理绘制,看一下Bitmapshader的构造函数
Call this to create a new shader that will draw with a bitmap.
*
* @param bitmap The bitmap to use inside the shader
* @param tileX The tiling mode for x to draw the bitmap in.
* @param tileY The tiling mode for y to draw the bitmap in.
*/
public BitmapShader(Bitmap bitmap, TileMode tileX, TileMode tileY) {
mBitmap = bitmap;
mTileX = tileX;
mTileY = tileY;
final int b = bitmap.ni();
native_instance = nativeCreate(b, tileX.nativeInt, tileY.nativeInt);
native_shader = nativePostCreate(native_instance, b, tileX.nativeInt, tileY.nativeInt);
}
注释已经很清楚了,bitmap作为纹理填充的一个图片,tileX 横向shader的平铺方式,tileY纵向shader的平铺方式
先看一下有哪几种平铺方式
public enum TileMode {
/**