`

Android的事件与相应接口(5)

阅读更多

                     主要的事件我们可以想象到,平时经常在手机屏幕中操作的我们,应该可以想到几个吧

 

  • 单击事件
  • 长按事件
  • 键盘事件
  • 焦点事件
  • 触摸事件
  • 创建上下文事件

1.单击事件

 

我们来做一个实例去认识单击事件,点击按钮让图片切换竖屏显示和横屏显示。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/change"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="切换显示方式(当前为竖屏)" />

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/a" />

</LinearLayout>
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {

	private Button change=null;
	private ImageView image=null;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.change=(Button)super.findViewById(R.id.change);
		this.image=(ImageView)super.findViewById(R.id.image);
		this.change.setOnClickListener(new MyClik());
	}
	public class MyClik implements OnClickListener {

		@Override
		public void onClick(View arg0) {
			if(MainActivity.this.getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED){
				MainActivity.this.change.setText("错误无法显示屏幕");
			}
			else if(MainActivity.this.getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
				MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
				MainActivity.this.change.setText("当前为横屏");
				
			}
			else if(MainActivity.this.getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
				MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
				MainActivity.this.change.setText("当前为竖屏");
				

			}

		}

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	

}

  

这里我们看到之前我们定义的按钮显示文字(显示横屏竖屏状态)并未改变,这是为什么呢,原来我们需要用到onconfiguratinchanged,系统改变设置,一旦定义需要监听切换就需要用到这个。

public void onConfigurationChangeed(Configuration newConfig){
		if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
			MainActivity.this.change.setText("当前屏幕为横屏");
		}
		else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT){
			MainActivity.this.change.setText("当前屏幕为竖屏");
		}
		
		super.onConfigurationChanged(newConfig);
	}

然后记得配置权限:

 <activity
            android:name="com.example.myapp.MainActivity"
            android:configChanges="orientation"
       
            android:screenOrientation="portrait"
           
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

 则就能实现了

 

  • 复选框
  •  单选

复选框实现一个密文输入,然后选中显示密码复选框然后编辑框显示明文

单选实现选择监听显示在能不能框内

 <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="请输入你的密码" />

    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="38dp"
        android:ems="10"
        android:password="true" >

        <requestFocus />
    </EditText>

    <CheckBox
        android:id="@+id/checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:onClick="onClick"
        android:text="显示密码" />

    <RadioGroup
        android:id="@+id/sex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="60dp" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="您的性别是" />

        <RadioButton
            android:id="@+id/female"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="男" />

        <RadioButton
            android:id="@+id/male"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女" />

    </RadioGroup>

 在主文件.java里面代码是:

public class MainActivity extends Activity {

	private EditText password=null;
	private CheckBox show=null;
	private TextView txt=null;
	private RadioGroup sex=null;
	private RadioButton female=null;
	private RadioButton male=null;
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.password=(EditText)super.findViewById(R.id.password);
		this.show=(CheckBox)super.findViewById(R.id.checkbox);
		this.txt=(TextView)super.findViewById(R.id.textView1);
		this.sex=(RadioGroup)super.findViewById(R.id.sex);
		this.female=(RadioButton)super.findViewById(R.id.female);
		this.male=(RadioButton)super.findViewById(R.id.male);
		this.sex.setOnCheckedChangeListener(new OnCheckedListener());
		
		
	}
	private class OnCheckedListener implements OnCheckedChangeListener{

		@Override
		public void onCheckedChanged(RadioGroup arg0, int id) {
			String t=null;
			if(MainActivity.this.male.getId()==id){
				t=MainActivity.this.male.getText().toString();
			}
			if(MainActivity.this.female.getId()==id){
				t=MainActivity.this.female.getText().toString();
			}
			
			MainActivity.this.txt.setText(t);
			
		}
		
	}
	
	public void onClick(View v){
		if(show.isChecked()){
			MainActivity.this.password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
			
		}
		else{			MainActivity.this.password.setTransformationMethod(PasswordTransformationMethod.getInstance());
		}
		
		
	}

//    private class onCheckedChanges implements OnClickListener{
//
//		@Override
//		public void onClick(View arg0) {
//			if(show.isChecked()){
//				MainActivity.this.password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
//				
//			}
//			else{
//				MainActivity.this.password.setTransformationMethod(PasswordTransformationMethod.getInstance());
//			}
//			
//		}
//    	
//    }
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

 然后我们再实现下拉列表监听:

只需要加上这几句代码:

 <TextView
            android:id="@+id/cityshow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="您喜欢的城市是:" />

        <Spinner
            android:id="@+id/city"
            android:layout_width="193dp"
            android:entries="@array/city"   //这个列表内容显示是之前讲过的,自己定义的xml文件
            android:layout_height="52dp" />


.java中加上

this.city=(Spinner)super.findViewById(R.id.city);
		this.city.setOnItemSelectedListener(new spinnerListener());
		
		
		
	}
	private class spinnerListener implements OnItemSelectedListener{
		

		@Override
		public void onItemSelected(AdapterView<?> adapter, View arg1, int position,
				long id) {
			String value=adapter.getItemAtPosition(position).toString();
			MainActivity.this.cityshow.setText("您喜欢的城市是:"+value);
			
		}

 效果如下:



 

 
 

 


 
 

 

 
 

 

  • 大小: 66.8 KB
  • 大小: 45.4 KB
  • 大小: 56.4 KB
  • 大小: 27.4 KB
  • 大小: 45 KB
  • 大小: 50.2 KB
  • 大小: 51.4 KB
1
0
分享到:
评论

相关推荐

    Android使用回调接口下载图片

    总结来说,"Android使用回调接口下载图片"这个实例展示了Android开发中如何有效地处理异步任务,特别是网络请求与UI更新的协调,以及如何利用回调接口实现通信。理解和掌握这些知识点对于成为一名合格的Android...

    Android通过Camera API接口控制外接 USB 摄像头.pdf

    Android 平台支持使用即插即用的 USB 摄像头(即网络摄像头),但前提是这些摄像头采用标准的 Android Camera2 API 和摄像头 HIDL 接口。网络摄像头通常支持 USB 视频类 (UVC) 驱动程序,并且在 Linux 上,系统采用...

    android接口回调详解、简单例子+复杂例子

    在Android中,这通常发生在Activity、Fragment或Service等组件之间,用于处理事件响应或传递数据。 工作原理: 1. 定义接口:首先,我们需要定义一个接口,该接口包含一个或多个方法,用于接收和处理回调信息。 2. ...

    Android底层接口和驱动开发技术详解-下载代码

    首先,Android底层接口是指Android系统与硬件之间的通信桥梁,主要涉及HAL(Hardware Abstraction Layer,硬件抽象层)。HAL允许操作系统独立于具体的硬件实现,为上层应用程序提供一致的接口。它通常包括一系列C/...

    android接口回调

    总结,Android接口回调是组件间通信的关键技术,它允许在异步操作完成后进行相应的处理,如更新UI。理解并熟练运用接口回调是Android开发的基础,也是提升应用性能和用户体验的重要手段。在实际开发中,根据需求灵活...

    Android本地注入事件

    4. **EventHub**与**InputReader**:这是Linux内核中处理输入事件的部分,EventHub负责从/dev/input/event*读取事件,InputReader解析事件并传递给Android框架。 5. **AccessibilityService**:这是实现事件注入的...

    android检测U盘插拔事件

    在Android系统中,检测U盘(USB存储设备)的热插拔事件是一项常见的需求,尤其在开发与USB设备交互的应用时。"android检测U盘插拔事件"这个标题揭示了我们要探讨的核心技术点:如何在Android应用中监听并处理U盘的...

    Android开发及相应事件

    在布局XML文件中,可以通过`onClick`属性指定点击事件的处理函数,而在Java代码中,需要实现`OnClickListener`接口来处理这些事件。 日志查看是调试的重要部分,使用`LogCat`可以查看应用运行时的日志信息。安装和...

    Qt for android触摸手势事件QGestureEvent

    在本文中,我们将深入探讨如何在Qt for Android环境中利用QGestureEvent处理触摸手势事件。Qt是一个跨平台的应用程序开发框架,支持多种操作系统,包括Android。它提供了丰富的功能,使开发者能够在移动设备上创建...

    android studio下使用aidl接口传递自定义对象

    当你在服务中定义一个AIDL接口,并在客户端调用这个接口时,系统会自动生成相应的 Binder 类,以处理跨进程的调用。 接下来,我们将详细步骤分解如下: 1. **创建AIDL文件**: 在Android Studio中,创建一个新的...

    Android 通过自定义Dialog来理解接口回调callback

    5. **处理回调事件**:在Dialog中,当用户触发某个事件(如点击按钮)时,Dialog会调用接口方法,将事件通知给Activity或Fragment。例如,当用户点击确定按钮时,Dialog会调用`OnDialogButtonClickListener....

    Android APP 用interface 接口的形式对jni进行回调,实例测试

    在Android应用开发中,JNI(Java Native Interface)是Java与本地代码交互的一种方式,它允许开发者使用C++、C等语言编写部分性能敏感或需要利用硬件特性功能的代码。本实例测试主要探讨如何通过Java接口(interface...

    Android 事件处理机制 demo

    在Android应用开发中,事件处理机制是至关重要的组成部分,它涉及到用户与应用程序的交互,包括点击、滑动等各类操作。本示例"Android 事件处理机制 demo"将深入探讨这一主题,通过实际代码演示如何有效地管理和响应...

    android事件的处理模型和多线程的处理方法

    本文将深入探讨Android的事件传递机制,尤其是基于回调和监听接口的方式,以及多线程处理在Android平台上的实现。 首先,Android事件处理主要围绕Input子系统进行,它包含了键盘、触摸屏等设备输入的管理和分发。...

    android事件分发机制

    当用户与设备交互,如点击屏幕或按下物理按键时,硬件会生成相应的事件,这些事件由Android系统的输入系统捕获,并转化为软件可处理的Event对象。Event对象包含了事件类型、时间戳、坐标等关键信息。 按键事件主要...

    android注册广播方式接口回调

    当我们谈论“android注册广播方式接口回调”时,我们关注的是如何在Android应用中注册广播接收器以及接收广播事件后执行相应的回调方法。这里我们将深入探讨两种主要的广播注册方式:静态注册和动态注册,以及它们...

    Android 点击事件demo

    在Android应用开发中,点击事件是用户与应用交互的基础,它使得用户可以通过触摸屏幕来触发相应的功能。本Demo,"Android 点击事件demo",旨在深入解析Android中点击事件的处理机制,帮助开发者更好地理解和运用。...

    Android 滴滴打车接口开发

    5. **权限管理**:在Android系统中,获取用户位置等敏感信息需要申请相应的权限,开发者需了解Android的权限管理系统,确保应用在运行时有合适的权限。 6. **推送通知**:为了提供良好的用户体验,滴滴打车可能会...

    Android和H5互调

    H5可以触发一个特定的URL,如`android://myAction`,Android的WebViewClient会在拦截到这个URL时执行相应的处理逻辑。 三、安全与兼容性 1. 安全性:暴露给JavaScript的Java对象可能会导致安全问题,因此需要对可...

Global site tag (gtag.js) - Google Analytics