2012-01-09 14 views
0

これは私のビューの最も単純化されたバージョンです。onDrawで背景色を更新する方法

public class MyView extends View { 

    private int mBackgroundColor = android.R.color.white; 

    @Override 
    public void setBackgroundColor(int color) { 
     super.setBackgroundColor(color); 
     mBackgroundColor = color; 
     invalidate(); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawColor(mBackgroundColor);] 
     //canvas.drawColor(mBackgroundColor, Mode.CLEAR); 
     //canvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPaint); 
    } 

} 

問題がsetBackgroundColorが活動から呼び出されたときを変更しない背景色です。私は明らかに見ていないと思う。解決しよう

は必ずandroid.graphicsことを確認してくださいnmJohnから将来の求職者

clipRect

//Clear the screen 
canvas.clipRect(0, 0, viewWidth, viewHeight, Region.Op.REPLACE);    
mPaint.setColor(mBackgroundColor); 
canvas.drawRect(0, 0, viewWidth, viewHeight, mPaint); 

//Draw the image 
canvas.clipRect(mRectDst.left, mRectDst.top, mRectDst.right, mRectDst.bottom, Region.Op.REPLACE); 
canvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPaint); 

1つのより多くのヒントをヒントを取りました。色: x形式は、android.R.colorという形で提供されています。[White/Black/..]はしばらくの間は気づきませんでした。

答えて

0

drawColorは、現在のクリップの背景色を設定するだけです。キャンバスの領域にclipRectを設定してみてください。

また、ビューが実際に無効になっていることを確認してください。それ以外の場合は、onDrawが呼び出されません。

+0

私はこの分野の騒ぎです。あなたはもっと説明的になりますか? – Samuel

+0

うーん、そのまま動作するはずです。無効化が実際に呼び出されていることを確認できますか? – nmjohn

+0

i onDrawが呼び出されていて、backgroundColorが変更されたときにinvalidate()がそこにあります。 – Samuel

関連する問題