Android程序如何在代码中改变图片原有的颜色
最近一边找工作一边完善之前的项目。之前安卓初中级的项目是模仿酷狗音乐播放器的。下载一个apk文件,改后缀,解压,然后根据官方应用的布局,用得到的图片照着做出来。记得酷狗首页有好几种主要图标,解压后得到的白色加透明组合成的,但官方应用是换主题颜色会跟着改变,这回正好有空就网上找来方法跟着改。
因为只是把白色改成别的颜色,所以不难。
packagecom.example.ex_tupian;importandroid.app.Activity;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.ColorMatrix;importandroid.graphics.ColorMatrixColorFilter;importandroid.graphics.Matrix;importandroid.graphics.Paint;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.ImageView;publicclassMainActivityextendsActivity{privateImageViewma;privateBitmapbitmap,updateBitmap;privateCanvascanvas;privatePaintpaint;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){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=newCanvas(updateBitmap);paint=newPaint(Paint.ANTI_ALIAS_FLAG);//抗锯齿的画笔finalColorMatrixcm=newColorMatrix();paint.setColorFilter(newColorMatrixColorFilter(cm));paint.setColor(Color.BLACK);paint.setAntiAlias(true);finalMatrixmatrix=newMatrix();canvas.drawBitmap(bitmap,matrix,paint);ma.setImageBitmap(updateBitmap);findViewById(R.id.button1).setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubcm.set(newfloat[]{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(newColorMatrixColorFilter(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
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。