小編給大家分享一下Android開發(fā)中如何使用顏色矩陣改變圖片顏色,透明度及亮度,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、農(nóng)安網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5開發(fā)、商城網(wǎng)站定制開發(fā)、集團公司官網(wǎng)建設、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為農(nóng)安等各大城市提供網(wǎng)站開發(fā)制作服務。
具體如下:
一、如圖
二、代碼實現(xiàn)
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()); //創(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); } } }
以上是“Android開發(fā)中如何使用顏色矩陣改變圖片顏色,透明度及亮度”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!