2016-05-16 3 views
0

私はいくつかのビューを含むLinearLayoutを持っています。 LinearLayout内のすべてがグレースケールカラーモードで描画されるようにすることは可能ですか?どのように砂漠化するにはアンドロイドで見る?

+1

は無効として、レイアウトを設定しますか? –

+0

あなたは次のようなことを意味しますか:http://stackoverflow.com/questions/7068873/how-can-i-disable-all-views-inside-the-layout? – AsfK

答えて

0

LinearLayoutを拡張し、dispatchDrawメソッドをオーバーライドする必要があります。

次に、LinearLayoutとキャンバスのサイズのビットマップを作成します。新しいキャンバスをパラメータとしてsuper.dispatchDrawを呼び出します。その後、元のキャンバスにビットマップを描画し、塗料でColorFilterを設定します。ここ

は例です:

private Bitmap mBitmap; 
private Canvas mCanvas; 
private Paint mPaint; 

public {Constructor}{ 
    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
    ColorMatrix colorMatrix = new ColorMatrix(); 
    colorMatrix.setSaturation(0); 

    ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix); 
    mPaint.setColorFilter(colorFilter); 
} 

@Override 
public void onSizeChanged(int w, int h, in oldw, int oldh){ 
    mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
    mCanvas = new Camvas(mBitmap); 
} 

@Override 
public void dispatchDraw(Canvas canvas){ 
    super.dispatchDraw(mCanvas); 

    canvas.drawBitmap(mBitmap, 0, 0, mPaint); 
} 
関連する問題