Android简易实战教程--第十九话《手把手教您监听EditText文本变化,实现抖动和震动的效果》
昨晚写博客太仓促,代码结构有问题,早上测试发现没法监听文本变化!今日更改一下。真心见谅啦,哈哈!主活动的代码已经改好了,看截图这次的确实现了文本监听变化情况。
监听文本输入情况,仅仅限于土司略显low点,这一篇就稍微“高大上”些,体验一下滚动和震动。
首先,需要两个文件。截图:
两个文件的内容分别如下:
cycle_7:
<?xml version="1.0" encoding="utf-8"?>
<!-- 表示循环的次数 -->
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:cycles="7" />
shake.xml:
<?xml version="1.0" encoding="utf-8"?> <!-- 位移动画 。时间1秒,位移x(0,10)。抖动循环次数7次。interpolator是动画插入器-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromXDelta="0"
android:interpolator="@anim/cycle_7"
android:toXDelta="10" />
接下来进入主题了。先来个界面:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" > <EditText
android:id="@+id/et_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入密码" /> <Button
android:id="@+id/bt_query"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询" /> <TextView
android:id="@+id/tv_showresult"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> </LinearLayout>
需求:在编辑框输入密码,判断是否正确。如果输入正确,就在下边显示正确(这里做监听文本变化);如果错误,手机震动(震动效果需要权限、真机测试);如果输入为空,编辑框实现左右滚动。
代码写了出来:
package com.itydl.shake; import android.app.Activity;
import android.os.Bundle;
import android.os.Vibrator;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; public class MainActivity extends Activity { private EditText et_input;
private TextView tv_result;
private Button bt_query; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); et_input = (EditText) findViewById(R.id.et_input); tv_result = (TextView) findViewById(R.id.tv_showresult); bt_query = (Button) findViewById(R.id.bt_query); initEvent();
} private void initEvent() {
// 监听文本变化.EditText文本发生变的时候调用下面相应的方法
et_input.addTextChangedListener(new TextWatcher() { @Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// 文本变化的时候调用 } @Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// 文本变化之前调用 } @Override
public void afterTextChanged(Editable s) {
// 文本变化之后调用
showResult2(); }
}); bt_query.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
showResult2(); } }); } private void showResult2() {
// 获取编辑框内容
String inputpass = et_input.getText().toString().trim();
// 判断输入是否为空,为空就实现滚动效果
if (TextUtils.isEmpty(inputpass)) {
// 为空,滚动
Animation shake = AnimationUtils.loadAnimation(MainActivity.this,
R.anim.shake);// 需要R.anim.shake资源文件
et_input.startAnimation(shake);
tv_result.setText("");
return;
} else { // 判断密码是否是123
if (inputpass.equals("123")) {
tv_result.setText("恭喜你,正确!");
} else {
// 不正确,让手机震动
/*
* 震动效果
*/
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
// 震动的参数设置 (两个参数:1、震动、休息、震动、休息....交替循环;2、重复次数为3次)
vibrator.vibrate(new long[] { 200, 300, 300, 200, 500, 100 }, 3);
tv_result.setText("");
}
}
} }
震动效果记得加上震动的权限:(震动真机才能测试哦)
<uses-permission android:name="android.permission.VIBRATE"/>
好了,运行程序看看效果:
我们发现密码正确或者错误的时候,下边的textview自动就显示正确错误了。
怎么样?比起土司,是不是略显“高大上”呢?赶快玩起来吧!
欢迎大家关注我的博客:点击打开链接 点击打开链接 http://blog.csdn.net/qq_32059827 观看更多更好玩的案例,每日一更哦!
Android简易实战教程--第十九话《手把手教您监听EditText文本变化,实现抖动和震动的效果》的更多相关文章
- Android简易实战教程--第二十九话《创建图片副本》
承接第二十八话加载大图片,本篇介绍如何创建一个图片的副本. 安卓中加载的原图是无法对其修改的,因为默认权限是只读的.但是通过创建副本,就可以对其做一些修改,绘制等了. 首先创建一个简单的布局.一个放原 ...
- Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》
之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导, ...
- Android简易实战教程--第二十六话《网络图片查看器在本地缓存》
本篇接第二十五话 点击打开链接 http://blog.csdn.net/qq_32059827/article/details/52389856 上一篇已经把王略中的图片获取到了.生活中有这么 ...
- Android简易实战教程--第十五话《在外部存储中读写文件》
第七话里面介绍了在内部存储读写文件 点击打开链接. 这样有一个比较打的问题,假设系统内存不够用,杀本应用无法执行,或者本应用被用户卸载重新安装后.以前保存的用户名和密码都不会得到回显.所以,有必要注意 ...
- Android简易实战教程--第二十八话《加载大图片》
Android系统以ARGB表示每个像素,所以每个像素占用4个字节,很容易内存溢出.假设手机内存比较小,而要去加载一张像素很高的图片的时候,就会因为内存不足导致崩溃.这种异常是无法捕获的 内存不足并不 ...
- Android简易实战教程--第二十五话《网络图片查看器》
访问网络已经有了很成熟的框架.这一篇只是介绍一下HttpURLConnection的简单用法,以及里面的"注意点".这一篇可以复习或者学习HttpURLConnection.han ...
- Android简易实战教程--第二十四话《画画板》
今天完成一个画画板. 首先来个布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...
- Android简易实战教程--第十八话《ListView显示,简单的适配器SimpleAdapter》
本篇介绍Listview的显示,对于listview有许多的适配器,如ArrayAdapter,BaseAdapter,SimpleAdapter等等.本篇先热身一下,介绍最简单的SimpleAdap ...
- Android简易实战教程--第十四话《模仿金山助手创建桌面Widget小部件》
打开谷歌api,对widget小部件做如下说明: App Widgets are miniature application views that can be embedded in otherap ...
随机推荐
- My Answer in Regex Golf
Warm Up Answer: foo Point(3) Anchors Answer: k$ Point(2) It never ends $ not allowed Answer: fu\b Po ...
- [HNOI 2017]抛硬币
Description 题库链接 两人抛硬币一人 \(a\) 次,一人 \(b\) 次.记正面朝上多的为胜.问抛出 \(a\) 次的人胜出的方案数. \(1\le a,b\le 10^{15},b\l ...
- 【USACO】股票市场
题目描述 尽管奶牛天生谨慎,它们仍然在住房抵押信贷市场中大受打击,现在它们准备在股市上碰碰运 气.贝西有内部消息,她知道 S 只股票在今后 D 天内的价格. 假设在一开始,她筹集了 M 元钱,那么她该 ...
- ●SPOJ 1811 Longest Common Substring
题链: http://poj.org/problem?id=2774 题解: 求两个字符串(S,T)的最长公共子串.对 S串建后缀自动机.接下来就用这个自动机去求出能和 S串匹配的 T的每一个前缀的最 ...
- poj 2528 (线段树+离散化)
poj 2528 For each input data set print the number of visible posters after all the posters are place ...
- 2015 多校联赛 ——HDU5371(manacher + 枚举)
Sample Input 1 10 2 3 4 4 3 2 2 3 4 4 Sample Output Case #1: 9 要求找出一段数字. 将其分成3部分,第①和第②部分成回文字串,第②和第 ...
- Python Socket第二篇(socketserver)
本节内容 socketserver基础知识 ThreadingTCPServer源码剖析 1.socketserver基础 ThreadingTCPServer实现的Soket服务器内部会为每个cli ...
- Spring学习笔记3——使用注解的方式完成注入对象中的效果
第一步:修改applicationContext.xml 添加<context:annotation-config/>表示告诉Spring要用注解的方式进行配置 <?xml vers ...
- 如何理解Spring IOC
Spring IOC 思维导图 要了解控制反转( Inversion of Control ), 我觉得有必要先了解软件设计的一个重要思想:依赖倒置原则(Dependency Inversion Pr ...
- linux上安装fastdfs+nginx+ngin-module实践并解决多个异常篇
为什么选择Nginx Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主 ...