付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高温限时工作方案范文
- 怀化市鹤城区2027届数学三上期末学业水平测试试题含解析
- 海岛景点建设方案
- 2026年制造业供应链管理升级方案
- 学生营养餐配送与家庭互动教育方案
- 支援派出所实施方案
- 2021小学实施方案
- 康复医疗器械产品研发团队技术攻关方案
- 半导体材料加工自动化方案设计
- 黑龙江省哈尔滨市尚志市2027届数学三上期末学业水平测试试题含解析
- 2025年国企财务岗招聘笔试题及答案
- (2026年)教师招聘教育学心理学试题及答案试卷
- 腾讯云WorkBuddy使用教程
- 2025年临期药品零售终端销售模式创新报告
- 2026年胸心外科学(副高013)高级职称历年真题题库(含答案详解)
- 人教版七年级数学上册作业设计
- DL-T+1752-2017热电联产机组设计能效指标计算方法
- GB/T 6346.1-2024电子设备用固定电容器第1部分:总规范
- 雷火灸讲义课件
- 第三届全国生态环境监测专业技术人员大比武理论考试题库(必会500题)
- 加工中心电路图(西门子)
评论
0/150
提交评论