溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android程序如何在代碼中改變圖片原有的顏色

發(fā)布時間:2020-03-26 20:36:36 來源:網(wǎng)絡(luò) 閱讀:5730 作者:拾荒者老大 欄目:移動開發(fā)

    最近一邊找工作一邊完善之前的項目。之前安卓初中級的項目是模仿酷狗音樂播放器的。下載一個apk文件,改后綴,解壓,然后根據(jù)官方應(yīng)用的布局,用得到的圖片照著做出來。記得酷狗首頁有好幾種主要圖標(biāo),解壓后得到的白色加透明組合成的,但官方應(yīng)用是換主題顏色會跟著改變,這回正好有空就網(wǎng)上找來方法跟著改。

Android程序如何在代碼中改變圖片原有的顏色

Android程序如何在代碼中改變圖片原有的顏色

    因為只是把白色改成別的顏色,所以不難。

package com.example.ex_tupian;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class MainActivity extends Activity {
	private ImageView ma;
	 private Bitmap bitmap, updateBitmap;  
	   private Canvas canvas;  
	    private Paint paint;  
	    
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ma = (ImageView) findViewById(R.id.p_w_picpathView00);
		bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.d1);  
        updateBitmap = Bitmap.createBitmap(bitmap.getWidth(),  
                bitmap.getHeight(), bitmap.getConfig());  
        canvas = new Canvas(updateBitmap);  
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗鋸齒的畫筆  
        final ColorMatrix cm = new ColorMatrix();  
        paint.setColorFilter(new ColorMatrixColorFilter(cm));  
        paint.setColor(Color.BLACK);  
        paint.setAntiAlias(true);  
        final Matrix matrix = new Matrix();  
        canvas.drawBitmap(bitmap, matrix, paint);  
        ma.setImageBitmap(updateBitmap);  
		findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				cm.set(new float[] { 160 / 128f, 0, 0, 0, 0,// 紅色值  
                        0, 32 / 128f, 0, 0, 0,// 綠色值  
                        0, 0, 240 / 128f, 0, 0,// 藍色值  
                        0, 0, 0, 1, 0 // 透明度  
                });  
                paint.setColorFilter(new ColorMatrixColorFilter(cm));  
                canvas.drawBitmap(bitmap, matrix, paint);  
                ma.setImageBitmap(updateBitmap);  
			}
		});
	}
}

主要就是這個在設(shè)置顏色

new float[] { 160 / 128f, 0, 0, 0, 0,// 紅色值                         

 0, 32 / 128f, 0, 0, 0,// 綠色值                         

 0, 0, 240 / 128f, 0, 0,// 藍色值                         

 0, 0, 0, 1, 0 // 透明度

}

這樣設(shè)置起來的是紫色的,這只是很簡單的轉(zhuǎn)換,能達到效果,如果需要更多的內(nèi)容,可以參考這些網(wǎng)址或者自己搜索。

http://blog.csdn.net/loongggdroid/article/details/18708911

http://www.cnblogs.com/leon19870907/articles/1978065.html

然后一個就是因為平時都直接用8位十六進制設(shè)置顏色,這邊需要RGB,所以參考這個網(wǎng)址

http://blog.csdn.net/yanzi1225627/article/details/8581270


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI