我使用了 customView 类来创建菱形按钮。 在该类的onDraw方法中:
@Override
protected void onDraw(Canvas canvas) {
mPath.moveTo(mWidth/2 , 0);
mPath.lineTo(mWidth , mHigh/2);
mPath.lineTo(mWidth /2 , mHigh);
mPath.lineTo(0 , mHigh/2);
mPath.lineTo( mWidth/2 ,0);
canvas.drawPath(mPath ,mBorderPaint);
super.onDraw(canvas);
}
borderPaint 定义如下:
mBorderPaint = new Paint();
mBorderPaint.setColor(mBorderColor);
mBorderPaint.setStyle(Paint.Style.FILL_AND_STROKE);
borderPaint.setStrokeWidth(mBorderWidth);
但我希望我的菱形按钮有透明边框。我该怎么办?
最佳答案
您必须绘制路径两次,首先绘制填充,然后绘制描边。
//initialize the paint object before onDraw method is called
mBorderPaint = new Paint();
@Override
protected void onDraw(Canvas canvas) {
mPath.moveTo(mWidth/2 , 0);
mPath.lineTo(mWidth , mHeight/2);
mPath.lineTo(mWidth /2 , mHeight);
mPath.lineTo(0 , mHeight/2);
mPath.lineTo( mWidth/2 ,0);
//setup the paint for fill
mBorderPaint.setAlpha(255);
mBorderPaint.setColor(mBorderColor);
mBorderPaint.setStyle(Paint.Style.FILL);
borderPaint.setStrokeWidth(mBorderWidth);
//draw it
canvas.drawPath(mPath ,mBorderPaint);
//setup the paint for stroke
mBorderPaint.setAlpha(51);
mBorderPaint.setStyle(Paint.Style.STROKE);
//draw it again
canvas.drawPath(mPath ,mBorderPaint);
super.onDraw(canvas);
}
关于android - 带透明边框的菱形按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28898906/