android自定义view-强大的点击灰色背景imageview

这篇博客介绍了如何在Android中创建一个自定义ImageView,实现类似微信朋友圈图片点击后显示灰色蒙版的效果。文章通过分析继承ImageView、重写构造方法和处理触摸事件等步骤,详细讲解了实现这一功能的思路和代码实现,并探讨了Android视图的生命周期和图片加载框架的选择。
摘要由CSDN通过智能技术生成

前言:

微信作为很火的社交平台广受大众推崇,作为开发者不仅要学会使用软件,更重要的是要琢磨那些吸引人的控件的研发思路。刷了好久的朋友圈,作为一个安卓开发者来说,朋友圈九宫格的图片显示,以及点击图片会有灰色蒙板的效果吸引了我,为了方便大家,也为了给自己温习知识,写下这篇博文。

效果图:


就是这样的效果!

正文:

今天我们就来实现这样的一个效果,在我们动笔写代码之前,我们必须要理清自己的思路,不能一开始就盲目的去写代码,磨刀不误砍柴工。我们唯一能够确定的是,继承自imageview。然后呢?然后重写构造方法,由于用到了点击,所以还要去手动处理一下onTouchEvent方法。看似困难的问题处理起来也会游刃有余了。想法都是对的,其实我们还少分析一个问题,图片会分为本地和远程两种形式,这样的图片如何去加一个灰色的蒙板,远程图片又如何加载呢?带着这些个问题,我们来一一探寻答案。

思考一:继承ImageView

public class GrayScaleImageView extends ImageView 


思考二:重写构造方法

public GrayScaleImageView(Context context) {
		super(context);
	}

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

	public GrayScaleImageView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}
我没有进行一些初始化操作,因为这里还没有什么需要初始化。

思考三:处理onTouchEvent事件

@Override
	public boolean onTouchEvent(MotionEvent event) {
		Drawable drawable = getDrawable();
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			if (drawable != null) {
				// drawable.mutate使得此drawable共享状态,改变时全部改变
				drawable.mutate().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
			}
			break;
		case MotionEvent.ACTION_MOVE:
			break;
		case MotionEvent.ACTION_CANCEL:
		case MotionEvent.ACTION_UP:
			if (drawable != null) {
				drawable.mutate().clearColorFilter();
			}
			break;
		}
		return true;
		// return super.onTouchEvent(event);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值