Android ページがグレー表示される
解決策 1. Android のページ描画プロセスは一般的にmeasure
、layout
、 、に分かれておりdraw
、ページのグレーイングdraw
はメソッド内で実装されます。draw
メソッドのパラメータにはcanvas
、インターフェースのキャンバスである 、 、paint
インターフェースを描画するためのブラシが含まれます。プロパティを変更することでインターフェイスの背景色を変更したり、カラーフィルターを設定することでブラシの色相、彩度、明るさを変更したりできます。グレー効果の彩度を 0 に設定し、ブラシの設定コードを次のように設定します。canvas
paint
paint
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setStaturation(0);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
解決策 2.パフォーマンスを考慮する HardwareLayer (GPU 内のバッファ) を使用して、描画されたグラフィックスをキャッシュします。setter メソッドは、対応する独自のレイヤーの作成をsetLayerType()
強制し、そのレイヤー上に自分自身を描画します。View
解決策 3.最Activity
上層View
にグレー化を設定して、全体的なグレー化効果を実現します。インターフェースのルートを取得しますView
。
//java
View view = activity. getWindow(). getDecorView();
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setStaturation(0);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
view. setLayerType(View.LAYER_TYPE_HARDWARE, paint);
//kotlin
val view: View = window.decorView
val paint = Paint()
val cm = ColorMatrix()
cm.setSaturation(0f)
paint.colorFilter = ColorMatrixColorFilter(cm)
view.setLayerType(View.LAYER_TYPE_HARDWARE, paint)