点击图片自动变色
package com.example.imagelTint;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.StateListDrawable;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.graphics.drawable.DrawableCompat;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
@SuppressLint("AppCompatCustomView")
public class MyImageView extends ImageButton {
public static final int GET_DATA_SUCCESS = 1;
public static final int NETWORK_ERROR = 2;
public static final int SERVER_ERROR = 3;
private Bitmap mBitmap;
//子线程不能操作UI,通过Handler设置图片
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case GET_DATA_SUCCESS:
Bitmap bitmap = (Bitmap) msg.obj;
setImageBitmap(bitmap);
break;
case NETWORK_ERROR:
Toast.makeText(getContext(),"网络连接失败",Toast.LENGTH_LONG);
break;
case SERVER_ERROR:
Toast.makeText(getContext(),"服务器发生错误",Toast.LENGTH_LONG);
break;
}
}
};
public MyImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}
public MyImageView(Context context) {
super(context);
initView();
}
public MyImageView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
private void initView(){
Drawable src = MyImageView.this.getDrawable();
MyImageView.this.setImageDrawable(tintDrawable(src));
MyImageView.this.setClickable(true);
// 设置可以点击
}
private Drawable tintDrawable(Drawable normal) {
final Drawable press = DrawableCompat.wrap(normal);
final StateListDrawable draw = new StateListDrawable();
draw.addState(new int[]{-android.R.attr.state_pressed},getResources().getDrawable(R.drawable.batman));
DrawableCompat.setTint(press, 0x4bFF00FF);
draw.addState(new int[]{android.R.attr.state_pressed},normal);
return draw;
}
//设置网络图片
public void setImageURL(final String path) {
//开启一个线程用于联网
new Thread() {
@Override
public void run() {
try {
//把传过来的路径转成URL
URL url = new URL(path);
//获取连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//使用GET方法访问网络
connection.setRequestMethod("GET");
//超时时间为10秒
connection.setConnectTimeout(10000);
//获取返回码
int code = connection.getResponseCode();
if (code == 200) {
InputStream inputStream = connection.getInputStream();
//使用工厂把网络的输入流生产Bitmap
mBitmap = BitmapFactory.decodeStream(inputStream);
//利用Message把图片发给Handler
Message msg = Message.obtain();
msg.obj = mBitmap;
msg.what = GET_DATA_SUCCESS;
handler.sendMessage(msg);
inputStream.close();
}else {
//服务启发生错误
handler.sendEmptyMessage(SERVER_ERROR);
}
} catch (IOException e) {
e.printStackTrace();
//网络连接错误
handler.sendEmptyMessage(NETWORK_ERROR);
}
}
}.start();
}
/**
* 获取网络图片Bitmap
*/
public Bitmap getBitmap() {
return mBitmap;
}
}
修改色调,饱和度,亮度,参考:https://blog.csdn.net/u010542146/article/details/50538335/

浙公网安备 33010602011771号