仿造美图秀秀移动鼠标调整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" ><SeekBarandroid:id="@+id/sb1"android:layout_width="match_parent"android:layout_height="wrap_content"android:max="255" /><SeekBarandroid:id="@+id/sb2"android:layout_width="match_parent"android:layout_height="wrap_content"android:max="255" /><SeekBarandroid:id="@+id/sb3"android:layout_width="match_parent"android:layout_height="wrap_content"android:max="255" /><ImageViewandroid: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;@Overrideprotected 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);// 新建一个bitmapalterBitmap = 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() {@Overridepublic 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);}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {}});sb2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {@Overridepublic 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);}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {}});sb3.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {@Overridepublic 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);}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {}});}}
运行效果:

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