Android 颜色矩阵 滤镜 ColorMatrix (复古,蓝调,淡雅,传统,胶片,怀旧,浪漫等)你想要的滤镜

 

 

 

首先我来给大家展示一下我的整体效果:

我们要用到的是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(
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值