下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android开发中如何使用颜色矩阵改变图片颜色,透明度及亮度
一、如图/upload/information/20200623/125/126242.jpg二、代码实现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,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,1,0,
});
mPaint.setColorFilter(new
ColorMatrixColorFilter(mColorMatrix));
mCanvas.drawBitmap(mBitmap,
mMatrix,
mPaint);
mImageView.setImageBitmap(mBitmap);
}
}
private
class
GreenChangeListener
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[]{
1,0,0,0,0,
0,progess/128.0f,0,0,0,
0,0,1,0,0,
0,0,0,1,0,
});
mPaint.setColorFilter(new
ColorMatrixColorFilter(mColorMatrix));
mCanvas.drawBitmap(mBitmap,
mMatrix,
mPaint);
mImageView.setImageBitmap(mModBitmap);
}
}
private
class
BlueChangeListener
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[]{
1,0,0,0,0,
0,1,0,0,0,
0,0,progess/128.0f,0,0,
0,0,0,1,0,
});
mPaint.setColorFilter(new
ColorMatrixColorFilter(mColorMatrix));
mCanvas.drawBitmap(mBitmap,
mMatrix,
mPaint);
mImageView.setImageBitmap(mModBitmap);
}
}
private
class
AlphaChangeListener
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[]{
1,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,progess/50.0f,0,
});
mPaint.setColorFilter(new
ColorMatrixColorFilter(mColorMatrix));
mCanvas.drawBitmap(mBitmap,
mMatrix,
mPaint);
mImageView.setImageBitmap(mModBitmap);
}
}
//更改亮度
private
class
LightChangeListener
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,0,0,0,0,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江苏财会职业学院单招综合素质考试题库及答案详解一套
- 2026年黔西南民族职业技术学院单招职业倾向性测试题库及参考答案详解1套
- 2026年安徽卫生健康职业学院单招职业适应性测试题库及答案详解1套
- 2026年辽宁省营口市单招职业倾向性考试题库参考答案详解
- 2026年晋中职业技术学院单招职业技能测试题库及参考答案详解一套
- 2026年渤海理工职业学院单招职业适应性测试题库附答案详解
- 护士人际交往面试题及答案
- 公立医院中医面试题目及答案
- 2025年招商银行绍兴分行社会招聘备考题库及参考答案详解一套
- 2025年中共南充市委网信办下属事业单位公开考调工作人员的备考题库及参考答案详解一套
- 《中餐宴会主题设计方案》
- 呼吸介入治疗进修报告
- 暨南大学《机器学习》2021-2022学年期末试卷
- 红薯创业项目计划书
- DB43 3001-2024 工业废水高氯酸盐污染物排放标准
- 五彩斑斓的世界
- 健美操运动智慧树知到期末考试答案2024年
- Web设计与应用智慧树知到期末考试答案2024年
- 中医院物业管理服务项目招标文件
- 营养支持在ICU的应用课件
- +山东省烟台市芝罘区2023-2024学年七年级上学期期末数学试卷(五四制)+
评论
0/150
提交评论