【Android】日期拾取器、时间拾取器与菜单

在安卓4.4的工程中,每次新建工程同样会出现Helloworld,但不同于以前的版本,现在的Helloworld还自带菜单。这篇文章配合安卓的常用组件日期拾取器、时间拾取器来讲解安卓菜单怎么修改。日期拾取器、时间拾取器两个组件很大,一般情况下,建议使用《【Android】多个Activity之间利用bundle传递数值》(点击打开链接)中介绍的方式,为日期拾取器、时间拾取器新开一个Activity进行交互。

如下图的一个app:

一进入app,在右下角里面显示当前的时间。

通过移动日期拾取器、时间拾取器,右下角的时间会跟着修改。

同时把新建App时,在右上角的自带的菜单,修改成带一个“退出”的子项,关闭这个app。

1、首先,对res\value\strings.xml中,所定义的字符串,修改成如下的代码。主要是修改app的名称,与菜单的子项。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">拾取器与菜单</string>
    <string name="menu_exit">退出</string>

</resources>

2、之后是修改res\menu\main.xml,定义右上角菜单的子项,修改成如下的代码,定义子项的id为menu_exit,同时其显示的字体为string的menu_exit字符串,也就是“退出”二字。

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_exit"
        android:title="@string/menu_exit"/>

</menu>

3、其次是修改res\layout\activity_main.xml,对MainActivity.java进行布局,此处的布局思想如下,其中,在线性布局的组件皆居中,即设置android:layout_gravity="center_vertical"。

因此,就把res\layout\activity_main.xml修改如下,对要操作的组件赋予id:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <DatePicker
        android:id="@+id/datePicker1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:calendarViewShown="false" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TimePicker
            android:id="@+id/timePicker1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

其中,日期拾取器中设置:android:calendarViewShown="false"即设置不显示其自带的日期组件。

时间拾取器默认是12小时制的,这里运行效果是24小时制的是在Mainactivity.java所设置。

日期拾取器、时间拾取器不推荐放在一行,这两个组件没有自带的大小属性调节其大小。如果要调节其大小,要在Java中写成很的代码,而且网上所流传的资料,对与android api8是无效的,也就是android2.2。这里不推荐这样做。

4、最后,对Mainactivity.java编写如下的代码,这里的代码分为两部分,一部分是Mainactivity.java内部的日期拾取器、时间拾取器,一部分是菜单的代码。其中,取出当前系统的年月日时分秒,使用到Calendar实例,也就是《【Java】使用Calendar类来获取当前的日期》(点击打开链接)中的方法。这里不再赘述了。

package com.Picker;

import java.util.Calendar;
import java.util.GregorianCalendar;

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

public class MainActivity extends Activity {
	private DatePicker datePicker1;
	private TimePicker timePicker1;
	private TextView textView1;
	private TextView textView2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 取出当前的年月日时分
		Calendar calendar = Calendar.getInstance();
		int year = calendar.get(GregorianCalendar.YEAR);
		int month = calendar.get(GregorianCalendar.MONTH) + 1;
		int day = calendar.get(GregorianCalendar.DAY_OF_MONTH);
		int hour = calendar.get(GregorianCalendar.HOUR);
		int minutes = calendar.get(GregorianCalendar.MINUTE);
		//获取各个组件
		textView1 = (TextView) findViewById(R.id.textView1);
		textView2 = (TextView) findViewById(R.id.textView2);
		datePicker1 = (DatePicker) findViewById(R.id.datePicker1);
		timePicker1 = (TimePicker) findViewById(R.id.timePicker1);
		//设置时间拾取器为24小时制
		timePicker1.setIs24HourView(true);
		//程序一开始先初始化两个标签文本,将其设置为当前时期。
		textView1.setText(year + "年" + month + "月" + day + "日");
		textView2.setText(hour + ":" + minutes);
		//对日期拾取器设置监听器,注意其设置方法与其他组建不同,需要通过其初始化方法来设置
		datePicker1.init(year, month, day, new OnDateChangedListener() {
			@Override
			public void onDateChanged(DatePicker arg0, int year, int month,
					int day) {
				//如果其被修改,则改变标签文本1,其中这里的月份同样是需要+1才等于正常的月份
				textView1.setText(year + "年" + (month+1) + "月" + day + "日");
			}
		});
		//时间拾取器被修改的监听器
		timePicker1.setOnTimeChangedListener(new OnTimeChangedListener() {
			@Override
			public void onTimeChanged(TimePicker arg0, int hour, int minutes) {
				//一旦修改,则修改标签文本2
				textView2.setText(hour + ":" + minutes);
			}
		});
	}

	// 创建menu的方法,没有该方法,不会在右上角设置菜单。
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// 设置menu界面为res\menu\menu.xml
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	// 处理菜单事件
	public boolean onOptionsItemSelected(MenuItem item) {
		// 得到当前选中的MenuItem的ID,
		int item_id = item.getItemId();
		switch (item_id) {
		//设置id为menu_exit的菜单子项所要执行的方法。
		case R.id.menu_exit:
			finish();//关闭MainActivity这个Activity。相当于结束程序,写成System.exit(0)也可以。
			break;
		}
		return true;
	}
}
时间: 2024-07-31 01:40:47

