今天在优化项目的时候,思考了一下能不能给layout textview imageview加一些点击效果呢。
下面有好几种layout textview imageview点击效果的实现方法:
- 定义drawable的两种shape,一个按压xml一个正常xml文件(此方法不通用,比如有倒圆角的背景就得重新定义)
- 也是定义drawable,使用5.0之后的波纹效果(Ripple)
- 外面套一层带透明度的蒙层实现
- view的alpha值改变来实现
本文使用方法4 通过改变view的alpha值仿效点击效果。逻辑很简单,先监听OnTouchListener在onTouch(View v, MotionEvent event)返回方法中,先判断可点击v.isEnabled() == true时再进行判断event.getAction()为ACTION_DOWN时将alpha设置为对应的透明度,为ACTION_UP、ACTION_CANCEL时将alpha设置为正常值1.0f(自行设置,我使用的是0.6f)。
别逼逼,上代码----->
/**
* Created by yvan on 2019-08-02.
*/
public class AlphaHelper {
/**
* 设置view点击效果
* @param v
*/
public static void setPassAlpha(View v){
v.setOnTouchListener(onTouchChangeOpacityListener);
}
/**
* touch监听 触摸事件按下 抬起
*/
private static View.OnTouchListener onTouchChangeOpacityListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.isEnabled()) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
v.setAlpha(0.6f);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
v.setAlpha(1f);
break;
}
}
return false;
}
};
}
温馨提示:请注意你的OnTouchListener是否已经被监听了,如果其他地方需要使用OnTouchListener那就只能将OnTouchListener再传出去。