自定义控件给Imageview设置点击效果
Imageview的点击效果,可能是个很容易被忽视的问题。
对于本地图片的点击效果,可以准备两张图片,加selector实现。
但是如果是动态加载来的图片呢?动态加载图片的一般应用场景都是在listview等控件中,这个时候通常是给itemview整体设置点击效果,而通常不需要imageview反馈点击效果。这个效果我就不举例了,有点开发经验的应该都很熟练了。
但是有时候我们需要Imageview来显示点击的效果,当itemview中Imageview控件作为主体占据全部或者绝大多数面积的时候。
比如豆瓣阅读中书列表
来分析下这种效果的实现逻辑,最直接能想到的就是继承view,然后在onDraw方法里画图片,监听onTouchEvent事件改变绘制内容的状态。但是我们已经有了Imageview这个现成的类为我们做好了许多工作,所以本文采用继承自Imageview的方式。Imageview内容的绘制当言也是在onDraw方法中,关于点击事件的触发处理,当言也可以放在onTouchEvent方法中,但是我阅读了下view的源码发现有一个天然的回调方法dispatchSetPressed,或许可以一试。
选好了内容改变的时机,接下来就是内容改变的方式。我第一个想法图片变暗就像多绘制了一层透明的黑色,代码如下
@Override