我使用的是一些普通的Android資源,如ic_menu_camera.png
:使所有顏色的像素不透明
的圖像有一個透明的背景(需要),但也有一些透明的彩色像素也是(不希望的)。
我正在使用ColorMatrixColorFilter將色調應用於這些圖像,並且工作正常,但是,圖標中的少量透明度會導致底層背景滲透並淡化顏色。我找不出一種編程方式將所有彩色像素設置爲不透明。任何幫助?
電流着色代碼:
public static void colorImageView(Context context, ImageView imageView, @ColorRes int colorResId) {
Drawable drawable = imageView.getDrawable();
int color = context.getResources().getColor(colorResId);
drawable.setColorFilter(new ColorMatrixColorFilter(new ColorMatrix(new float[] {
0, 0, 0, 0, Color.red(color),
0, 0, 0, 0, Color.green(color),
0, 0, 0, 0, Color.blue(color),
0, 0, 0, 1, 0,
})));
}
當前結果:
(第一圖標的源圖像是不透明的,而其它3具有不希望的透明度,從而導致這個截止藍色)
爲什麼不只是使用一些桌面工具轉換圖像,並在您的應用程序打包更正的圖像?請注意,你試圖做的事情可能是可能的,但除非你需要N種不同顏色的圖像,否則我不知道你在飛行中獲得什麼。 – CommonsWare 2014-08-30 23:18:05
因爲有10個圖標,我需要5個分辨率和2種顏色。這是100張圖片。另外使用內置的資源授權自動向前兼容性。 :/ – Alexander 2014-08-30 23:24:39
「Plus使用內置的資源授權自動向前兼容性」 - 並非如此。您要麼將SDK中的圖標複製到您的項目中,要麼不是。如果你是,那麼你獲得一致性,但失去向前兼容性。相反,如果你正在使用'android.R.drawable'引用,那麼你不知道你的算法在任何給定的設備上看起來不錯(因爲沒有什麼能夠阻止製造商修改這些圖像),更不用說在未來的版本中的Android(例如,無論L變成什麼)。 – CommonsWare 2014-08-30 23:27:11