Android 自定义View、ViewGroup 实战训练之ClearEditText
来源:互联网 发布:apache开启https 编辑:程序博客网 时间:2024/05/16 15:20
自定义ClearEditText用的场景还是比较多的,比如搜索框、登陆界面都可能用到,下面我们就来动手做一个!如果你看着有点吃力,建议先看我上一篇文章《Android 自定义View、ViewGroup(二)之绘制流程》
1.自定义View其中的一种形式就是继承现有的控件EditText,重写构造方法。
public ClearEditText(Context context) { super(context); init(); } public ClearEditText(Context context, AttributeSet attrs) { super(context, attrs); init(); } public ClearEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); }2.我们来看一下init方法
public void init() { // 获取输入框上下左右组成的一个drawable数组 drawables[left, top, right,bottom] Drawable[] drawables = this.getCompoundDrawables(); mRightDrawable = drawables[2]; // 设置获取焦点的监听 setOnFocusChangeListener(this); // 设置文本变化的监听 addTextChangedListener(this); setClearDrawableVisible(false); }3, 通过触摸的范围来确定是否点击了删除按钮
@Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: boolean isClean = (event.getX() > (getWidth() - getTotalPaddingRight())) && (event.getX() < (getWidth() - getPaddingRight())); if (isClean) setText(""); break; } return super.onTouchEvent(event); }
4. 设置删除按钮的隐藏和显示
private void setClearDrawableVisible(boolean isVisible) { setCompoundDrawables(getCompoundDrawables()[0], getCompoundDrawables()[1], isVisible ? mRightDrawable : null, getCompoundDrawables()[3]);}
5.如果输入的为空,就播放一个动画
public void setShakeAnimation(){ this.setAnimation(shakeAnimation(5)); } public Animation shakeAnimation(int CycleTimes) { Animation translateAnimation = new TranslateAnimation(0, 10, 0, 10); //设置动画插入器 translateAnimation.setInterpolator(new CycleInterpolator(CycleTimes)); translateAnimation.setDuration(1000); return translateAnimation; }
下载Demo请猛戳
0 0
- Android 自定义View、ViewGroup 实战训练之ClearEditText
- Android 自定义View、ViewGroup 实战训练之CustomFrameDialog
- Android 自定义View、ViewGroup 实战训练之CircleProgress
- android 自定义View开发实战(三) 自定义ViewGroup--FourLayout
- android 自定义 view 之ViewGroup(四)
- android自定义View(viewGroup)
- android自定义View、ViewGroup
- Android开发之自定义View专题(四):自定义ViewGroup
- Android 之 View ViewGroup
- Android 自定义View 和 ViewGroup
- Android 自定义View和ViewGroup
- Android自定义View和ViewGroup
- Android 自定义View、ViewGroup(一)之工作原理
- Android 自定义View、ViewGroup(二)之绘制流程
- android之自定义ViewGroup
- Android之自定义ViewGroup
- Android之自定义ViewGroup
- Android之自定义ViewGroup
- iOS 日期格式
- ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails...问题解决
- Java Socket实战之五 使用加密协议传输对象
- 文本编辑器nano使用(一)
- zoj 2110 很好的dfs+奇偶剪枝
- Android 自定义View、ViewGroup 实战训练之ClearEditText
- 只是让图片显示一部分
- Android的一些知识---生生不息
- IoC框架----理论部分
- php修改文件上传大小限制
- 谷歌官方文档之如何高效展示Bitmap (Google Displaying Bitmaps Efficiently)
- 使用MyEclipse反向编程工具
- Linux socket 测试
- struts2中Convention中的basePackage与locators配置种种