主要的事件我们可以想象到,平时经常在手机屏幕中操作的我们,应该可以想到几个吧
- 单击事件
- 长按事件
- 键盘事件
- 焦点事件
- 触摸事件
- 创建上下文事件
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); }
效果如下:
相关推荐
总结来说,"Android使用回调接口下载图片"这个实例展示了Android开发中如何有效地处理异步任务,特别是网络请求与UI更新的协调,以及如何利用回调接口实现通信。理解和掌握这些知识点对于成为一名合格的Android...
Android 平台支持使用即插即用的 USB 摄像头(即网络摄像头),但前提是这些摄像头采用标准的 Android Camera2 API 和摄像头 HIDL 接口。网络摄像头通常支持 USB 视频类 (UVC) 驱动程序,并且在 Linux 上,系统采用...
在Android中,这通常发生在Activity、Fragment或Service等组件之间,用于处理事件响应或传递数据。 工作原理: 1. 定义接口:首先,我们需要定义一个接口,该接口包含一个或多个方法,用于接收和处理回调信息。 2. ...
首先,Android底层接口是指Android系统与硬件之间的通信桥梁,主要涉及HAL(Hardware Abstraction Layer,硬件抽象层)。HAL允许操作系统独立于具体的硬件实现,为上层应用程序提供一致的接口。它通常包括一系列C/...
总结,Android接口回调是组件间通信的关键技术,它允许在异步操作完成后进行相应的处理,如更新UI。理解并熟练运用接口回调是Android开发的基础,也是提升应用性能和用户体验的重要手段。在实际开发中,根据需求灵活...
4. **EventHub**与**InputReader**:这是Linux内核中处理输入事件的部分,EventHub负责从/dev/input/event*读取事件,InputReader解析事件并传递给Android框架。 5. **AccessibilityService**:这是实现事件注入的...
在Android系统中,检测U盘(USB存储设备)的热插拔事件是一项常见的需求,尤其在开发与USB设备交互的应用时。"android检测U盘插拔事件"这个标题揭示了我们要探讨的核心技术点:如何在Android应用中监听并处理U盘的...
在布局XML文件中,可以通过`onClick`属性指定点击事件的处理函数,而在Java代码中,需要实现`OnClickListener`接口来处理这些事件。 日志查看是调试的重要部分,使用`LogCat`可以查看应用运行时的日志信息。安装和...
在本文中,我们将深入探讨如何在Qt for Android环境中利用QGestureEvent处理触摸手势事件。Qt是一个跨平台的应用程序开发框架,支持多种操作系统,包括Android。它提供了丰富的功能,使开发者能够在移动设备上创建...
当你在服务中定义一个AIDL接口,并在客户端调用这个接口时,系统会自动生成相应的 Binder 类,以处理跨进程的调用。 接下来,我们将详细步骤分解如下: 1. **创建AIDL文件**: 在Android Studio中,创建一个新的...
5. **处理回调事件**:在Dialog中,当用户触发某个事件(如点击按钮)时,Dialog会调用接口方法,将事件通知给Activity或Fragment。例如,当用户点击确定按钮时,Dialog会调用`OnDialogButtonClickListener....
在Android应用开发中,JNI(Java Native Interface)是Java与本地代码交互的一种方式,它允许开发者使用C++、C等语言编写部分性能敏感或需要利用硬件特性功能的代码。本实例测试主要探讨如何通过Java接口(interface...
在Android应用开发中,事件处理机制是至关重要的组成部分,它涉及到用户与应用程序的交互,包括点击、滑动等各类操作。本示例"Android 事件处理机制 demo"将深入探讨这一主题,通过实际代码演示如何有效地管理和响应...
本文将深入探讨Android的事件传递机制,尤其是基于回调和监听接口的方式,以及多线程处理在Android平台上的实现。 首先,Android事件处理主要围绕Input子系统进行,它包含了键盘、触摸屏等设备输入的管理和分发。...
当用户与设备交互,如点击屏幕或按下物理按键时,硬件会生成相应的事件,这些事件由Android系统的输入系统捕获,并转化为软件可处理的Event对象。Event对象包含了事件类型、时间戳、坐标等关键信息。 按键事件主要...
当我们谈论“android注册广播方式接口回调”时,我们关注的是如何在Android应用中注册广播接收器以及接收广播事件后执行相应的回调方法。这里我们将深入探讨两种主要的广播注册方式:静态注册和动态注册,以及它们...
在Android应用开发中,点击事件是用户与应用交互的基础,它使得用户可以通过触摸屏幕来触发相应的功能。本Demo,"Android 点击事件demo",旨在深入解析Android中点击事件的处理机制,帮助开发者更好地理解和运用。...
5. **权限管理**:在Android系统中,获取用户位置等敏感信息需要申请相应的权限,开发者需了解Android的权限管理系统,确保应用在运行时有合适的权限。 6. **推送通知**:为了提供良好的用户体验,滴滴打车可能会...
H5可以触发一个特定的URL,如`android://myAction`,Android的WebViewClient会在拦截到这个URL时执行相应的处理逻辑。 三、安全与兼容性 1. 安全性:暴露给JavaScript的Java对象可能会导致安全问题,因此需要对可...