温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android程序如何在代码中改变图片原有的颜色

发布时间:2020-03-26 20:36:36 来源:网络 阅读:5740 作者:拾荒者老大 栏目:移动开发

    最近一边找工作一边完善之前的项目。之前安卓初中级的项目是模仿酷狗音乐播放器的。下载一个apk文件,改后缀,解压,然后根据官方应用的布局,用得到的图片照着做出来。记得酷狗首页有好几种主要图标,解压后得到的白色加透明组合成的,但官方应用是换主题颜色会跟着改变,这回正好有空就网上找来方法跟着改。

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);  
			}
		});
	}
}

主要就是这个在设置颜色

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 // 透明度

}

这样设置起来的是紫色的,这只是很简单的转换,能达到效果,如果需要更多的内容,可以参考这些网址或者自己搜索。

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

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

然后一个就是因为平时都直接用8位十六进制设置颜色,这边需要RGB,所以参考这个网址

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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI