大佬教程收集整理的这篇文章主要介绍了Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法。分享给大家供大家参考,具体如下:
一、如图
二、代码实现
public class ColorImageActivity extends Activity { private ImageView mImageView; private SeekBar mSBRed,mSBGreen,mSBBlue,mSBAlpha,mSBLight; //修改后的图片 private Bitmap mModBitmap; //画布 private Canvas mCanvas; //画笔 private Paint mPaint; //颜色矩阵 private ColorMatrix mColorMatrix; //图片矩阵 private Matrix mMatrix; //原图 private Bitmap mBitmap; @Override protected void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.activity_image_color); initViews(); } private void initViews() { mImageView = (ImageView) findViewById(R.id.imageView1); mSBRed = (SeekBar) findViewById(R.id.seekBar1); mSBGreen = (SeekBar) findViewById(R.id.seekBar2); mSBBlue = (SeekBar) findViewById(R.id.seekBar3); mSBAlpha = (SeekBar) findViewById(R.id.seekBar4); mSBLight = (SeekBar) findViewById(R.id.seekBar5); mSBRed.setOnSeekBarchangelistener(new Redchangelistener()); mSBGreen.setOnSeekBarchangelistener(new Greenchangelistener()); mSBBlue.setOnSeekBarchangelistener(new Bluechangelistener()); mSBAlpha.setOnSeekBarchangelistener(new Alphachangelistener()); mSBLight.setOnSeekBarchangelistener(new Lightchangelistener()); //创建原图 mBitmap = BitmapFactory.decoderesource(getresources(),R.drawable.mm0); //创建修改的图 mModBitmap = Bitmap.createBitmap(mBitmap.getWidth()+20,mBitmap.getHeight()+20,mBitmap.getConfig()); mCanvas = new Canvas(mModBitmap); mPaint = new Paint(); mPaint.setColor(Color.bLACK); mPaint.setAntiAlias(true); mMatrix = new Matrix(); mColorMatrix = new ColorMatrix(); mPaint.setColorFilter(new ColorMatrixColorFilter(mColorMatriX)); //绘制原图 mCanvas.drawBitmap(mBitmap,mMatrix,mPaint); mImageView.setImageBitmap(mModBitmap); } private class Redchangelistener implements OnSeekBarchangelistener{ @Override public void onProgressChanged(SeekBar seekBar,int progress,Boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { int progess = seekBar.getProgress(); mColorMatrix.set(new float[]{ progess /128.0f,1,}); mPaint.setColorFilter(new ColorMatrixColorFilter(mColorMatriX)); mCanvas.drawBitmap(mBitmap,mPaint); mImageView.setImageBitmap(mBitmap); } } private class Greenchangelistener implements OnSeekBarchangelistener{ @Override public void onProgressChanged(SeekBar seekBar,Boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { int progess = seekBar.getProgress(); mColorMatrix.set(new float[]{ 1,progess/128.0f,mPaint); mImageView.setImageBitmap(mModBitmap); } } private class Bluechangelistener implements OnSeekBarchangelistener{ @Override public void onProgressChanged(SeekBar seekBar,mPaint); mImageView.setImageBitmap(mModBitmap); } } private class Alphachangelistener implements OnSeekBarchangelistener{ @Override public void onProgressChanged(SeekBar seekBar,progess/50.0f,mPaint); mImageView.setImageBitmap(mModBitmap); } } //更改亮度 private class Lightchangelistener implements OnSeekBarchangelistener{ @Override public void onProgressChanged(SeekBar seekBar,Boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { int progess = seekBar.getProgress(); mColorMatrix.set(new float[]{ progess/128.0f,mPaint); mImageView.setImageBitmap(mModBitmap); } } }
更多关于Android相关内容感兴趣的读者可查看本站专题:《@L_616_30@》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
以上是大佬教程为你收集整理的Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法全部内容,希望文章能够帮你解决Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。