- 浏览: 675644 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (252)
- Html/Div+CSS (12)
- Js/Jquery (34)
- Flex (2)
- Ajax (3)
- Java (35)
- C# (15)
- Spring (16)
- Hibernate (13)
- Struts2 (12)
- Struts1 (7)
- DWR (1)
- iBatis/myBatis (9)
- Tag(JSTL、EL) (1)
- Android (44)
- SQL (7)
- SEO (7)
- Exception (3)
- Tool (10)
- Other (3)
- WebService (9)
- Apache (7)
- Ext (0)
- Utils (12)
- thinking in programme (2)
- Hadoop (0)
- ActiveMQ (0)
- HTML5/CSS3 (0)
- WPF (1)
- NodeJs (1)
- 设计模式 (0)
- 程序人生 (1)
- 随笔 (1)
- Linux (1)
- Load Balance (0)
最新评论
-
drinkjava2:
太复杂了而且不通用,利用ThreadLocal可完美解决这一问 ...
JDBC的多条件动态查询 -
u013107014:
multipartRequest.getFiles(" ...
多文件上传 by MultipartFile and Multiple -
liyys:
可惜没讲你mysql数据库的表的设计
iBatis入门 -
Mapple_leave:
效果还是挺不错的,谢谢了。
中文简体与繁体的转换 -
arcpad:
JS禁用浏览器退格键
七、键盘事件
Main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请输入EMAIL地址:" /> <EditText android:id="@+id/input" android:layout_width="wrap_content" android:layout_height="wrap_content" android:selectAllOnFocus="true" /> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/wrong"/> </LinearLayout>
Activity:
package com.iflytek.activity; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; import android.widget.EditText; import android.widget.ImageView; public class EventActivity extends Activity { private EditText input = null; private ImageView img = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.main); this.input = (EditText) super.findViewById(R.id.input); // 取得组件 this.img = (ImageView) super.findViewById(R.id.img); // 取得组件 this.input.setOnKeyListener(new OnKeyListenerImpl()); } private class OnKeyListenerImpl implements OnKeyListener { public boolean onKey(View v, int keyCode, KeyEvent event) { switch (event.getAction()) { case KeyEvent.ACTION_UP: String msg = EventActivity.this.input.getText().toString(); // 取得输入的文字信息 if (msg.matches("\\w+@\\w+\\.\\w+")) { // 验证通过 EventActivity.this.img.setImageResource(R.drawable.right); // 设置正确图片 } else { EventActivity.this.img.setImageResource(R.drawable.wrong); // 设置错误图片 } case KeyEvent.ACTION_DOWN: // 键盘按下 break; } return false; } } }
八、触摸事件
Demo01_ 获取坐标 :
Main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/info" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>
Activity:
package com.iflytek.activity; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.TextView; public class EventActivity extends Activity { private TextView info = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.info = (TextView) super.findViewById(R.id.info); this.info.setOnTouchListener(new OnTouchListenerImpl()); } private class OnTouchListenerImpl implements OnTouchListener { public boolean onTouch(View v, MotionEvent event) { EventActivity.this.info.setText("X = " + event.getX() + ",Y = " + event.getY()); // 设置文本 return false; } } }
Demo02_ 绘图:
Main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <com.iflytek.activity.MyPaintView android:id="@+id/paintView" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>
Activity:
package com.iflytek.activity; import android.app.Activity; import android.os.Bundle; public class EventActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
MyPaintView.java:
package com.iflytek.activity; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; /** * @author xdwang * * @create 2012-9-3 下午9:46:43 * * @email:xdwangiflytek@gmail.com * * @description * */ public class MyPaintView extends View { private List<Point> allPoint = new ArrayList<Point>(); // 保存所有的操作坐标 public MyPaintView(Context context, AttributeSet attrs) { // 接收Context,同时接收属性集合 super(context, attrs); // 调用父类的构造 super.setOnTouchListener(new OnTouchListenerImpl()); } private class OnTouchListenerImpl implements OnTouchListener { public boolean onTouch(View v, MotionEvent event) { Point p = new Point((int) event.getX(), (int) event.getY()); // 将坐标保存在Point类 if (event.getAction() == MotionEvent.ACTION_DOWN) { // 按下,表示重新开始保存点 MyPaintView.this.allPoint = new ArrayList<Point>(); // 重绘 MyPaintView.this.allPoint.add(p); // 保存点 } else if (event.getAction() == MotionEvent.ACTION_UP) { // 用户松开 MyPaintView.this.allPoint.add(p); // 记录坐标点 MyPaintView.this.postInvalidate(); // 重绘图形 } else if (event.getAction() == MotionEvent.ACTION_MOVE) { // 用户移动 MyPaintView.this.allPoint.add(p); // 记录坐标点 MyPaintView.this.postInvalidate(); // 重绘图形 } return true; // 表示下面的操作不再执行了。 } } @Override protected void onDraw(Canvas canvas) { // 进行绘图 Paint p = new Paint(); // 依靠此类开始画线 p.setColor(Color.RED);// 定义图的颜色 if (MyPaintView.this.allPoint.size() > 1) { // 现在有坐标点保存的时候可以开始进行绘图 Iterator<Point> iter = MyPaintView.this.allPoint.iterator(); Point first = null; Point last = null; while (iter.hasNext()) { if (first == null) { first = (Point) iter.next(); // 取出坐标 } else { if (last != null) { // 前一阶段已经完成了 first = last; // 重新开始下一阶段 } last = (Point) iter.next(); // 结束点坐标 canvas.drawLine(first.x, first.y, last.x, last.y, p); } } } } }
发表评论
-
This version of ADT requires android SDK
2013-07-25 16:45 1600Windows系统下用Eclipse开发工具开发An ... -
Android学习13-----网络通信(4) WebView组件
2012-11-27 09:18 2520WebView 是一个开发的浏览 ... -
Android学习13-----网络通信(3) 与Web Service进行通讯
2012-11-26 09:40 1898这里我们的WebService使用xFire开发。 ... -
Android学习13-----网络通信(2) 与Socket交换数据
2012-11-23 09:11 3311对于网络开发而言,最常用的交互模式:WebService、We ... -
Android学习13-----网络通信(1) 与WEB服务器交换数据
2012-11-22 09:11 2196与Web服务器交互: 如果手机要想与 web ... -
Android学习11-----多媒体技术(5) 媒体录制
2012-11-16 08:10 1896在Android中通过android.media ... -
Android学习11-----多媒体技术(4) 使用摄像头拍照,多点触控
2012-11-15 08:37 2892一、摄像头拍照 前面说媒体播放 时了解了 ... -
Android学习11-----多媒体技术(3) 媒体播放
2012-11-14 08:25 1421在 Androi ... -
Android学习11-----多媒体技术(2) Animation
2012-11-13 08:47 1998一、渐变动画, Tweened Animation ... -
Android学习11-----多媒体技术(1) 绘制简单图形,Bitmap,Matrix
2012-11-12 08:48 1627一、绘制简单图 ... -
Android学习12-----手机服务(4) 传感器
2012-11-19 09:13 2024传感器一般用于游戏中,在 Android 系统中为 ... -
Android学习12-----手机服务(1) 取得电池电量和声音服务:AudioManager
2012-11-18 11:18 3509一、取得电池电量信息 ... -
Android学习10-----Android组件通信 (8) 桌面显示组件:AppWidget
2012-11-02 08:36 2042一、 AppWidget 在使用 Androi ... -
Android学习10-----Android组件通信 (7) 广播机制:Broadcast
2012-11-01 08:43 1520一、 广播: 广播也是一种信息的发送机制,在 ... -
Android学习10-----Android组件通信 (6) PendingIntent
2012-10-31 08:20 2267Intent 的主要功能是表示用 ... -
Android学习10-----Android组件通信 (5) Service
2012-10-30 08:25 1742Service 基本组成: ... -
Android学习10-----Android组件通信 (4) 消息机制
2012-10-29 08:22 1557在 Android 操作系统中存在着消息队列的操作 ... -
Android学习10-----Android组件通信 (3) ActivityGroup
2012-10-26 08:23 2322导航栏在 Android 中的应用是很常见的,前面 ... -
Android学习10-----Android组件通信 (2) Activity生命周期
2012-10-25 08:16 1287Activity 是整个 Android 平台的基 ... -
Android学习10-----Android组件通信 (1) Intent
2012-10-24 08:43 2017在一个项目之中,会由多个 Activity ...
相关推荐
本文将深入探讨Android键盘事件处理,并通过一个实际的案例来讲解相关知识点。 首先,Android中的键盘事件主要分为两种:软键盘(Software Keyboard)事件和硬件键盘(Hardware Keyboard)事件。软键盘通常在触摸屏...
在Android应用程序中,有一类...这个PPT讲Android应用程序输入事件的分发和处理过程,主要涉及到输入管理InputManager、输入事件监控线程InputReader、输入事件分发线程InputDispatcher,以及应用程序主线程消息循环。
`init(this)`指定了当前Activity作为上下文,`withRootView(findViewById(android.R.id.content))`设置了监听触摸事件的根视图,`withDismissingAction(KeyboardDismisser.ON_TOUCH_OUTSIDE)`定义了触发键盘关闭的...
1. **事件监听器(Event Listeners)**:Android中的事件处理基于监听器模式,通过实现特定的接口(如OnClickListener、OnTouchListener等)来捕获和处理用户的交互事件。这些接口定义了处理各种事件的方法,如...
在Android开发中,处理键盘事件是一项重要的任务,特别是在设计用户交互界面时。本文将深入探讨如何处理物理按键事件,特别是如何屏蔽系统自带的后退键。Android设备通常配备多个物理按键,包括返回键,这对于应用的...
"Android高级应用源码-自定义键盘.rar"是一个包含自定义键盘实现的源代码压缩包,适合Android开发者深入学习和参考。这个资源提供了从头构建自定义键盘的实践经验,对于提升Android应用的用户体验具有重要意义。 ...
通过阅读源码,我们可以学习如何实现自定义键盘的具体细节,例如如何创建和管理按钮状态,如何处理按键事件,以及如何与应用中的输入框进行通信等。 总之,“Android-NumberKeyboard自定义数字键盘”是一个实用的...
IMF是Android系统中处理用户输入的关键组件,它允许应用程序接收来自不同输入设备(如物理键盘、触摸屏键盘等)的输入。在这个样本项目中,开发者将学习到如何利用Android SDK中的工具和API来创建一个功能完整的软...
在Android开发中,有时我们需要创建特定的用户界面来提升用户体验,比如模仿知名应用的功能,例如微信的数字...通过学习这个项目,开发者不仅可以掌握自定义控件的创建,还能深入理解Android界面设计和事件处理机制。
Android 键盘和鼠标事件详解 Android 事件机制是现代用户界面的核心组件之一,它基于事件驱动的方式来实现人机交互。...通过对触摸屏事件和按键事件的处理,可以实现复杂的用户交互逻辑,提高应用程序的用户体验。
在Android系统中,事件处理主要包括触摸事件、键盘事件、广播事件等,这些事件的处理方式直接影响到应用的用户体验和功能实现。下面我们将深入探讨Android事件处理机制的原理及其源码分析。 首先,Android事件处理...
总的来说,创建一个自定义键盘在Android中虽然需要一定的工作量,但通过理解触摸事件处理、输入连接和视图布局机制,开发者可以灵活地构建符合特定需求的输入方案。"MoveKeyboard-master"项目提供了一个很好的起点,...
Android事件处理系统允许应用程序响应用户的触摸、键盘输入、网络变化等各种事件。本篇将详细解析Android事件处理机制,特别是基于给定的"android 事件处理demo",我们将深入探讨如何在实际应用中处理触摸事件。 ...
在Android操作系统中,输入系统(Input System)是一个至关重要的组件,它负责处理各种用户交互,如触摸屏操作、物理按键事件、手势等。本资源"Android-input-system-analysis.rar"提供了对Android输入系统的深入...
- 对于触摸屏操作,Android提供了GestureDetector和MotionEvent类来捕获和处理用户的触摸事件,实现滑动、点击等交互。 - 支持键盘操作,需要监听硬件键盘或软键盘的按键事件。Android中的`KeyEvent`类用于处理...
总之,"android 纯自定义数字键盘输入"项目是一个实用的学习资源,它涵盖了Android自定义View的开发、触摸事件处理、界面布局设计等多个知识点。通过研究这个`KeyDemo`,开发者不仅可以学会如何创建自定义键盘,还能...
优化键盘性能包括减少布局复杂性,避免过度绘制,以及合理处理触摸事件。同时,考虑不同屏幕尺寸和方向的适配,确保键盘在各种设备上都能良好工作。 总结,Android键盘的自定义能力为开发者提供了丰富的可能性,...
这些事件可以通过监听器的方式进行捕获和处理。例如,触摸事件可以使用`OnTouchListener`接口来监听,而键盘事件则可以使用`OnKeyListener`接口。开发者还可以通过`Intent`对象来发送和接收消息,实现组件间的通信。...
通过阅读这些源码,开发者可以了解到Android系统键盘如何处理触摸事件,如何进行文本预测和纠错,以及如何与应用进行通信等细节。 `SoftKeyboard.rar`和`keydemo.zip`可能包含了一些示例代码或已完成的自定义键盘...