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

监听文本输入情况,仅仅限于土司略显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. [HNOI 2004]树的计数

    Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要 ...

  2. JS按照指定的周期来调用函数方法

    setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 s ...

  3. SSM项目搭建之配置文件

    1.1  pom文件配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// ...

  4. koa2+webSocket 聊天室

    做了一个简单的的聊天室,用来看看 koa和 websocket的使用还是挺好的,已经放到gitHub. https://github.com/zhaowanhua/koa2WebSocket

  5. IntelliJ IDEA的编译设置

    好就之前遇到的bug,eclipse转idea时,idea不编译一个项目! 查了半天是IntelliJ IDEA的编译设置问题,不设置编译该文件,idea就不编译!

  6. struct2 拿到url的方法

    在Action中: HttpServletRequest request = ServletActionContext.getRequest(); String url =request.getReq ...

  7. 读书学习-Python--描述符(python3)

    转自我的知乎文章(https://zhuanlan.zhihu.com/p/32487852) 何为描述符?描述符就是实现了__get__.__set__和__delete__三者中任意一个的类.是用 ...

  8. css文本超出省略号

    终于完成了项目了,今天我就分享自己在项目中比较实用的一些功能的实现,第一个就是纯css文本超出省略号 /* 文本单行超出省略号 */ .textels { overflow: hidden; text ...

  9. 安装redis,搭建环境

    这里以redis-4.0.9为例   我自己为了好方便管理自己的软件包,就在/usr/local/目录下创建了一个software目录   mkdir  /usr/local/software cd  ...

  10. for循环&len函数和range函数的运用

     函数:len() 作用:返回字符串.列表.字典.元组等长度 语法:len(str) 参数: str:要计算的字符串.列表.字典.元组等 返回值:字符串.列表.字典.元组等元素的长度 实例 1.计算字 ...