`

Android事件处理(6)

 
阅读更多

 

          这里接着上节课的内容,现在我们是要把2,3节课学到的组件的事件监听方法全部练一遍,所以接下来就是

  • 监听日期与时间的改变
  • 焦点事件

一下是.java代码:

package com.example.timelongclick;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;

public class Timelong extends Activity {

	private TimePicker time=null;
	private DatePicker date=null;
	private EditText show=null;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_timelong);
		this.show=(EditText)super.findViewById(R.id.editText1);
		this.date=(DatePicker)super.findViewById(R.id.datePicker1);
		this.time=(TimePicker)super.findViewById(R.id.timePicker1);
		this.time.setIs24HourView(true);
		this.time.setOnTimeChangedListener(new onTimeChanged());
		this.date.init(this.date.getYear(), this.date.getMonth(), this.date.getDayOfMonth(), new onDateChanged());
		this.setDateTime();
	}

	private void setDateTime() {
		this.show.setText(this.date.getYear()+"-"+(this.date.getMonth()+1)+"-"+this.date.getDayOfMonth()+"  "
				+this.time.getCurrentHour()+":"+this.time.getCurrentMinute());
		
	}
   private class onTimeChanged implements OnTimeChangedListener{

	@Override
	public void onTimeChanged(TimePicker arg0, int arg1, int arg2) {
		Timelong.this.setDateTime();
		
	}
	   
   }
   private class onDateChanged implements OnDateChangedListener{

	@Override
	public void onDateChanged(DatePicker arg0, int arg1, int arg2, int arg3) {
		// TODO Auto-generated method stub
		Timelong.this.setDateTime();
	}
	   
   }
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.timelong, menu);
		return true;
	}

}

这里有两个比较重要的监听器:

OnTimeChangedListe和OnDateChangedListener

以上代码是实现监听时间的改变,并显示出来


焦点实例,定义一个显示框,二个输入框,其中一个框绑定焦点事件,也就是在这个框输入时显示获得焦点,若离开框则失去焦点。


这里是主界面
 

public class Timelong extends Activity {

	private EditText edit=null;
	private TextView text=null;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_timelong);
		this.edit=(EditText)super.findViewById(R.id.edit);
		this.text=(TextView)super.findViewById(R.id.text);
		this.edit.setOnFocusChangeListener(new Focus());
	}
	public void onClick(View v){
		this.edit.setText("");
	}
	private class Focus implements OnFocusChangeListener{

		@Override
		public void onFocusChange(View v, boolean focus) {
		if(v.getId()==Timelong.this.edit.getId()){
			if(focus){
				Timelong.this.text.setText("文本组件获得焦点");
			}
			else if(Timelong.this.edit.getText().length()>0){
				Timelong.this.text.setText("文本组件失去焦点");
			}
			else{
				Timelong.this.text.setText("文本组件失去焦点2");
			}
		}
			
		}
		
	}

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

}

 


  •  长按事件   这里也是个重点,相信大家用过很多长按事件吧像长按保存图片复制粘贴等功能,这里我们要做到一个长按图片换成手机背景图的实例,做自己的换背景图神器是不是有点小期待呢?吻

首先我们要在配置文件xml里定义TextView和ImageView

然后设置换图片权限:

  1. <uses-permissionandroid:name="android.permission.SET_WALLPAPER"/>

 
 代码:

public class Timelong extends Activity {

	
	private TextView text=null;
	private ImageView image=null;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_timelong);
		
		this.text=(TextView)super.findViewById(R.id.text);
		this.image=(ImageView)super.findViewById(R.id.image);
		this.image.setOnLongClickListener(new LongClick());
		
	}
	private class LongClick implements OnLongClickListener{

		@Override
		public boolean onLongClick(View arg0) {
           
            try {
            	 Timelong.this.clearWallpaper();
				Timelong.this.setWallpaper(Timelong.this.image.getResources().openRawResource(R.drawable.wall));
			} catch (NotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			return false;
		}
		
	}
	

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

}

 显示效果如下:




返回手机界面发现图片换好啦,有兴趣可以做一个好一点的换图神器啦



 
 
 
 

 

 

 

 

          

  • 大小: 53.5 KB
  • 大小: 54.2 KB
  • 大小: 2.8 KB
  • 大小: 66.8 KB
  • 大小: 362.1 KB
  • 大小: 363.2 KB
0
1
分享到:
评论

相关推荐

    Android 事件处理机制

    Android事件处理机制

    Android键盘事件处理例子

    在Android开发中,键盘事件处理是一项重要的技能,它涉及到用户输入的交互逻辑,对提升应用的用户体验至关重要。本文将深入探讨Android键盘事件处理,并通过一个实际的案例来讲解相关知识点。 首先,Android中的...

    Android事件处理.ppt

    Android事件处理

    Android事件处理机制详解及源码

    Android事件处理机制是Android应用程序开发中的关键组成部分,它使得用户与应用之间能够进行有效的交互。在Android系统中,事件处理主要包括触摸事件、键盘事件、广播事件等,这些事件的处理方式直接影响到应用的...

    Android应用程序输入事件处理机制

    在Android应用程序中,有一类...这个PPT讲Android应用程序输入事件的分发和处理过程,主要涉及到输入管理InputManager、输入事件监控线程InputReader、输入事件分发线程InputDispatcher,以及应用程序主线程消息循环。

    Android事件处理

    3.1 Android事件处理概述 3.2 基于监听的事件处理 3.3 基于回调的事件处理 3.4 响应的系统设置的事件 3.5 Handler消息传递机制

    android事件处理

    Android事件处理系统允许应用程序响应用户的触摸、键盘输入、网络变化等各种事件。本篇将详细解析Android事件处理机制,特别是基于给定的"android 事件处理demo",我们将深入探讨如何在实际应用中处理触摸事件。 ...

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

    首先,Android事件处理主要围绕Input子系统进行,它包含了键盘、触摸屏等设备输入的管理和分发。InputManager是这一子系统的核心,它在Java层和C++层都有相应的实现。在Java层,WindowManagerService创建Input...

    Android 事件处理机制 demo

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

    自己写的android事件分发拦截处理的代码可以清楚知道事件分发拦截和处理的过程.rar

    综上所述,这个压缩包中的代码可以帮助开发者深入理解Android事件分发的机制,并提供实际的代码示例,以便学习如何拦截和处理触摸事件。不过,由于描述中提到部分代码可能不可用,因此实际使用时可能需要进行调整。...

    Android、教程<经典> 6 Android事件处理

    长期更新的Android事件处理教程应该会涵盖以上各个知识点,并随着Android版本的更新,介绍新的API和最佳实践。例如,Android Jetpack中的`ViewBinding`简化了视图引用,`MotionEvent`提供了更精细的触摸事件处理,...

    基于Android平台的事件处理

    ### 基于Android平台的事件处理 #### 摘要与背景介绍 随着3G网络的普及,移动终端的功能愈发强大,不仅限于传统的通讯工具,还成为了连接互联网的重要载体。这一变化催生了大量的移动应用需求,特别是针对智能设备...

    android事件派发验证demo

    通过这个demo,开发者可以直观地了解Android事件处理机制,并进行实际操作以验证其工作原理。这对于优化用户界面交互和调试事件处理问题具有重要的实践意义。在实际开发中,灵活运用事件派发机制可以创建更高效、...

    Delphi Android 广播事件处理

    在本文中,我们将深入探讨如何使用Delphi这个强大的RAD(快速应用开发)工具来处理Android系统的广播事件,特别是静态注册广播接收器的方式。 首先,我们要了解广播接收器(BroadcastReceiver)。在Delphi中,广播...

    Android事件分发处理

    在Android系统中,事件分发处理是用户界面交互的核心机制,尤其对于触摸...例如,`ButtonClickEvent`可能是一个用于深入研究按钮点击事件处理的示例,它可以帮助我们更好地理解事件处理在Android应用开发中的实际应用。

    android之Touch事件处理机制测试

    本文将深入探讨“android之Touch事件处理机制测试”,包括滑动事件冲突的解决、ViewGroup中的事件触发和传递机制。 一、Android Touch事件处理机制 1. 触摸事件流程:在Android中,触摸事件分为三个阶段,即ACTION...

    android事件分发流程

    在实际应用中,我们可能会遇到需要自定义事件处理的情况。例如,有时我们需要让一个父View拦截并处理所有子View的事件,这时可以通过覆写`onInterceptTouchEvent()`方法来实现。同时,通过覆写`onTouchEvent()`,...

    android 事件传递demo

    6. 自定义View与事件处理 对于自定义View,开发者可以重写onTouchEvent()方法,根据ACTION_DOWN、ACTION_UP等事件类型来执行相应的操作。同时,如果需要在ViewGroup内拦截事件,可以在自定义的ViewGroup中重写...

Global site tag (gtag.js) - Google Analytics