Android 在RectF的相交处填充透明

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

我用onDraw和Canvas定制了按钮和Im填充按钮颜色。。 假设我的按钮参数left,Top,Right,Bottom是0,0200200,那么 对于部件20、20180180,我希望此部件透明,其他部件透明 用渐变色

  @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我必须在运行时做,因为颜色渐变是基于逻辑的,不是静态的。。