首先我来给大家展示一下我的整体效果:
我们要用到的是ColorMatrix,ColorMatrix的三个方法:
setRotate:调整色相
setSaturation:调整色彩饱和度
setScale:调整灰度
postConcat这个的话就是我们把上面三个方法设置的叠加在一块的效果
在这里我需要给大家解释一下,我们的原图片是没有办法给它设置任何滤镜,所以我们使用的是 我们把调节好的图片重新设置到原图片的位置,那么就用到了:
下面这个是对三个进度条通过改变进度来设置图片的事件:
如果图片不为空的话,重新设置图片:
下面就是我的完整demo:
MainActivity类:
package com.example.bitmap;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatSeekBar;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.ImageView;
import android.widget.SeekBar;
import com.example.bitmap.Adapter.myRecyclerViewAdapter;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener, myRecyclerViewAdapter.AffordPosition {
private ImageView mimageView;
private AppCompatSeekBar mRotateSeekBar;
private AppCompatSeekBar mSaturationSeekBar;
private AppCompatSeekBar mScaleSeekBar;
private Bitmap mBitmap;
private Bitmap bitmap1;
private float mRotate;
private float mSaturation;
private float mScale;
private static int MIN_PROGRESS = 128;
private static int MAX_PROGRESS = 255;
private RecyclerView recyclerView;
private List<bean> beans = new ArrayList<>();
private List<float[]> floats = new ArrayList<>();
private List<String> stringList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//设置进度条的最大限度
mRotateSeekBar.setMax(MAX_PROGRESS);
mSaturationSeekBar.setMax(MAX_PROGRESS);
mScaleSeekBar.setMax(MAX_PROGRESS);
//设置当前默认的进度
mRotateSeekBar.setProgress(MIN_PROGRESS);
mSaturationSeekBar.setProgress(MIN_PROGRESS);
mScaleSeekBar.setProgress(MIN_PROGRESS);
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.qx2);
bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.kqz33);
//数据源
for (int i = 0; i < floats.size(); i++) {
Bitmap bitmap = getBit(bitmap1,floats.get(i));
bean bean = new bean(stringList.get(i), bitmap);
beans.add(bean);
}
//适配器
myRecyclerViewAdapter myRecyclerView = new myRecyclerViewAdapter(this, beans);
recyclerView.setAdapter(myRecyclerView);
myRecyclerView.setAffordPush(this);
}
//初始化
private void initView() {
mimageView = (ImageView) findViewById(R.id.imageView);
mRotateSeekBar = (AppCompatSeekBar) findViewById(R.id.seekBar_rotate);
mSaturationSeekBar = (AppCompatSeekBar) findViewById(R.id.seekBar_saturation);
mScaleSeekBar = (AppCompatSeekBar) findViewById(R.id.seekBar_scale);
mRotateSeekBar.setOnSeekBarChangeListener(this);
mSaturationSeekBar.setOnSeekBarChangeListener(this);
mScaleSeekBar.setOnSeekBarChangeListener(this);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(linearLayoutManager);
floats.add(BeautyUtil.colormatrix_hei