文档章节

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

Jenly
 Jenly
发布于 2016/09/18 15:37
字数 527
阅读 2
收藏 0

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

此处省略一万字…

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

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

如:在父类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" />




本文转载自:http://blog.csdn.net/jenly121/article/details/50318221

Jenly

Jenly

粉丝 0
博文 35
码字总数 0
作品 0
深圳
私信 提问
Android:TextView属性大全

android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all) android:autoText 如果设置,将自动执行输入值的拼写纠正...

Xushao
2013/04/03
328
0
TextView属性详解

android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web /email/phone/map/all) android:autoText如果设置,将自动执行输入值的拼写纠正。...

长平狐
2012/10/09
277
0
Android TextView 属性详解

android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web /email/phone/map/all) android:autoText如果设置,将自动执行输入值的拼写纠正。...

鉴客
2011/10/28
2.6K
2
让TextView显示的文字一跑马灯显示属性设置

<TextView 一定要设置单行显示 android:singleLine="true" , android:ellipsize="marquee"就是跑马灯属性,android:marqueeRepeatLimit="marquee_forever"为一直都是滚动模式 Activity里面还......

放纵的青春
2015/07/03
30
0
TextView的API 中文文档

1.1 结构 java .lang.Object ↳ android.view.View ↳ android.widget.TextView 直接子类: Button, CheckedTextView, Chronometer, DigitalClock, EditText 间接子类: AutoCompleteTextVi......

JavaGG
2011/06/30
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部