注册界面的设计与实现
1.简介
这次小实验通过RadioButton(单选按钮)、CheckBox(复选框)等组件实现一些个人信息的录入,同时介绍了如何使用带图片的Toast反馈信息。
2.源码
2.1通过【File】--->【New】-->【Other】-->【Android】-->【Android Application Project】新建一个Android project,起个名字【Register】
2.2在布局文件activity_main.xml里面编写我们的界面,代码如下:
<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="com.tonghua.register.MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请输入你的用户名" />
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:ems="10" >
<requestFocus
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
EditText>
<TextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请选择您的性别" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/maleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男" />
<RadioButton
android:id="@+id/femaleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女" />
<RadioButton
android:id="@+id/bothButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="双性" />
RadioGroup>
<TextView
android:id="@+id/textView3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请输入你的爱好:" />
<CheckBox
android:id="@+id/singBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="唱歌" />
<CheckBox
android:id="@+id/loveBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="拍拖" />
<CheckBox
android:id="@+id/lolBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="撸啊撸" />
<Button
android:id="@+id/registerBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:text="注册" />
LinearLayout>
2.3在MainActivity.java里面实现注册功能,代码如下:
3.package com.tonghua.datetime;
4.
5.import java.util.Calendar;
6.import java.util.Locale;
7.
8.import android.support.v7.app.ActionBarActivity;
9.import android.os.Bundle;
10.import android.view.KeyEvent;
11.import android.view.Menu;
12.import android.view.MenuItem;
13.import android.widget.DatePicker;
14.import android.widget.DatePicker.OnDateChangedListener;
15.import android.widget.TextView;
16.import android.widget.TimePicker;
17.import android.widget.Toast;
18.import android.widget.TimePicker.OnTimeChangedListener;
19.
20.public class MainActivity extends ActionBarActivity {
21.// 定义datepicker和timepicker对应日期和时间组件
22.private DatePicker datePicker;
23.private TimePicker timePicker;
24.private TextView dateTV, timeTV;// 对应两个文本框,用于显示结果
25.private Calendar mCalendar;// 定义一个日历对象,用于设置地区
26.private int iYear, iMonth, iDay, iHour, iMinute;// 记录日期和时间
27.
28.@Override
29.protected void onCreate(Bundle savedInstanceState) {
30.super.onCreate(savedInstanceState);
31.setContentView(R.layout.activity_main);
32.// 使四个组件对象与对应的组件绑定
33.datePicker = (DatePicker) findViewById(R.id.datePicker1);
34.timePicker = (TimePicker) findViewById(R.id.timePicker1);
35.dateTV = (TextView) findViewById(R.id.dateTV);
36.timeTV = (TextView) findViewById(R.id.timeTV);
37.// 将当前日历设置为中国日历
38.mCalendar = Calendar.getInstance(Locale.CHINA);
39.// 获取当前的年、月、日、小时、分钟
40.iYear = mCalendar.get(Calendar.YEAR);
41.iMonth = mCalendar.get(Calendar.MONTH);
42.iDay = mCalendar.get(Calendar.DAY_OF_MONTH);
43.iHour = mCalendar.get(Calendar.HOUR_OF_DAY);
44.iMinute = mCalendar.get(Calendar.MINUTE);
45.
46.// 设置TimePicker组件支持24小时制
47.timePicker.setIs24HourView(true);
48.// 初始化DataPicker组件,同时制定监听器
49.datePicker.init(iYear, iMonth, iDay, new OnDateChangedListener() {
50.@Override
51.public void onDateChanged(DatePicker view, int year,
52.int monthOfYear, int dayOfMonth) {
53.iYear = year;
54.iMonth = monthOfYear + 1;// 因为1月在系统中的初始值为0,所以需要加1
55.iDay = dayOfMonth;
56.// 在TextView里面显示设置好的日期
57.dateTV.setText("您设置的日期是:" + iYear + "年" + iMonth + "月" + iDay
58.+ "日");
59.
60.}
61.});
62.// 为TimePicker设置监听器
63.timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
64.@Override
65.public void onTimeChanged(TimePicker arg0, int hourOfDay, int minute) {
66.// TODO Auto-generated method stub
67.iHour = hourOfDay;
68.iMinute = minute;
69.// 在TextView里面显示设置好的时间
70.timeTV.setText("您 设置的时间是:" + iHour + "时" + iMinute + "分");
71.}
72.});
73.}
74.
75.// 下面是连按返回键退出程序
76.private long exitTime = 0;
77.
78.// 使用exitTime记录点击返回键的时间
79.@Override
80.public boolean onKeyDown(int keyCode, KeyEvent event) {
81.// 键盘按键的点击事件
82.if (keyCode == KeyEvent.KEYCODE_BACK
83.&& event.getAction() == KeyEvent.ACTION_DOWN) {
84.// 动作为按下,对象是返回键
85.if ((System.currentTimeMillis() - exitTime) > 2000) {
86.// 这次点击的时间与上次点击的时间的差值大于2秒
87.Toast.makeText(getApplicationContext(), "再按一次退出程序",
88.Toast.LENGTH_SHORT).show();
89.// 提示“再按一次退出程序”
90.exitTime = System.currentTimeMillis();
91.// 刷新时间
92.} else {
93.// 如果联系两次点击的时间差小于2秒,退出程序
94.finish();
95.System.exit(0);
96.}
97.return true;
98.}
99.return super.onKeyDown(keyCode, event);
100.}
101.}
3.运行与调试,在用户名框里面输入您的姓名,在性别选项里面选择您的性别(单选),然后选择爱好(多选),最后点击注册按钮,会有有趣的事情发生。
4.小提示:
Toast组件是一种给用户提示信息的视图,该视图以浮与应用程序之上的形式呈现给用户,而且显示的时间有限,过一段时间会自动消失,并且即使用户同时输入信息也不会受到影响。