EditText实现“眼睛”效果
来源:互联网 发布:有深度的新闻软件知乎 编辑:程序博客网 时间:2024/04/29 01:12
EditText作为密码输入框时,常在右侧有一个眼睛的图片,以便于向用户展示密码,百度了一下多是通过自定义EditText实现的;这里换个思路通过EditText的drawableRight实现。
1.准备个EditText
<EditText android:id="@+id/et_pwd" android:paddingRight="10dp" android:drawableRight="@drawable/lol_icon_eye_close" // 默认关闭的眼睛,这里要先设置图片,以便于调整大小 android:inputType="textPassword" .../>
2.实现眼睛开闭
private boolean isHidePwd = true;// 输入框密码是否是隐藏的,默认为trueprivate void initView(){...et_pwd = (EditText) view.findViewById(R.id.et_pwd);final Drawable[] drawables = et_pwd.getCompoundDrawables() ;final int eyeWidth = drawables[2].getBounds().width() ;// 眼睛图标的宽度final Drawable drawableEyeOpen = getResources().getDrawable(R.drawable.lol_icon_eye_open) ;drawableEyeOpen.setBounds(drawables[2].getBounds());//这一步不能省略et_pwd.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP){ // getWidth,getHeight必须在这里处理 float et_pwdMinX = v.getWidth() - eyeWidth - et_pwd.getPaddingRight() ; float et_pwdMaxX = v.getWidth() ; float et_pwdMinY = 0 ; float et_pwdMaxY = v.getHeight(); float x = event.getX() ; float y = event.getY() ; if(x < et_pwdMaxX && x > et_pwdMinX && y > et_pwdMinY && y < et_pwdMaxY){ // 点击了眼睛图标的位置 isHidePwd = !isHidePwd ; if(isHidePwd){ et_pwd.setCompoundDrawables(drawables[0] , drawables[2] , drawables[3]); et_pwd.setTransformationMethod(PasswordTransformationMethod.getInstance()); } else { et_pwd.setCompoundDrawables(drawables[0] , drawableEyeOpen , drawables[3]); et_pwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); } } } return false; } });...}
3.两个眼睛图片(放在drawable-hdpi中即可)
1 0
- EditText实现“眼睛”效果
- EditText实现抖动效果
- android 实现点击edittext的“小眼睛”切换明密文
- EditText+ListView实现AutoCompleteTextView效果
- 基于HTML5陀螺仪实现ofo首页眼睛移动效果
- 实现带清除效果的EditText
- android_实现EditText的抖动效果
- 实现带清除效果的EditText
- scrollview+edittext实现批量输入效果
- Android实现眼睛一闪一闪的效果,使用layerdrawable,类似GIF图片效果
- Android EditText 文本框实现搜索和清空效果
- Android自定义EditText,实现分割输入内容效果
- Android自定义EditText,实现分割输入内容效果
- android editText实现没有边框,没有背景的效果
- 自定义EditText实现输入错误变红的效果
- 自定义EditText实现未输入文字动画提醒效果
- Android EditText实现可横向滑动TextView效果
- EditText结合过滤器Fileter实现数据过滤效果的设计
- Android设计模式之 工厂方法模式
- MySQL----mysql 类封装
- 无人机飞控平台ArduPilot源码入门教程 — 例子
- php中is_dir、is_file、file_exits的区别
- mysql数据库设计优化
- EditText实现“眼睛”效果
- 【生活健康】你的年纪每天睡几小时最好
- fastjson+easyui tree
- su,su -,sudo之区别
- android开发仿IOS滑动开关
- Java细节:字符串的拼接
- 接口和抽象类的区别
- 追着嘟嘟学c#系列入门第十四篇-----c#的二维数组【蓝鸥出品】
- jQuery实现购物车功能