日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

APP全局色彩饱和度修改

發布時間:2023/12/8 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 APP全局色彩饱和度修改 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

APP全局色彩飽和度修改

對以下兩篇鴻洋大神的博文進行了實踐,并記錄對應的問題。
App 黑白化實現探索,有一行代碼實現的方案嗎?
App 黑白化實現探索2, 發現了一種更方便的方案,我被錘了!

第一篇
第一篇采用是比較常規的方法,即在View繪制的時候改變色彩飽和度,以ImageView為例,代碼如下:

public class MyTextView extends ImageView {Paint mPaint = new Paint();public MyImageView(Context context) {super(context);init();}public MyImageView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);init();}public MyImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init(){ColorMatrix cm = new ColorMatrix();cm.setSaturation(0);mPaint.setColorFilter(new ColorMatrixColorFilter(cm));}@Overrideprotected void onDraw(Canvas canvas) {canvas.saveLayer(null, mPaint, Canvas.ALL_SAVE_FLAG);super.onDraw(canvas);canvas.restore();}}

如果是ViewGroup類型的需要在dispatchDraw中也做處理。

第二篇
第二篇的方案比較取巧,而且不熟悉源碼的話大概沒那么容易想到。view.setLayerType(layerType, null);View的硬件加速方法第二個參數可以設置Paint,對Paint設置相應的屬性即可達到效果,代碼如下:

Paint paint = new Paint(); ColorMatrix cm = new ColorMatrix(); cm.setSaturation(0); mPaint.setColorFilter(new ColorMatrixColorFilter(cm)); view.setLayerType(View.LAYER_TYPE_HARDWARE, paint);

問題
1、第一種方法原文中提到對WebView、視頻播放會有影響。
2、第一種方法我自己實踐過程中發現View設置了Background會導致Background的飽和度不變,可能是我哪里需要再處理一下。
3、第二種方式我自己再實踐過程中發現對視頻拍攝有影響,會不斷地閃。

總結

以上是生活随笔為你收集整理的APP全局色彩饱和度修改的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。