顯示濾鏡效果的ImageView,主要用於ImageView點擊效果。
場景:APP圖標、功能按鈕點擊後顯示不同的效果。
- 同一張圖片:加一個濾鏡,此處最爲合適
不同不填:點擊前後的selector選擇
上代碼:
/**
* @author LinJ
* @ClassName: ThumbnailView
* @Description: 點擊時顯示明暗變化(濾鏡效果)的ImageView
*/
public class FilterImageView extends ImageView {
public FilterImageView(Context context) {
super(context);
}
public FilterImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FilterImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
//在按下事件中設置濾鏡
setFilter();
break;
case MotionEvent.ACTION_UP:
//由於捕獲了Touch事件,需要手動觸發Click事件
performClick();
case MotionEvent.ACTION_CANCEL:
//在CANCEL和UP事件中清除濾鏡
removeFilter();
break;
default:
break;
}
return true;
}
/**
* 設置濾鏡
*/
private void setFilter() {
//先獲取設置的src圖片
Drawable drawable = getDrawable();
//當src圖片爲Null,獲取背景圖片
if (drawable == null) {
drawable = getBackground();
}
if (drawable != null) {
//設置濾鏡
drawable.setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
}
}
/**
* 清除濾鏡
*/
private void removeFilter() {
//先獲取設置的src圖片
Drawable drawable = getDrawable();
//當src圖片爲Null,獲取背景圖片
if (drawable == null) {
drawable = getBackground();
}
if (drawable != null) {
//清除濾鏡
drawable.clearColorFilter();
}
}
}
佈局文件文件中直接使用:
<cn.quanshang.wuxian.wireless.img.widget.FilterImageView
android:id="@+id/title_back"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:scaleType="fitCenter"
android:src="@drawable/title_back" />