2015-03-06 2 views
2

Я использовал класс customView для создания кнопки формы бриллианта. В методе OnDraw этого класса:Diamond Shaped Button с прозрачными границами

@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); 

Но я хочу, чтобы моя кнопка алмаз имеет прозрачную границу. Что мне делать?

+0

Почему вы не можете получить изображение формы бриллианта и разместить его в кнопке? это первый случай. второй случай, если вам нужно разместить алмазную форму, используйте библиотеку. https://github.com/siyamed/android-shape-imageview – Shadow

+0

@Shadow: да, но я хочу узнать, как это сделать :) – mk72

+0

Есть ли разница в том, что у вас нет границы вместо прозрачной? –

ответ

2

Вы должны нарисовать путь дважды, сначала нарисуйте заливку, а затем нарисуйте ход.

//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); 
} 
+0

workssssss. Я очень ценю вашу помощь;) – mk72

Смежные вопросы