我想创建一个CircleView,梯度从底部 - >左侧 - >顶部 - >右侧。
所以我用帆布SweepGradient
这样SweepGradient更改开始和结束颜色的位置
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
int[] colors = {Color.GREEN, Color.RED};
float[] positions = {0, 1};
SweepGradient gradient = new SweepGradient(100, 100, colors, positions);
paint.setShader(gradient);
canvas.drawCircle(100, 100, 100, paint);
}
但这个默认顺序是右键 - >下 - >左转 - >顶但我想底部 - >左转 - >顶 - >右键 我曾尝试改变位置以
float[] positions = {0.25f, 1.25f};
,但它只是在AndroidStudio的Preview
的作品,当我在真实的设备上运行时,它显示的结果一样positions = {0, 1}
我怎样才能让SweepGradient
梯度bottom -> left -> top -> right
这样
- - 更新--- 我们可以使用setLocalMatrix
为SweepGradient
像这样旋转渐变
Matrix matrix = new Matrix();
matrix.setRotate(90, 100, 100);
gradient.setLocalMatrix(matrix);
使用'着色#setLocalMatrix(矩阵localM)' – pskink
@pskink遗憾的是,仅'setLocalMatrix'工作完美的预览模式,在我的真实设备API 19它不会工作 –
发布您的代码然后 – pskink