您的位置:首页 > 移动开发 > Android开发

Android之检测文本内容是否为空时左右摆动效果

2015-12-15 18:03 399 查看
一个好的产品,一定会注重每个细节,追求极致体验。而作为一个互联网移动开发者,在开发产品时也应尽量做到如此。

此处省略一万字…

我去,扯远了,请不要在意这些细节。

回到正题,开发久了,总会有各种“偷懒”的想法,在同样的代码写了无数遍后,你会习惯封装。

如:在父类BaseActivity或BaseFragment里面写一些经常用到的Toast,Dialog,Popupwindow这些提示类的控件,做一个封装,供子类方便调用,这里只是抛了一块砖,后续有时间,会慢慢整理一部份发出来。

示例:在父类写个通用的Toast

private Context context = this;
private Toast toast;
/**
* Toast弹出框
* @param msg
*/
protected void showToast(int resId){
showToast(getString(resId),Toast.LENGTH_SHORT);
}
protected void showToast(String msg){
showToast(msg,Toast.LENGTH_SHORT);
}

protected void showToast(String msg,int duration){
showToast(context,msg,duration);
}

protected void showToast(Context context,String msg){
showToast(context, msg, Toast.LENGTH_SHORT);;
}

protected void showToast(Context context,String msg,int duration){
if(toast!=null){//防止重复显示
toast.cancel();
}
toast = Toast.makeText(context, msg, duration);
toast.show();
}


下面到了今天的主题,检测文本输入为空时摆动效果与Toast提示

直接上代码:

public static final int NONE_ID = -1;

/**
* 检测文本视图是否有输入内容
* @param v
* @return
*/
protected boolean checkInput(TextView v){
return checkInput(v, NONE_ID, false);
}

protected boolean checkInput(TextView v,int msgId){
return checkInput(v, msgId, false);
}

protected boolean checkInput(TextView v,boolean isShake){
return checkInput(v, NONE_ID, isShake);
}

/**
* 检测文本视图是否有输入内容
* @param v
* @param msgId 	当msgID!=NONE_ID时 则showToast
* @param isShake 	是否摆动
* @return
*/
protected boolean checkInput(TextView v,int msgId,boolean isShake){
if(StringUtils.isBlank(v.getText().toString())){
if(isShake){
startShake(v, msgId);
}else{
if(msgId!=NONE_ID){
showToast(msgId);
}
}
return false;
}

return true;
}

/**
* 开始摆动(左右摆动效果)
* @param v
*/
protected void startShake(View v){
startShake(v, NONE_ID);
}

/**
* 开始摆动(左右摆动效果)
* @param v
* @param msgId 	当msgID!=NONE_ID时 则showToast
*/
protected void startShake(View v,int msgId){
Animation animation = AnimationUtils.loadAnimation(context, R.anim.shake);
v.startAnimation(animation);
if(msgId!=NONE_ID){
showToast(msgId);
}
}


shake.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromXDelta="0"
android:interpolator="@anim/cycle_interpolator"
android:toXDelta="10" />


cycle_interpolator.xml

<?xml version="1.0" encoding="utf-8"?>
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:cycles="3" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: