仿微信朋友圈图片按下效果

在玩微信朋友圈时,发现每个图片的按下后,图片都会有一个变暗的效果,当时一想,做个selector应该就可以了,可是你每一张图片都是服务器拉取的,怎么去做selector,那在按下的时候我给每一张图片都加一个蒙层呢,是不是也可以解决,可是这个办法也太低端了。有什么别的办法吗?我直接去操作图片,让图片的颜色变暗就行了·····

自定义了一个图片的控件,别的不说  贴代码:

package com.huawei.pictureclick;

import android.content.Context;
import android.graphics.ColorMatrixColorFilter;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ImageView;

public class DarkImageView extends ImageView {
	
	/**
	 * 选中时,图片的颜色矩阵,将每个颜色值的色度降低50,达到图片变暗的效果
	 */
	 public final float[] BT_SELECTED = new float[] { 
			 1, 0, 0, 0,-50,
			 0, 1, 0, 0, -50, 
			 0, 0, 1, 0, -50, 
			 0, 0, 0, 1, 0 }; 
	 
	 /**
	  * 未选中时,将图片的颜色值还原
	  */
     public final float[] BT_NOT_SELECTED = new float[] { 
    		 1, 0, 0, 0, 0,
    		 0, 1, 0, 0, 0, 
    		 0, 0, 1, 0, 0, 
    		 0, 0, 0, 1, 0 };  
       

	public DarkImageView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		init();
	}

	public DarkImageView(Context context, AttributeSet attrs) {
		super(context, attrs);
		init();
	}

	public DarkImageView(Context context) {
		super(context);
		init();
	}

	private void init() {
		this.setClickable(true);
	}
	
	/**
	 * 重写onTouchEvent方法,当手指在按下后,图片变暗,当手指抬起时,图片回复原样并响应自己的点击事件
	 */
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			this.setColorFilter( new ColorMatrixColorFilter(BT_SELECTED) ) ;
			break;
		case MotionEvent.ACTION_MOVE:
			this.setColorFilter( new ColorMatrixColorFilter(BT_SELECTED) ) ;
			break;
		case MotionEvent.ACTION_UP:
			this.setColorFilter( new ColorMatrixColorFilter(BT_NOT_SELECTED) ) ;
			if(picClickListener != null){
				picClickListener.click();
			}
			break;

		default:
			break;
		}
		return true;
	}
	
	private OnPicClickListener picClickListener;
	public interface OnPicClickListener{
		void click();
	}
	public OnPicClickListener getPicClickListener() {
		return picClickListener;
	}

	public void setPicClickListener(OnPicClickListener picClickListener) {
		this.picClickListener = picClickListener;
	}
	
	
}

代码很简单,在使用中就是普通ImageView控件的使用,也可以给他设置点击事件,后面如何使用的代码就没必要写了。PS:感谢同学贾我斌的贡献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值