Android Imageview 圖片置灰,圖片特殊節(jié)日去真彩色
2023-04-12
ImageView
ImageView是Android中的一個圖片顯示控件,用來加載網(wǎng)絡(luò)或者本地圖片資源。好看的圖片可以讓應(yīng)用更被用戶接收,如果圖片作為應(yīng)用的裝飾,已成為主流,但不是所有的圖片顯示都符合要求,比如一些特殊時間,特別靚麗的色彩不符合當(dāng)下假日要求,這個時候如果能讓圖片變成灰色,這樣用助于達到效果。
由于圖片基本都是人工在處理,一張圖可以直接換資源,如果是千人千面,幾十萬或者上百張資源根本來不及處理。這時,如果我們能通過色彩過濾,對一些色彩進行置灰,這樣在顯示上依舊可以達到效果。
ImageView提供了setColorFilter(ColorMatrixColorFilter)方法,通過該方法,對顏色進行過濾。
public ColorMatrixColorFilter(@NonNull ColorMatrix matrix)又是一個Bean類,真正處理色彩的是ColorMatrix
ColorMatrix :
4x5矩陣,用于變換位圖的顏色和alpha分量。矩陣可以作為單個數(shù)組傳遞,并按如下方式處理
setSaturation(float sat)方法就是對顏色進行處理,針對的是R/G/B三原色進行混淆
sat:取值是0到1,值越大,色彩飽和越量,為1,是圖片的原色,越小,越灰
Android中的color基本有三原色,RGB組成,
000000是黑色,
FFFFFF:白色
源碼如下:
public void setSaturation(float sat) {
reset();
float[] m = mArray;
final float invSat = 1 - sat;
final float R = 0.213f * invSat;
final float G = 0.715f * invSat;
final float B = 0.072f * invSat;
m[0] = R + sat; m[1] = G; m[2] = B;
m[5] = R; m[6] = G + sat; m[7] = B;
m[10] = R; m[11] = G; m[12] = B + sat;
}
測試代碼:
ColorMatrix colorMatrix = new ColorMatrix();
//0-1
colorMatrix.setSaturation(progress * 1.0f / 100.0f);
ColorMatrixColorFilter colorFilter = new
ColorMatrixColorFilter(colorMatrix);
imageView.setColorFilter(colorFilter);


本文僅代表作者觀點,版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請在文中注明來源及作者名字。
免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請及時與我們聯(lián)系進行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com






