这里就拿常见的密码查看做示例,平时密码段都会有个小按钮,按下可以看到密码内容,松开可以隐藏内容。
//在Pwd的点击事件里进行MotionEvent操作
Pwd.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP://松开事件发生后执行代码的区域
Log.e(TAG,"密码不可见");
imgShowLoginPwd.setImageResource(R.drawable.icon_pwd_hind);
edtLoginPw.setTransformationMethod(PasswordTransformationMethod.getInstance());//此处设置密码不可见
break;
case MotionEvent.ACTION_DOWN://按住事件发生后执行代码的区域
Log.e(TAG,"密码可见");
imgShowLoginPwd.setImageResource(R.drawable.icon_pwd_show);
edtLoginPw.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//此处设置密码可见
break;
default:
break;
}
return true;
}
});
注意 onTouch方法中返回值应修改为true 否则当前图标的按压事件中只能消费MotionEvent.ACTION_DOWN事件,而MotionEvent.ACTION_UP事件将不消费。当然按下松开不仅能用来看密码,还可以做其他的事,更改的话只需要在两事件执行代码的区域进行逻辑编写即可。
还有一个问题就是,对此按钮进行这样操作之后,按下弹起就看不到按钮的变化,就会怀疑是不是没按到。因此可以去我的另一篇学习笔记里看一下按钮背景变化:自定义按钮点击状态变化_d563549055的博客-CSDN博客