`

Android学习07-----事件处理(3)监听日期与时间的改变_焦点事件_长按事件(修改桌面)

阅读更多

四、监听日期与时间的改变

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" >

    <EditText
        android:id="@+id/input"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="fill_parent"
    	android:layout_height="fill_parent"
    	android:orientation="vertical" >
    
        <DatePicker 
            android:id="@+id/date"
            android:layout_width="wrap_content"
    		android:layout_height="wrap_content"/>
        
        <TimePicker
            android:id="@+id/time"
            android:layout_width="wrap_content"
    		android:layout_height="wrap_content"/>
    
    </LinearLayout>

</LinearLayout>

 

Activity:

package com.iflytek.activity;

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

public class EventActivity extends Activity {

	private EditText input = null;
	private DatePicker date = null;
	private TimePicker time = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);

		input = (EditText) super.findViewById(R.id.input);
		date = (DatePicker) super.findViewById(R.id.date);
		time = (TimePicker) super.findViewById(R.id.time);

		// 设置24小时制显示时间
		this.time.setIs24HourView(true);

		// 时间监听
		this.time.setOnTimeChangedListener(new OnTimeChangedListenerImpl());

		// 日期监听器,注意这里的日期监听方式和以前有所区别
		this.date.init(this.date.getYear(), this.date.getMonth(),
				this.date.getDayOfMonth(), new OnDateChangedListenerImpl());
		
		this.setDateTime();

	}

	private class OnTimeChangedListenerImpl implements OnTimeChangedListener {

		@Override
		public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
			EventActivity.this.setDateTime();
		}

	}

	private class OnDateChangedListenerImpl implements OnDateChangedListener {

		@Override
		public void onDateChanged(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			EventActivity.this.setDateTime();
		}
	}

	public void setDateTime() {
		//注意这里的月份是从0开始的
		this.input.setText(this.date.getYear() + "-" + (this.date.getMonth()+1)
				+ "-" + this.date.getDayOfMonth() + " "
				+ this.time.getCurrentHour() + ":"
				+ this.time.getCurrentMinute());

	}

}
 

五、焦点事件

验证输入 Demo

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" >

	<EditText
		android:id="@+id/edit"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="请输入查询内容"/>
	<EditText
		android:id="@+id/msg"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="xdwang"/>
	<TextView 
		android:id="@+id/txt"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"/>

</LinearLayout>

 

Activity:

package com.iflytek.activity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.EditText;
import android.widget.TextView;

public class EventActivity extends Activity {

	private EditText edit = null;
	private TextView txt = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);

		this.edit = (EditText) super.findViewById(R.id.edit);
		this.txt = (TextView) super.findViewById(R.id.txt);

		this.edit.setOnClickListener(new OnClickListenerImpl());
		this.edit.setOnFocusChangeListener(new OnFocusChangeListenerImpl());

	}

	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View v) {
			EventActivity.this.edit.setText("");// 清空文本
		}
	}

	private class OnFocusChangeListenerImpl implements OnFocusChangeListener {
		@Override
		public void onFocusChange(View view, boolean hasFocus) {
			// view表示操作的组件,hasFocus表示是否获得焦点
			if (hasFocus) {// 已经获得了焦点
				EventActivity.this.txt.setText("获得了焦点");
			} else {
				if (EventActivity.this.edit.getText().length() > 0) {// 现在有数据
					EventActivity.this.txt.setText("文本输入组件失去焦点,输入内容合法");
				} else {
					EventActivity.this.txt.setText("文本输入组件失去焦点,输入内容不能为空!");
				}

			}
		}
	}

}

 

六、长按事件

设置桌面 Demo

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/info"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content" 
		android:text="长按图片将设置为桌面背景" />
	<ImageView
		android:id="@+id/img"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:src="@drawable/james_java"/> 

</LinearLayout>
 

AndroidManifest.xml加上:

       <!-- 允许设置桌面 -->
    <uses-permission android:name="android.permission.SET_WALLPAPER" />
 

Activity:

package com.iflytek.activity;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.ImageView;
import android.widget.TextView;

public class EventActivity extends Activity {

	private TextView info = null;
	private ImageView img = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);

		this.img = (ImageView) super.findViewById(R.id.img);
		this.info = (TextView) super.findViewById(R.id.info);
		
		this.img.setOnLongClickListener(new OnLongClickListenerImpl());
	}

	private class OnLongClickListenerImpl implements OnLongClickListener {
		@Override
		public boolean onLongClick(View v) {
			try {
				EventActivity.this.clearWallpaper();// 清除已有的桌面
				EventActivity.this.setWallpaper(EventActivity.this.img
						.getResources().openRawResource(R.drawable.james_java));// 设置桌面
				EventActivity.this.info.setText("桌面背景已修改.");
			} catch (Exception e) {
				e.printStackTrace() ;
				EventActivity.this.info.setText("桌面背景修改失败!");
			}
			return false;
		}
	}
}

 

 

分享到:
评论

相关推荐

    android自定义长按事件

    // 长按事件处理逻辑 } }; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: downTime = System.currentTimeMillis(); ...

    android:自定义长按/长点击事件

    首先,我们需要了解Android的基础事件处理机制。Android中的触摸事件主要通过`MotionEvent`类来传递,其中包括了`ACTION_DOWN`(手指按下)、`ACTION_UP`(手指抬起)、`ACTION_MOVE`(手指移动)等一系列动作。长按...

    Android长按屏幕事件

    首先,我们要理解Android事件处理的基本原理。在Android中,事件处理主要通过事件监听器(Event Listeners)来实现,包括点击事件、触摸事件等。对于长按事件,我们通常使用`View.OnLongClickListener`接口。当用户...

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

    3. 使用`return true`或`return false`控制事件的传递,防止其他监听器重复处理同一事件。 综上所述,通过`OnTouchListener`,我们可以灵活地实现对控件的单击、双击和长按事件的监听,从而提供更加丰富的用户交互...

    android Button监听事件的几种类型

    4. **View.OnLongClickListener**:此监听器用于处理长按事件。当用户对Button进行长按时,会触发onLongClick()方法。如果你需要在按钮被长按时执行某些操作,可以这样设置: ```java myButton....

    安卓(Android) 监听按键长按事件

    3. onKeyLongPress(int keyCode, KeyEvent event): 当用户长按时调用该方法,与onKeyDown不同的是,它处理的是长按事件。 在实现长按事件监听时,通常需要在onKeyDown中做一些判断和处理。例如,如果我们要监听音量...

    按键长按的一种监听方法

    在Android开发中,监听按键长按事件是一种常见的需求,它可以让用户通过长时间按下某个按钮来触发特定的功能。本文将深入探讨一种实现按键长按监听的方法,并结合提供的`LongPressTest`示例进行详细讲解。 首先,...

    Android例子源码自带日历改进版有长按监听

    这个"Android例子源码自带日历改进版有长按监听"是一个很好的学习资源,可以帮助开发者深入理解如何自定义日历视图并实现交互功能。下面我们将详细探讨这个例子中的关键知识点。 首先,这个例子的核心是自定义一个...

    Android解决文本链接长按事件与短按事件冲突的demo

    // 长按事件处理 for (LinkSpan span : getLinks()) { if (isTouchInSpan(e.getX(), e.getY(), span)) { // 在这里执行你的长按动作,比如弹出菜单、复制链接等 break; } } } @Override public boolean ...

    vue自定义移动端touch事件,点击、滑动、长按事件

    在移动设备上,为了实现与用户的交互,Vue.js 提供了一套基于原生 JavaScript `touch` 事件的自定义事件处理机制。Vue 的 touch 事件处理使得开发者可以在移动端项目中轻松实现点击、滑动和长按等操作。下面我们将...

    RecyclerView的长按事件和点击事件

    // 如果按下和抬起位置相同,且时间间隔满足长按条件,则处理长按事件 if (/* 检查长按条件 */) { int longPressedPosition = holder.getAdapterPosition(); // 执行长按操作 } else { // 如果不满足长按条件...

    Android长按圆型有颜色变化显示进度,长按结束事件

    Android长按圆型有颜色变化显示进度,长按结束事件:长按按钮是一个圆,加入了OnTouchListener事件的监听。长按后该圆会慢慢的变颜色,等到整个圆的颜色变化完成后,则触发另一事件。适用于长按结束事件,增加用户...

    谷歌开源的串口类android-serialport-api

    4. **事件监听**:为了实时处理串口数据,`android-serialport-api`提供了事件监听机制。开发者可以注册`SerialPortEventListener`,监听数据到达、端口状态改变等事件,这样可以实现异步通信。 5. **错误处理**:...

    ExpandableListView 点击和长按事件

    在`ExpandableListViewDemo`项目中,开发者通常会创建一个自定义的`ExpandableListAdapter`,在这个适配器中实现上述的点击和长按事件处理逻辑。同时,还需要在主活动中设置`ExpandableListView`并绑定适配器。 ...

    Android自定义按钮实现长按功能

    本教程将详细介绍如何为Android应用程序创建一个自定义按钮,实现长按事件处理的功能。长按操作在许多场景下都十分实用,比如菜单的呼出、选择操作等。 首先,我们需要创建一个新的XML布局文件来定义自定义按钮。在...

    android listview长按,单击各种事件捕捉

    // 返回true表示已经处理了长按事件,防止其他事件冲突 } }); ``` 3. 事件分发: 在ListView中,由于子View(比如ImageView或TextView)可能会有自己的点击事件,因此需要注意事件的分发。默认情况下,如果子...

    Android-LongPressPopup在视图上长按弹出一个窗口并处理其元素上的拖放事件

    在Android应用开发中,我们经常需要为用户提供交互式的体验,比如通过长按操作触发特定功能或展示...记得深入研究`RiccardoMoro-LongPressPopup-3fba8a8`的源码,这将有助于你掌握更多关于Android UI和事件处理的知识。

    Android ImageButton的使用 及长按Button的实现

    // 长按事件处理代码 return true; // 返回true表示已处理该事件,避免其他监听器接收 } }); ``` ### 5. 长按事件的源码实现 在Android中,`View`类提供了`setOnLongClickListener`方法来设置长按事件监听器。`...

    uni-app app实现web-view H5图片长按下载

    在uni-app框架中,开发移动应用时经常...同时,利用mui的事件处理能力,可以确保这一功能在多个平台上的兼容性和一致性。请注意,这只是一个基础示例,实际项目中可能需要根据具体需求进行更复杂的功能扩展和错误处理。

    Android代码-桌面显示今天日期源码.zip

    - 如果要在应用启动时或每天自动更新日期,可能使用了`BroadcastReceiver`监听系统时间变更事件,或者在应用启动时立即获取并显示日期,而不是依赖用户触发。 7. **生命周期管理**: - Android应用有特定的生命...

Global site tag (gtag.js) - Google Analytics