App黑白化探索与实现

731 阅读1分钟

黑白化

activity的实现

setContentView()后设置如下代码 可以基于基类Activity 也可单独设置某一个业务模块

        Paint mPaint = new Paint();
        ColorMatrix cm = new ColorMatrix();
        cm.setSaturation(0F);
        mPaint.setColorFilter(new ColorMatrixColorFilter(cm));
        getWindow().getDecorView().setLayerType(View.LAYER_TYPE_SOFTWARE, mPaint);

ImageView的实现或者xml根布局实现

Kotlin版本

        val mPaint = Paint()
        val cm = ColorMatrix()
        cm.setSaturation(0F)
        mPaint.colorFilter = ColorMatrixColorFilter(cm)
        xxxid.setLayerType(View.LAYER_TYPE_SOFTWARE, mPaint)

黑白化颜色的探究

方案一

        val mPaint = Paint()
        val cm = ColorMatrix()
        cm.setSaturation(0F)
        mPaint.colorFilter = ColorMatrixColorFilter(cm)
        xxxId.setLayerType(View.LAYER_TYPE_SOFTWARE, mPaint)

方案二

        val mPaint = Paint()
        val cm = ColorMatrix()
        cm.setYUV2RGB()
        mPaint.colorFilter = ColorMatrixColorFilter(cm)
        xxxId.setLayerType(View.LAYER_TYPE_SOFTWARE, mPaint)

方案三

        val mPaint = Paint()
        val cm = ColorMatrix()
        cm.setRGB2YUV()
        mPaint.colorFilter = ColorMatrixColorFilter(cm)
        xxxId.setLayerType(View.LAYER_TYPE_SOFTWARE, mPaint)

方案四

        val mPaint = Paint()
        val cm = ColorMatrix()
        val array: FloatArray = cm.array
        array[0] = -1F
        array[3] = 1F
        array[4] = 1F
        array[6] = -1F
        array[8] = 1F
        array[9] = 1F
        array[12] = -1F
        array[13] = 1F
        array[14] = 1F
        array[18] = 1F
        mPaint.colorFilter = ColorMatrixColorFilter(cm)
        xxxId.setLayerType(View.LAYER_TYPE_SOFTWARE, mPaint)

方案五

        val mPaint = Paint()
        val cm = ColorMatrix()
        val array: FloatArray = cm.array
        array[0]= 1.5F
        array[1]= 1.5F
        array[2]= 1.5F
        array[4]= -1F
        array[5]= 1.5F
        array[6]= 1.5F
        array[7]= 1.5F
        array[9]= -1F
        array[10]= 1.5F
        array[11]= 1.5F
        array[12]= 1.5F
        array[14]= -1F
        array[18]= 1F
        mPaint.colorFilter = ColorMatrixColorFilter(cm)
        xxxId.setLayerType(View.LAYER_TYPE_SOFTWARE, mPaint)