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

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

 更新時(shí)間:2017年10月16日 09:25:22   作者:CharlinGod  
這篇文章主要介紹了Android開發(fā)中使用顏色矩陣改變圖片顏色,透明度及亮度的方法,涉及Android針對(duì)圖片的讀取、運(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é)

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

相關(guān)文章

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

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

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

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

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

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

    這篇文章主要為大家詳細(xì)介紹了Android UI使用HorizontalListView實(shí)現(xiàn)水平滑動(dòng)效果,具有一定的參考價(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 個(gè)人理財(cái)工具三:添加賬單頁面 上

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

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

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

    這篇文章主要為大家介紹了Android?應(yīng)用程序的啟動(dò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

最新評(píng)論

齐河县| 申扎县| 辽阳县| 石台县| 固阳县| 唐河县| 南乐县| 三门峡市| 定日县| 晋州市| 布尔津县| 朝阳区| 墨玉县| 临颍县| 安泽县| 清水县| 武鸣县| 金坛市| 光山县| 望江县| 油尖旺区| 桑日县| 临邑县| 年辖:市辖区| 赞皇县| 达州市| 开原市| 锡林浩特市| 芷江| 监利县| 昌江| 芜湖市| 双江| 洛宁县| 玛多县| 和政县| 徐汇区| 筠连县| 游戏| 东港市| 平阴县|