Android 在RectF的相交处填充透明
我用onDraw和Canvas定制了按钮和Im填充按钮颜色。。 假设我的按钮参数left,Top,Right,Bottom是0,0200200,那么 对于部件20、20180180,我希望此部件透明,其他部件透明 用渐变色Android 在RectF的相交处填充透明,android,android-layout,android-canvas,Android,Android Layout,Android Canvas,我用onDraw和Canvas定制了按钮和Im填充按钮颜色。。 假设我的按钮参数left,Top,Right,Bottom是0,0200200,那么 对于部件20、20180180,我希望此部件透明,其他部件透明 用渐变色 @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.on
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
int[] iColor = {
CommonFunctions
.getLightColor(bAppointments.getSrtStatus(), 255),
CommonFunctions.getColor(bAppointments.getSrtStatus(), 255) };
int[] gapColor = { Color.argb(255, 255, 255, 255),
Color.argb(255, 255, 255, 255) };
float[] iPos = {
0,
(canvas.getClipBounds().bottom - canvas.getClipBounds().top) / 2 };
LinearGradient lGradient = new LinearGradient(
canvas.getClipBounds().right - canvas.getClipBounds().left,
canvas.getClipBounds().top, canvas.getClipBounds().right
- canvas.getClipBounds().left,
canvas.getClipBounds().bottom, iColor, iPos,
Shader.TileMode.CLAMP);
mPaint.setAlpha(0xBB);
mPaint.setShader(lGradient);
mPaint.setStyle(Style.FILL);
mRectF.set(canvas.getClipBounds().left + 2,
canvas.getClipBounds().top + 2,
canvas.getClipBounds().right - 2,
canvas.getClipBounds().bottom - 6);
canvas.drawRoundRect(mRectF, rectCurve, rectCurve, mPaint);
}
目前我的布局看起来像
现在我已经用临时解决方案解决了。。 我先按了按钮。。 然后我将按钮画布分为5部分 顶部、左侧、间隙部分、右侧和底部。。 n我用同样的颜料填充了那部分 仍在等待好的解决方案
谢谢。现在..我已经用临时解决方案完成了。。 我先按了按钮。。 然后我将按钮画布分为5部分 顶部、左侧、间隙部分、右侧和底部。。 n我用同样的颜料填充了那部分 仍在等待好的解决方案
谢谢。怎么了?更好的方法是用xml实现。。很简单,在运行时也不需要做太多的工作。@sandy在这个。。我希望白色部分是透明的,它必须显示相对的颜色,而不是按钮的颜色。。。我必须在运行时做,因为颜色渐变是基于逻辑的,不是静态的。有什么问题吗?更好的方法是用xml实现。。很简单,在运行时也不需要做太多的工作。@sandy在这个。。我希望白色部分是透明的,它必须显示相对的颜色,而不是按钮的颜色。。。n我必须在运行时做,因为颜色渐变是基于逻辑的,不是静态的。。