在前面总结了简单的 Android 控件 和 Android 中常用的布局 ,那么我们知道要想让我们在 Android 上开发的图形界面有意义,真正的实现那种人机交互的操作,事件的处理是必须的。所以这篇我们总结一下 Android 中的事件处理。

基本上每个组件都会存在相应的事件处理操作,但是其基本的操作流程都是一样的。事件处理:

具体的事件方法大家可以查看 android.view 下的 View 类下,下面我们以一些常用的事件处理来进行说明,考虑到页面显示问题,所以会将几个事件处理拆成几篇博客处理。

一、单击事件

1 、改变屏幕方向 Demo

如果手机的屏幕发生改变了,则肯定属于系统的设置发生了改变,所以一旦发生了系统的设置改变会自动执行 onConfigurationChanged() 方法。

onclick.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" >        <Button         android:id="@+id/btn_change"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="改变屏幕方向为横屏显示(当前为竖屏显示)"/></LinearLayout>

Activity

package com.iflytek.activity;import android.app.Activity;import android.content.pm.ActivityInfo;import android.content.res.Configuration;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class EventActivity extends Activity {private Button btnChange = null;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// setContentView(R.layout.main);// 1、单击事件处理Demosuper.setContentView(R.layout.onclick);this.btnChange = (Button) super.findViewById(R.id.btn_change);this.btnChange.setOnClickListener(new MyOnClickLlistenerImpl());}private class MyOnClickLlistenerImpl implements OnClickListener {@Overridepublic void onClick(View v) {int screen_dir = EventActivity.this.getRequestedOrientation();// 获取当前屏幕方向,0表示横屏,1表示竖屏if (screen_dir == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {// 无法进行画面旋转EventActivity.this.btnChange.setText("错误:无法改变屏幕的方向");} else {if (screen_dir == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {// 现在方向是横屏EventActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);// 变成竖屏} else if (screen_dir == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {EventActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}}}}/** * 表示的时系统设置修改的时候触发 */@Overridepublic void onConfigurationChanged(Configuration newConfig) {//找到当前屏幕方向的一个标记性的常量,通过这个常量把值返回去int screen_dir = newConfig.orientation;//注意这里不要再使用ActivityInfo.SCREEN_ORIENTATION_PORTRAIT了,因为有时这两个值是不一样的if (screen_dir == Configuration.ORIENTATION_LANDSCAPE) {EventActivity.this.btnChange.setText("改变屏幕方向为竖屏显示(当前为横屏显示)");}else if(screen_dir == Configuration.ORIENTATION_PORTRAIT){EventActivity.this.btnChange.setText("改变屏幕方向为横屏显示(当前为竖屏显示)");}super.onConfigurationChanged(newConfig);}}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.iflytek.activity"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="10" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <activity            android:label="@string/app_name"            android:name=".EventActivity"            android:screenOrientation="portrait"             android:configChanges="orientation|keyboard" >            <!-- android:screenOrientation设置开始按竖屏显示,这里不设置,也改变不了 -->            <!-- android:configChanges配置configChanges事件 -->            <intent-filter >                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>        <!-- 设置允许改变配置信息的权限 -->    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/></manifest>

2 、明文显示密码 Demo

明文显示: android.text.method.HideReturnsTransformationMethod

密文显示: android.text.method.PasswordTransformationMethod

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/msg"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="请输入密码" />        <EditText        android:id="@+id/password"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:password="true"/>        <CheckBox        android:id="@+id/show"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:checked="false"        android:text="显示密码"/>    </LinearLayout>

Activity:

package com.iflytek.activity;import android.app.Activity;import android.os.Bundle;import android.text.method.HideReturnsTransformationMethod;import android.text.method.PasswordTransformationMethod;import android.view.View;import android.view.View.OnClickListener;import android.widget.CheckBox;import android.widget.EditText;public class EventActivity extends Activity {private EditText password = null;private CheckBox show = null;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);this.password = (EditText) super.findViewById(R.id.password);this.show = (CheckBox) super.findViewById(R.id.show);this.show.setOnClickListener(new OnClickListenerImpl());}private class OnClickListenerImpl implements OnClickListener {@Overridepublic void onClick(View v) {if (EventActivity.this.show.isChecked()) {// 被选中,则显示明文// 将文本框的内容设置成明文显示EventActivity.this.password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());} else {// 将文本框内容设置成密文的方式显示EventActivity.this.password.setTransformationMethod(PasswordTransformationMethod.getInstance());}}}}

更多相关文章

  1. Icon Design Guidelines-android 图标设计指导
  2. Android(安卓)屏幕适配(修改系统字体大小、显示大小、修改分辨率
  3. Android(安卓)【真机】与【模拟器】触摸屏事件的模拟差异分析
  4. android鼠标滚轮bug
  5. Android(安卓)自定义View——自定义点击事件
  6. android点滴2
  7. Android(安卓)判断imageview角度并旋转
  8. android gesture检测
  9. android远程控制(一)----发现驱动文件里代码含义

随机推荐

  1. Android剪贴板学习
  2. Android 之 自定义适配器
  3. Android判断界面
  4. Android 自定义view的简单应用(2) 毛玻璃效
  5. android 进度条垂直动态上升下降达到警告
  6. android textview宽度固定的情况下字体大
  7. Spinner 下拉列表 demo
  8. android中的OOM问题 解决原则
  9. Android 3D 旋转的三角形(一)
  10. Android 事件总线OTTO用法快速入门