Android之检测文本内容是否为空时左右摆动效果
一个好的产品,一定会注重每个细节,追求极致体验。而作为一个互联网移动开发者,在开发产品时也应尽量做到如此。
此处省略一万字…
我去,扯远了,请不要在意这些细节。
回到正题,开发久了,总会有各种“偷懒”的想法,在同样的代码写了无数遍后,你会习惯封装。
如:在父类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" />
关于作者
Name: Jenly
Email: jenly1314@gmail.com
Email: jenly1314@vip.qq.com
Github: github.com/jenly1314