国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android開(kāi)發(fā)中使用顏色矩陣改變圖片顏色,透明度及亮度的方法

2019-10-22 18:25:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Android開(kāi)發(fā)中使用顏色矩陣改變圖片顏色,透明度及亮度的方法。分享給大家供大家參考,具體如下:

一、如圖

Android,顏色矩陣,圖片,顏色,透明度,亮度

二、代碼實(shí)現(xiàn)

public class ColorImageActivity extends Activity { private ImageView mImageView; private SeekBar mSBRed,mSBGreen,mSBBlue,mSBAlpha,mSBLight; //修改后的圖片 private Bitmap mModBitmap; //畫(huà)布 private Canvas mCanvas; //畫(huà)筆 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());  //創(chuàng)建原圖  mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.mm0);  //創(chuàng)建修改的圖  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,     0,progess/128.0f,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);  } }}

 

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開(kāi)發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 夹江县| 洛隆县| 诸城市| 广元市| 许昌市| 鞍山市| 永平县| 浙江省| 怀远县| 郯城县| 介休市| 五大连池市| 吕梁市| 大安市| 元朗区| 丹寨县| 徐州市| 剑川县| 额济纳旗| 汝阳县| 旬邑县| 崇仁县| 华阴市| 岗巴县| 正镶白旗| 错那县| 会同县| 凯里市| 威信县| 东丽区| 威宁| 新和县| 肥东县| 巴彦县| 房产| 瑞丽市| 修文县| 广灵县| 青冈县| 沅陵县| 禹城市|