最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年10月16日 09:25:22   作者:CharlinGod  
這篇文章主要介紹了Android開發(fā)中使用顏色矩陣改變圖片顏色,透明度及亮度的方法,涉及Android針對圖片的讀取、運(yùn)算、設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下

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

一、如圖

二、代碼實(shí)現(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);
  }
 }
}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

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

相關(guān)文章

  • Android自定義View實(shí)現(xiàn)隨手勢滑動控件

    Android自定義View實(shí)現(xiàn)隨手勢滑動控件

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)隨手勢滑動的控件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • ListView的Adapter使用 之 初學(xué)ArrayAdapter String

    ListView的Adapter使用 之 初學(xué)ArrayAdapter String

    ListView是Android中經(jīng)常會使用的東西,綁定數(shù)據(jù)對于初學(xué)者來說,尤其是剛接觸編程的人來說,往往會覺得很難理解,我上大二的時(shí)候?qū)W的java,但是基本上相當(dāng)于沒有學(xué),什么都沒寫過,真正接觸編程就是開始上手學(xué)android,把這些記錄下來,自己可以回頭看下,也可以讓新手更好的理解
    2013-06-06
  • Android UI使用HorizontalListView實(shí)現(xiàn)水平滑動

    Android UI使用HorizontalListView實(shí)現(xiàn)水平滑動

    這篇文章主要為大家詳細(xì)介紹了Android UI使用HorizontalListView實(shí)現(xiàn)水平滑動效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • android實(shí)現(xiàn)圖片裁剪的兩種方法

    android實(shí)現(xiàn)圖片裁剪的兩種方法

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)圖片裁剪的兩種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Android SQLite數(shù)據(jù)庫增刪改查操作的使用詳解

    Android SQLite數(shù)據(jù)庫增刪改查操作的使用詳解

    本篇文章介紹了,在Android中SQLite數(shù)據(jù)庫增刪改查操作的使用詳解。需要的朋友參考下
    2013-04-04
  • Android 個人理財(cái)工具三:添加賬單頁面 上

    Android 個人理財(cái)工具三:添加賬單頁面 上

    本文主要介紹Android 個人理財(cái)工具添加賬單頁面的功能實(shí)現(xiàn),這里提供實(shí)例代碼和實(shí)現(xiàn)效果圖,有興趣的小伙伴可以參考下
    2016-08-08
  • Android?應(yīng)用程序的啟動流程示例詳解

    Android?應(yīng)用程序的啟動流程示例詳解

    這篇文章主要為大家介紹了Android?應(yīng)用程序的啟動流程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Android實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳

    Android實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Android自定義彩色織帶分割線

    Android自定義彩色織帶分割線

    這篇文章主要為大家詳細(xì)介紹了Android自定義彩色織帶分割線的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android 七種進(jìn)度條的樣式

    Android 七種進(jìn)度條的樣式

    在開發(fā)中我們經(jīng)常要用到進(jìn)度條顯示下載或者加載的進(jìn)度。系統(tǒng)自帶的黃色進(jìn)度條在UI效果上經(jīng)常不能滿足策劃或者美工的要求。這就要我們屌絲程序員自己自定義進(jìn)度條,下面小編給大家介紹Android 七種進(jìn)度條的樣式,需要的朋友可以參考下
    2015-08-08

最新評論

琼中| 宁阳县| 尤溪县| 博客| 富平县| 佛坪县| 刚察县| 那坡县| 南陵县| 和田县| 柳河县| 丹巴县| 马公市| 平江县| 兴仁县| 运城市| 青阳县| 云浮市| 蛟河市| 柳江县| 盐边县| 伽师县| 东乡族自治县| 乌海市| 依安县| 准格尔旗| 鄂州市| 遂川县| 莲花县| 凤凰县| 封开县| 诏安县| 芦溪县| 闻喜县| 阿图什市| 葵青区| 宣恩县| 鸡东县| 宜宾县| 开封县| 兴文县|