首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 繪製漸變圖片出現色帶條紋的原因與解決方案

     編輯:程式設計綜合問答

現象

原圖漸變平滑,Canvas.drawBitmap() 繪製後出現明顯色帶(條紋)。

根本原因

Android 預設將 Bitmap 配置為 ARGB_8888(32 位),但部分設備/系統版本在解碼/繪製時會隱式轉為 RGB_565(16 位,每通道 5/6/5 位),色彩深度驟降導致漸變階梯化。

解決方法

  1. 顯式指定解碼配置:
    BitmapFactory.Options opts = new BitmapFactory.Options();
    opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.id.xxx, opts);
  2. 抖動處理:在圖片生成階段(PS 等工具)開啟抖動,或運行時用 Paint.setDither(true)。
  3. 使用矢量/Shader 漸變:代碼繪製 LinearGradient / SweepGradient 替代位圖,完全避免量化誤差。

參考詳解:Android 圖片色彩模式與條紋問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved