`

Android学习07-----事件处理(1)单击事件_改变屏幕方向和密码明文显示

阅读更多

 

在前面总结了简单的 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. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// setContentView(R.layout.main);

		// 1、单击事件处理Demo
		super.setContentView(R.layout.onclick);
		this.btnChange = (Button) super.findViewById(R.id.btn_change);
		this.btnChange.setOnClickListener(new MyOnClickLlistenerImpl());

	}

	private class MyOnClickLlistenerImpl implements OnClickListener {

		@Override
		public 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);
				}
			}

		}
	}
	
	/**
	 * 表示的时系统设置修改的时候触发
	 */
	@Override
	public 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. */
	@Override
	public 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 {

		@Override
		public void onClick(View v) {
			if (EventActivity.this.show.isChecked()) {// 被选中,则显示明文
				// 将文本框的内容设置成明文显示
				EventActivity.this.password
						.setTransformationMethod(HideReturnsTransformationMethod
								.getInstance());
			} else {
				// 将文本框内容设置成密文的方式显示
				EventActivity.this.password
						.setTransformationMethod(PasswordTransformationMethod
								.getInstance());
			}
		}

	}

}

 

 

 

 

 

 

 

 

  • 大小: 30.8 KB
分享到:
评论

相关推荐

    android view 单击、双击和移动事件处理----TestViewEvent

    在Android开发中,View是用户界面的基本构建块,它提供了丰富的交互功能。...在`TestViewEvent`项目中,你可以学习到如何将这些概念应用于实际的开发场景,进一步加深对Android事件处理机制的理解。

    android-smart-image-view.zip

    这些功能的实现依赖于Android的`GestureDetector`和`ScaleGestureDetector`,通过监听用户的触摸事件来控制图像的移动和缩放。 再者,`android-smart-image-view`还支持多种手势操作,如单击、双击、长按等,开发者...

    使用OnTouch实现一个控件同时设置单击、双击、长按事件demo

    在这个案例中,我们将探讨如何利用`OnTouchListener`来同时处理一个控件的单击、双击和长按事件。以下是一个详细的实现步骤和知识点解析: ### 一、OnTouchListener概述 `OnTouchListener`是Android中的一个接口,...

    Android-用Label处理TextView并实现单击显示更多行

    在Android开发中,文本输入和显示是用户界面设计的关键部分,特别是当文本内容较长时,如何优雅地处理显示就成了一个挑战。"Android-用Label处理TextView并实现单击显示更多行"这一主题聚焦于如何利用特定的技术来...

    Android ListView的单击和长按时,避免同时执行

    综上所述,要避免在ListView中单击和长按事件同时执行,我们需要合理地设计事件监听器和处理逻辑,通过控制事件的顺序和状态来防止冲突。同时,利用Android提供的API或第三方库,我们可以进一步优化用户体验,使得...

    Android4.0以上外接鼠标-左键单击-右键捕获单击事件Demo

    Android4.0以上外接鼠标-左键单击-右键单击-捕获事件Demo; 网上没有这样的Demo,例子非常简单,节约下载者查询相关资料的时间。 如果用在ListView里面,只要在自定义的Adapter里面设置该监听事件;并在Activity的...

    C# winform 单击与双击事件同时存在例子

    然而,标题提到的一个常见问题是:在同一个控件上,C# WinForm不支持同时处理单击和双击事件。这是因为这两种事件在时间间隔上非常接近,系统通常会将连续两次快速点击识别为双击事件,而不是单独的两次单击事件。这...

    android listview单击事件

    总之,Android中的ListView单击事件处理是开发者必备的技能之一。通过理解ListView的工作原理,适当地设置监听器,并处理好点击事件,可以创建出交互丰富的应用程序。在这个过程中,不断优化性能和用户体验,将使你...

    Android参考源码-通过手势实现的缩放处理.zip

    在Android开发中,手势识别和处理是用户交互的重要部分,特别是在构建富媒体和复杂界面的应用时。本资源“Android参考源码-通过手势实现的缩放处理.zip”提供了一个示例项目,名为“MultiTouchTest”,它专注于实现...

    Android--开发--GesturesDemos.rar

    `GesturesDemos`是一个Android开发示例项目,专门展示了如何在Android应用中实现和处理各种手势识别。下面我们将详细探讨Android手势识别的原理、常用手势及如何在代码中实现。 1. **手势识别基础** - **...

    android中处理各种触摸事件

    本文将详细介绍Android中处理触摸事件的相关知识,并结合`android.view.GestureDetector`以及自定义监听器的使用来深入解析如何有效地识别和响应触摸事件。 #### 二、触摸事件基础 在Android中,触摸事件主要通过`...

    Android-keyboard-dismisser一个实现点击任何键盘外的部分来取消键盘的Android库

    这样,用户无需寻找特定的关闭按钮,只需单击屏幕空白处即可完成操作,提高了应用的流畅度和用户满意度。 使用Android-keyboard-dismisser库非常简单。开发者首先需要将库的源代码或者依赖添加到项目中。在压缩包...

    android-billing-services

    android-billing-services将模块连接到项目1.将子模块添加到项目存储库git submodule add https://github.com/LimeHD/android-billing-services.git2.将模块导入项目文件-&gt;新建-&gt;导入模块... 指定模块的路径,然后...

    Android图片的缩放和单击

    通过阅读和理解这段代码,你可以学习到如何在Android中实现自定义View以及如何处理触摸事件,这对于Android开发者来说是非常重要的技能。 总的来说,Android图片的缩放和单击是通过自定义View,如`ZoomImageView`,...

    Cocos2D-X2.2.3学习笔记8(处理精灵单击、双击和三连击事件)

    这篇学习笔记将探讨如何在Cocos2d-x 2.2.3版本中处理单击、双击以及三连击事件,这对于创建交互式游戏或者用户界面至关重要。Cocos2d-x是一个流行的跨平台2D游戏引擎,支持多种操作系统,如iOS、Android和Windows等...

    Android代码-Android图片浏览全屏缩放.zip

    【Android图片浏览全屏缩放】是一个Android应用开发中的常见需求,主要涉及到图像处理和UI交互方面的技术。在Android平台上,我们通常会使用ImageView组件来显示图片,但是要实现图片的全屏展示以及平滑缩放,需要更...

    Android高级编程--源代码

    作为使用androidsdk构建这些应用程序的实用指南书籍,《android高级编程》从始至终穿插了一系列示例项目,每个项目都引入android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍android的所有基本功能,并...

    易语言截获鼠标单击事件用于屏幕取色.rar

    在IT领域,编程时常需要对用户的操作进行监听和响应,比如截取屏幕颜色...通过这个项目,开发者不仅可以学习到易语言的事件处理机制,还能掌握屏幕取色的底层原理,这对于理解和开发图形用户界面的应用程序非常有帮助。

    android悬浮框的onTouch和onClick事件同时存在

    在实现悬浮窗时,我们经常需要处理用户的触摸交互,包括单击(onClick)和滑动(onTouch)事件。标题提到的“android悬浮框的onTouch和onClick事件同时存在”是指在悬浮窗上,既能够响应用户的点击操作,又能够正确...

    Android手势识别-多点触控

    多点触控在Android中主要涉及到处理MotionEvent对象,特别是ACTION_POINTER_DOWN和ACTION_POINTER_UP事件,这两个事件代表有额外的手指触碰屏幕或离开屏幕。ACTION_POINTER_INDEX_MASK和ACTION_POINTER_ID_SHIFT位...

Global site tag (gtag.js) - Google Analytics