国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 沈阳市| 贡嘎县| 泗阳县| 河源市| 辛集市| 江门市| 克什克腾旗| 隆安县| 西和县| 铜川市| 响水县| 泊头市| 宁南县| 宁波市| 许昌市| 独山县| 大连市| 壶关县| 方山县| 台州市| 济宁市| 祥云县| 祁连县| 垣曲县| 牙克石市| 岢岚县| 台南县| 嘉善县| 调兵山市| 合山市| 疏勒县| 乐安县| 海原县| 木兰县| 夏邑县| 德清县| 香格里拉县| 巴青县| 永丰县| 突泉县| 丰顺县|