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" />




posted @ 2015-12-15 18:03  Jenly  阅读(336)  评论(0编辑  收藏  举报