2012-03-29 17 views
2

私は、ボタンとImの塗りつぶしボタンの色をonDrawとCanvasを使ってカスタマイズしました。 ボタンパラメータ(左、上、右、下)が(0,0,200,200)の場合は、 (20,20,180,180)私はグラデーションカラーと一部 この部分は透明と他たい...RectF Androidの交差点で透明に塗りつぶす

enter image description here

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

現在、私のレイアウトは

のように見て私は最初のボタンに透明満たさenter image description here now..Iため

+0

何が問題なのですか?より良い方法は、XMLでそれを行うことです..実行時に行うことは簡単ではありません.. – ngesh

+0

@sandy http://i.stack.imgur.com/sItBz.pngこれで..私は白い部分をしたいボタンのColorの代わりにrelativeLayout Colorを表示する必要があることを透明にします。n色のグラデーションはLogicの静的ではないため、ランタイムを実行する必要があります。 –

答えて

0

は一時的な解決策を使用してそれを行っている。.. ... その後、私は5部分にボタンのキャンバスを分割..

上部、左部、ギャップパート、右部分と下の部分.. nは、私は同じPaintオブジェクトを使用してその部分を埋め...それでも良い解決策を待って

..

感謝。

関連する問題