昨晚写博客太仓促,代码结构有问题,早上测试发现没法监听文本变化!今日更改一下。真心见谅啦,哈哈!主活动的代码已经改好了,看截图这次的确实现了文本监听变化情况。

监听文本输入情况,仅仅限于土司略显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文本变化,实现抖动和震动的效果》的更多相关文章

  1. Android简易实战教程--第二十九话《创建图片副本》

    承接第二十八话加载大图片,本篇介绍如何创建一个图片的副本. 安卓中加载的原图是无法对其修改的,因为默认权限是只读的.但是通过创建副本,就可以对其做一些修改,绘制等了. 首先创建一个简单的布局.一个放原 ...

  2. Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》

    之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导, ...

  3. Android简易实战教程--第二十六话《网络图片查看器在本地缓存》

    本篇接第二十五话  点击打开链接   http://blog.csdn.net/qq_32059827/article/details/52389856 上一篇已经把王略中的图片获取到了.生活中有这么 ...

  4. Android简易实战教程--第十五话《在外部存储中读写文件》

    第七话里面介绍了在内部存储读写文件 点击打开链接. 这样有一个比较打的问题,假设系统内存不够用,杀本应用无法执行,或者本应用被用户卸载重新安装后.以前保存的用户名和密码都不会得到回显.所以,有必要注意 ...

  5. Android简易实战教程--第二十八话《加载大图片》

    Android系统以ARGB表示每个像素,所以每个像素占用4个字节,很容易内存溢出.假设手机内存比较小,而要去加载一张像素很高的图片的时候,就会因为内存不足导致崩溃.这种异常是无法捕获的 内存不足并不 ...

  6. Android简易实战教程--第二十五话《网络图片查看器》

    访问网络已经有了很成熟的框架.这一篇只是介绍一下HttpURLConnection的简单用法,以及里面的"注意点".这一篇可以复习或者学习HttpURLConnection.han ...

  7. Android简易实战教程--第二十四话《画画板》

    今天完成一个画画板. 首先来个布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...

  8. Android简易实战教程--第十八话《ListView显示,简单的适配器SimpleAdapter》

    本篇介绍Listview的显示,对于listview有许多的适配器,如ArrayAdapter,BaseAdapter,SimpleAdapter等等.本篇先热身一下,介绍最简单的SimpleAdap ...

  9. Android简易实战教程--第十四话《模仿金山助手创建桌面Widget小部件》

    打开谷歌api,对widget小部件做如下说明: App Widgets are miniature application views that can be embedded in otherap ...

随机推荐

  1. Docker入门之---ENTRYPOINT和CMD

    1. 前言  ENTRYPOINT 和CMD 都是Dockerfile 中的命令,两者都是用来:指定默认的容器的主进程的启动命令.那么接下来就介绍一下这两者在Dockerfile 中,以及Docker ...

  2. [LOJ 6185]烷基计数

    Description 众所周知,大连 24 中是一所神奇的学校,在那里,化竞的同学很多都擅长写代码. 有一天,化学不及格的胡小兔向化竞巨佬晴岚请教化学题: “n 个碳原子的烷基共有多少种同分异构体? ...

  3. [HAOI 2009]逆序对数列

    Description 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的 数列,可以很容易求出有多少个逆序对数.那么逆 ...

  4. [HNOI 2009]最小圈

    Description 考虑带权的有向图$G=(V,E)$以及$w:E\rightarrow R$,每条边$e=(i,j)(i\neq j,i\in V,j\in V)$的权值定义为$w_{i,j}$ ...

  5. [HNOI2006]公路修建问题

    题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 输入输出样例 输入样例#1: 复制 4 2 5 1 2 6 5 1 3 3 1 2 3 9 4 2 4 6 1 3 ...

  6. Codeforces 429E Points and Segments

    Description 题面 题目大意:有 \(n\) 个区间 \([L_i,R_i]\) ,你要给每一个区间染红蓝,使得每一个位置被红色染过的次数与被蓝色染过的次数差的绝对值不大于\(1\) Sol ...

  7. hdu5652 India and China Origins(并查集)

    India and China Origins  Accepts: 49  Submissions: 426  Time Limit: 2000/2000 MS (Java/Others)  Memo ...

  8. [bzoj1558][JSOI2009]等差数列

    题目:给定n个数,m个操作,每次给一段区间加一个等差数列或者询问一段区间至少要用多少个等差数列来表示.$n,m\leqslant 10^{5}$ 题解:老套路,维护差分数组,修改操作变成了两个单点加和 ...

  9. Python中生成器和迭代器的功能介绍

    生成器和迭代器的功能介绍 1. 生成器(generator) 1. 赋值生成器 1. 创建 方法:x = (variable for variable in iterable) 例如:x = (i f ...

  10. oracle初试、函数、增删改查、多表查询

      安装oracle后的测试以及解锁账户                  安装后打开命令行,输入 sqlplus 回车后会提示输入用户名,输入 sys或者system 回车后输入密码,密码为安装or ...