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

首頁 > 系統 > Android > 正文

Android 圖片的顏色處理實例代碼

2019-12-12 05:20:06
字體:
來源:轉載
供稿:網友

仿造美圖秀秀移動鼠標調整seekbar,調整圖片的顏色

項目布局如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical"  tools:context=".MainActivity" >  <SeekBar    android:id="@+id/sb1"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:max="255" />  <SeekBar    android:id="@+id/sb2"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:max="255" />  <SeekBar    android:id="@+id/sb3"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:max="255" />  <ImageView    android:id="@+id/iv"    android:layout_width="wrap_content"    android:layout_height="wrap_content" /></LinearLayout>

效果如下:

邏輯部分代碼如下:

package com.wuyudong.resize;import android.os.Bundle;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.ColorMatrix;import android.graphics.ColorMatrixColorFilter;import android.graphics.Matrix;import android.graphics.Paint;import android.view.Menu;import android.widget.ImageView;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;public class MainActivity extends Activity {  private ImageView iv1;  private SeekBar sb1, sb2, sb3;    private Bitmap alterBitmap;  private Canvas canvas;  private Paint paint;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    iv1 = (ImageView) findViewById(R.id.iv);    // 設置第一個bitmap的圖標    final Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),        R.drawable.ic_launcher);    // 新建一個bitmap    alterBitmap = Bitmap.createBitmap(bitmap1.getWidth(),        bitmap1.getHeight(), bitmap1.getConfig());    // 以alterBitmap為模板新建畫布    canvas = new Canvas(alterBitmap);    // 新建畫筆并設置屬性    paint = new Paint();    paint.setColor(Color.BLACK);    // 新建矩陣    final Matrix matrix = new Matrix();    // 指定顏色矩陣    final ColorMatrix cm = new ColorMatrix();        /**     * Set this colormatrix to identity:     * [ 1 0 0 0 0  - red vector     *  0 1 0 0 0  - green vector     *  0 0 1 0 0  - blue vector     *  0 0 0 1 0 ] - alpha vector     */    paint.setColorFilter(new ColorMatrixColorFilter(cm));    paint.setAntiAlias(true);    // 設置畫布    canvas.drawBitmap(bitmap1, matrix, paint);    iv1.setImageBitmap(alterBitmap);    sb1 = (SeekBar) findViewById(R.id.sb1);    sb2 = (SeekBar) findViewById(R.id.sb2);    sb3 = (SeekBar) findViewById(R.id.sb3);    sb1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {      @Override      public void onStopTrackingTouch(SeekBar seekBar) {        int progress = seekBar.getProgress();        cm.set(new float[]{            progress/128.0f, 0, 0, 0, 0,            0, 1, 0, 0, 0,            0, 0, 1, 0, 0,            0, 0, 0, 1, 0,        });        paint.setColorFilter(new ColorMatrixColorFilter(cm));        canvas.drawBitmap(bitmap1, matrix, paint);        iv1.setImageBitmap(alterBitmap);      }      @Override      public void onStartTrackingTouch(SeekBar seekBar) {      }      @Override      public void onProgressChanged(SeekBar seekBar, int progress,          boolean fromUser) {      }    });    sb2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {      @Override      public void onStopTrackingTouch(SeekBar seekBar) {        int progress = seekBar.getProgress();        cm.set(new float[]{            progress/128.0f, 0, 0, 0, 0,            0, 1, 0, 0, 0,            0, 0, progress/128.0f, 0, 0,            0, 0, 0, 1, 0,        });        paint.setColorFilter(new ColorMatrixColorFilter(cm));        canvas.drawBitmap(bitmap1, matrix, paint);        iv1.setImageBitmap(alterBitmap);      }      @Override      public void onStartTrackingTouch(SeekBar seekBar) {      }      @Override      public void onProgressChanged(SeekBar seekBar, int progress,          boolean fromUser) {      }    });    sb3.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {      @Override      public void onStopTrackingTouch(SeekBar seekBar) {        int progress = seekBar.getProgress();        cm.set(new float[]{            1, 0, 0, 0, 0,            0, 1, 0, 0, 0,            0, 0, progress/128.0f, 0, 0,            0, 0, 0, 1, 0,        });        paint.setColorFilter(new ColorMatrixColorFilter(cm));        canvas.drawBitmap(bitmap1, matrix, paint);        iv1.setImageBitmap(alterBitmap);      }      @Override      public void onStartTrackingTouch(SeekBar seekBar) {      }      @Override      public void onProgressChanged(SeekBar seekBar, int progress,          boolean fromUser) {      }    });  }}

運行效果:

出處:http://www.cnblogs.com/wuyudong/

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万盛区| 文安县| 栖霞市| 丘北县| 常熟市| 石柱| 莱西市| 承德县| 广西| 安庆市| 清苑县| 阆中市| 澄迈县| 大丰市| 都兰县| 当涂县| 江北区| 东乌| 彭泽县| 双桥区| 桂阳县| 清远市| 蒲江县| 吴忠市| 承德市| 桂林市| 康保县| 滦南县| 商南县| 资兴市| 修水县| 靖边县| 苏州市| 丰宁| 永靖县| 龙井市| 织金县| 霍州市| 宜春市| 郯城县| 陆丰市|