自定义控件实现imageview的点击效果

本文探讨如何为动态加载图片的Imageview实现点击效果。通常在ListView等控件中,会给itemview设置整体点击效果。但有时需要Imageview自身显示点击状态,如豆瓣阅读书列表。通过继承Imageview并在onDraw和onTouchEvent中处理,结合dispatchSetPressed方法和ColorFilter,可以实现对所有图片形状的点击变暗效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义控件给Imageview设置点击效果

Imageview的点击效果,可能是个很容易被忽视的问题。

对于本地图片的点击效果,可以准备两张图片,加selector实现。
但是如果是动态加载来的图片呢?动态加载图片的一般应用场景都是在listview等控件中,这个时候通常是给itemview整体设置点击效果,而通常不需要imageview反馈点击效果。这个效果我就不举例了,有点开发经验的应该都很熟练了。

但是有时候我们需要Imageview来显示点击的效果,当itemview中Imageview控件作为主体占据全部或者绝大多数面积的时候。

比如豆瓣阅读中书列表

图片阴影点击

来分析下这种效果的实现逻辑,最直接能想到的就是继承view,然后在onDraw方法里画图片,监听onTouchEvent事件改变绘制内容的状态。但是我们已经有了Imageview这个现成的类为我们做好了许多工作,所以本文采用继承自Imageview的方式。Imageview内容的绘制当言也是在onDraw方法中,关于点击事件的触发处理,当言也可以放在onTouchEvent方法中,但是我阅读了下view的源码发现有一个天然的回调方法dispatchSetPressed,或许可以一试。

选好了内容改变的时机,接下来就是内容改变的方式。我第一个想法图片变暗就像多绘制了一层透明的黑色,代码如下

@Override
    protected void onDraw(Canvas canvas) {
  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值