加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 智能机器人、大数据、CDN、图像分析、语音技术!
当前位置: 首页 > 教程 > 正文

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

发布时间:2023-11-04 10:30:28 所属栏目:教程 来源:网络
导读:

  最近一边找工作一边完善之前的项目。之前安卓初中级的项目是模仿酷狗音乐播放器的。下载一个apk文件,改后缀,解压,然后根据官方应用的布局,用得到的图片照着做出来。记得酷狗首页

  最近一边找工作一边完善之前的项目。之前安卓初中级的项目是模仿酷狗音乐播放器的。下载一个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
 

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章