2016-05-16 9 views
0

Ich habe LinearLayout mit einigen Ansichten. Ist es möglich, dass alles in LinearLayout im Graustufen-Farbmodus gezeichnet wird?Wie entsättigen View on Android?

+1

das Layout als Behinderte einstellen? –

+0

meinst du etwa so: http://stackoverflow.com/questions/7068873/how-can-i-disable-all-views-inside-the-layout? – AsfK

Antwort

0

Sie müssen LinearLayout erweitern und DispatchDraw-Methode überschreiben.

dann erstellen Sie ein Bitmap mit der Größe von LinearLayout und einem Canvas. und rufen Sie super.dispatchDraw mit dem neuen Zeichenbereich als Parameter auf. Danach zeichnen Sie das Bitmap auf dem ursprünglichen Canvas mit einem Farbfilter, der einen ColorFilter setzt.

hier ist das Beispiel:

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