2019独角兽企业重金招聘Python工程师标准>>>
package com.example.colorchange;
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.ColorFilter;
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 implements OnSeekBarChangeListener
{
private SeekBar bar_R,bar_G,bar_B,bar_Alpha,bar_sat;
private ImageView iv;
private Bitmap map;
float rR=1,G=1,B=1,A=1,sat=1;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.iv);
bar_R=(SeekBar) findViewById(R.id.seekBar_R);
bar_G=(SeekBar) findViewById(R.id.seekBar_G);
bar_B=(SeekBar) findViewById(R.id.seekBar_B);
bar_Alpha=(SeekBar) findViewById(R.id.seekBar_Alpha);
bar_sat=(SeekBar) findViewById(R.id.seekBar_sat);
bar_R.setOnSeekBarChangeListener(this);
bar_G.setOnSeekBarChangeListener(this);
bar_B.setOnSeekBarChangeListener(this);
bar_Alpha.setOnSeekBarChangeListener(this);
bar_sat.setOnSeekBarChangeListener(this);
map = BitmapFactory.decodeResource(getResources(), R.drawable.girl_before).
copy(Bitmap.Config.ARGB_8888, true);
iv.setImageBitmap(map);
}
private void changeColor(float R,float G,float B,float Alpha,float sat)
{
Bitmap finalmap=Bitmap.createBitmap(map.getWidth(), map.getHeight(), Bitmap.Config.ARGB_8888);
ColorMatrix cm=new ColorMatrix();
cm.set(new float[]{
R,0,0,0,0,
0,G,0,0,0,
0,0,B,0,0,
0,0,0,Alpha,0
});
//修改饱和度api,测试时候懒省事,与set方法冲突 不可同时使用,原因见api源码
// cm.setSaturation(sat);
Canvas canvas = new Canvas(finalmap);
Paint paint = new Paint();
paint.setStrokeWidth(5);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
paint.setColor(Color.BLACK);
Matrix matrix = new Matrix();
canvas.drawBitmap(map, matrix, paint);
iv.setImageBitmap(finalmap);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
if(seekBar==bar_R)
{
rR=progress/128f;
}
if(seekBar==bar_G)
{
G=progress/128f;
}
if(seekBar==bar_B)
{
B=progress/128f;
}
if(seekBar==bar_Alpha)
{
A=1-progress/100f;
}
if(seekBar==bar_sat)
{
sat=progress/100f;
}
changeColor(rR, G, B, A,sat);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar)
{
}
@Override
public void onStopTrackingTouch(SeekBar seekBar)
{
}
}