【Android】日期拾取器、时间拾取器与菜单的相关文章

适合移动应用的日期时间拾取器

这是一个适合移动设备WEB应用的日期和时间拾取器,在桌面版的日期拾取器我们一般用jQuery UI的datepicker插件,而移动手机版的日期拾取器则可以根据项目需求选择与jQuery Mobile配合的mobiscroll.js插件,它提供了友好的日期和时间选择操作界面,且易于配置和使用. 查看演示 下载源码 HTML 首先我们加载相关插件和样式文件,该插件基于jQuery和jQuery.mobile所以首先需要加载这两个库文件,然后再加载mobiscroll.js插件以及相关CSS文件.

[Swift通天遁地]二、表格表单-(16)在表单行内嵌入日期和时间拾取器

本文将演示如何在表单行内嵌拾取器. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 现在开始编写代码,实现在表单行内嵌入日期和时间拾取器. 1 import UIKit 2 //首先在当前类文件中, 3 //引入以及安装的第三方类库 4 import Eureka 5 6 //修改当前视图控制器类的父类的名称 7 class ViewController: FormViewController { 8 9 override func viewDidLoad()

UIDatePicker 日期/时间选取器(滚轮)—IOS开发

UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作.你也可以对其进行定制,令其使用任何范围的日期. UIDatePicker 依赖于 NSDate 类,这个类是cocoa 基础的一员,以前用于桌面系统.本文中仅需用到 initWithString 来创建NSDate 所以NSDate 留待专题讲解,你只需

UIDatePicker日期/时间选取器的用法 与+NSDate和NSString的相互转换

 UIDatePicker日期/时间选取器 UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作.你也可以对其进行定制,令其使用任何范围的日期. UIDatePicker 依赖于 NSDate 类,这个类是cocoa 基础的一员,以前用于桌面系统.本文中仅需用到 initWithString 来创建NSDa

UIDatepicker 日期时间选取器(滚动)

UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作.你也可以对其进行定制,令其使用任何范围的日期. UIDatePicker 依赖于 NSDate 类,这个类是cocoa 基础的一员,以前用于桌面系统.本文中仅需用到 initWithString 来创建NSDate 所以NSDate 留待专题讲解,你只需

Android开发---MediaPlayer简单音乐播放器

Android开发-MediaPlayer简单音乐播放器 功能介绍 实现一个简单的播放器,类似网易云音乐形式,功能包括: 播放.暂停,停止,退出功能: 后台播放功能: 进度条显示播放进度.拖动进度条改变进度功能: 播放时图片旋转,显示当前播放时间功能: 界面样式 功能实现 1. MediaPlayer的实现 MediaPlayer常用方法介绍 MediaPlayer的实现包括初始化MediaPlayer,MediaPlayer的功能实现,包括播放.暂停.停止.离开等,具体细节如下: MediaP

iOS开发自定义时间选取器

又是一年的暑假日期而至,小孩子放假,都会到在外打工的父母身边.孩子想父母,父母也思念着自己的孩子.我身边的亲戚朋友的孩子 也都来了.这个暑假又该热闹起来. 努力什么时候都不晚 我有一个表妹,今年参加完高考,对自己的成绩不是特别满意.上次我回老家,刚好她给我一起来上海.准备来上海锻炼一下. 车上我问她,准备去哪上学?她说不想上了,想打工.我没有怎么劝她,我想让她体验一下打工的生活,她就知道还是上学好. 一个高中生,出来找工作,困难可想而知.经姐姐介绍,进了一家餐厅工作.工资也不是很高.干了两天,我

java8 时间矫正器

private static void test5(){ //当前日期 LocalDateTime ldt=LocalDateTime.now(); System.out.println(ldt);//2017-11-04T13:46:39.537 //把日期调整为这月的10号,使用with来设置日 LocalDateTime ldt2=ldt.withDayOfMonth(10);//2017-11-04T13:46:39.537 System.out.println(ldt2); //下一个

Android多媒体框架对音乐播放器的支持

下面介绍一下Andriod多媒体框架对开发者提供的支持有哪些. 1. MediaScannerReceiver 这个广播接收者在接收到ACTION_BOOT_COMPLETED.ACTION_MEDIA_MOUNTED或 ACTION_MEDIA_SCANNER_SCAN_FILE 广播时对SD卡中的图片.音乐和视频文件进行了扫描,因为扫描不能影响用户使用,这里启动了一个服务MediaScannerService,扫描的文件类型如下: /* Audio */ addFileType("MP3&q