濾鏡效果的ImageView

顯示濾鏡效果的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" />
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章