引文
像AndroidUtilCode这样优秀的库替我管理了工具类,大大提高了我工作的效率,现在工具类终于解放了双手,这得益于AndroidUtilCode,每当构建新项目,只需要一行代码就可以把需要的工具类引用进来,而且这个库还保持着活跃的更新,更多的人在参与进去,开源的力量让AndroidUtilCode变得愈加强大,也使更多的android开发者收益,再次感谢。
Hyena鬣狗快速开发库
也是借鉴了前辈的思路,想成为一个简单好用,保持活力,受大家喜欢的开源库。
核心为快速开发
,定位小巧精悍
,内容简单精致
,整合常用的自定义View
、Base类
、通用
、词典
项目中经常需要一个可以带清除功能的输入框,ClearEditText封装了这个功能,并且将代码全部装进了ClearEditText中,只需要在xml中使用的时候,根据需要设置效果,使用起来完全没有负担,自带的icon简单大气,还可以设置着色,可以设置失去焦点隐藏icon,可以设置自定义的icon。
使用鬣狗可以快速方便的实现这个功能,详细的使用示例
源码 ClearEditText .java
public class ClearEditText extends AppCompatEditText {
private Drawable mDrawable;
public ClearEditText(Context context) {
this(context, null);
}
public ClearEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
public ClearEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(attrs);
}
private void init(AttributeSet attrs) {
TypedArray typedArray = getContext().obtainStyledAttributes(attrs, R.styleable.ClearEditTextStyle);
if (typedArray == null) {
return;
}
int drawable = typedArray.getResourceId(R.styleable.ClearEditTextStyle_drawable_close, R.drawable.ic_clear_black_24dp);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mDrawable = getContext().getDrawable(drawable);
} else {
mDrawable = getResources().getDrawable(drawable);
}
}
@Override
protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
super.onTextChanged(text, start, lengthBefore, lengthAfter);
setClearIconVisible(hasFocus() && length() > 0);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
setClearIconVisible(focused && length() > 0);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
Drawable drawable = getCompoundDrawables()[2];
if (drawable != null && event.getX() <= (getWidth() - getPaddingRight()) && event.getX() >= (getWidth() - getPaddingRight() - drawable.getBounds().width())) {
setText("");
}
break;
default:
break;
}
return super.onTouchEvent(event);
}
public void setClearIconVisible(boolean visible) {
setCompoundDrawablesWithIntrinsicBounds(getCompoundDrawables()[0], getCompoundDrawables()[1]
, visible ? mDrawable : null, getCompoundDrawables()[3]);
}
}
更多功能请前往Github查看,传送门: Hyena鬣狗快速开发库