基本控件案例集锦(下)
DatePicker,TimePicker,AlertDialoig
1.DatePicker
1.1简介
1.简介:
- Android为用户提供显示日期与时间的控件DatePicker和TimePicker。
日期选择控件(DatePicker)主要功能是向用户提供包含年、月、日的日期数据并允许用户对其进行修改。 - 时间选择控件(TimePicker)向用户显示一天中的时间(可以为24小时制,也可以为AM/PM),并允许用户进行选择。
1.2样式
1.常见的两种样式?
- calendar模式或spinner模式
2.注意:
android:calendarViewShown用于设置是否显示calendar
- android:datePickerMode=“spinner”(或者calendar)
如果是spinner,需要加属性: - android:calendarViewShown="false"
1.3属性
1.常见的属性:
如果不设置初始日期则按照系统日期
1.4事件监听
注意:对于Java中初始化年份需要+1900年,因为Java中的年份是默认加上1900年。
1.如何设置对应的事件监听?
如果要捕获用户修改日期选择控件中数据的事件,需要为DatePicker添加onDateChangedListener监听器,实现OnDateChangeListner()方法。
public abstract void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
2.参数解释:
view 与监听器关联的视图。
year 用户设置的年。
monthOfYear 用户设置的月份(0-11),与Calendar兼容。
dayOfMonth 用户设置的日期。
1.5案例1-实时的显示当前的时间和日期
DateandTimeActivityDemo.java
1.第一步:创建布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- 1.-->
<DatePicker
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:calendarViewShown="false"
android:datePickerMode="spinner"
/>
<!-- 2.-->
<TimePicker
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timePickerMode="spinner"
/>
<!-- 3.-->
<EditText
android:id="@+id/et"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
第二步:创建activity
package com.example.basecontrols3;
import android.os.Bundle;
import android.app.Activity;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.TimePicker.OnTimeChangedListener;
import android.widget.TimePicker;
//DatePicker案例
public class DateandTimeActivityDemo extends Activity {
// 1.设置对象
DatePicker datePicker = null;
TimePicker timePicker = null;
EditText eText = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dateandtimedemo);
// 2.获取对象
eText = (EditText) findViewById(R.id.et);
datePicker = (DatePicker) findViewById(R.id.date);
timePicker = (TimePicker) findViewById(R.id.time);
// 3.设置24小时显示
timePicker.setIs24HourView(true);
// 4.设置时间的监听
timePicker.setOnTimeChangedListener(new OnSetTimeListener());
// 5.初始化当前的日期
datePicker.init(this.datePicker.getYear(), this.datePicker.getMonth(),
this.datePicker.getDayOfMonth(), new OnDateChangeListener());
// datePicker.init(1995,4,14,new OnDateChangeListener());
//设置默认时间
// timePicker.setCurrentHour(12);
// timePicker.setCurrentMinute(45);
//设置默认日期
// datePicker.updateDate(1997,4, 25);
}
// 6.获取当前的日期+时间
private void setDateTime() {
this.eText.setText((this.datePicker.getYear() + "-"
+ (this.datePicker.getMonth() + 1) + "-"
+ this.datePicker.getDayOfMonth() + " "
+ this.timePicker.getCurrentHour() + ":" + this.timePicker
.getCurrentMinute()));
}
// 4.1时间的监听(时间发生变化更新editText中的内容)
class OnSetTimeListener implements OnTimeChangedListener{
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
DateandTimeActivityDemo.this.setDateTime();
}
}
// 5.1日期的监听(发生变化就去更新editText中的内容)
class OnDateChangeListener implements OnDateChangedListener {
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
DateandTimeActivityDemo.this.setDateTime();
}
}
}
效果图:
2.TimePicker
2.1简介
1.用于时间的显示。
2.2常见的方法
1.常见的方法:
如果没有设置是否24小时制,则默认是12小时制,分上午,下午
2.3样式
1.常见的有两种样式?
- android:timePickerMode=“spinner”(或clock)
2.4事件监听
1.简介:如果要捕获用户修改时间数据的事件,则需要为TimePicker添加OnTimeChangedListener监听器,实现onTimeChanged()方法。
2.方法介绍:
- public abstract void onTimeChanged (TimePicker view, int hourOfDay, int minute)
参数解释: - View:与监听相关的视图。
- hourOfDay:当前小时
- Minute:当前分钟
2.4案例1-显示时间
1.要实现的效果:
- 实现如图所示效果:用24小时模式显示时间。
- 当鼠标拖动修改时间后在下面的
- TextView中显示当前日期和时间。
<DatePicker
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:calendarViewShown="false"
android:datePickerMode="spinner"
/>
2.5案例2-设置监听时间的日期
和前面的1.5中的案例是一个效果。
第一步:创建布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- 1.-->
<DatePicker
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:calendarViewShown="false"
android:datePickerMode="spinner"
/>
<!-- 2.-->
<TimePicker
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timePickerMode="spinner"
/>
<!-- 3.-->
<EditText
android:id="@+id/et"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
第二步:创建activity
package com.example.basecontrols3;
import android.os.Bundle;
import android.app.Activity;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.TimePicker.OnTimeChangedListener;
import android.widget.TimePicker;
//DatePicker案例
public class DateandTimeActivityDemo extends Activity {
// 1.设置对象
DatePicker datePicker = null;
TimePicker timePicker = null;
EditText eText = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dateandtimedemo);
// 2.获取对象
eText = (EditText) findViewById(R.id.et);
datePicker = (DatePicker) findViewById(R.id.date);
timePicker = (TimePicker) findViewById(R.id.time);
// 3.设置24小时显示
timePicker.setIs24HourView(true);
// 4.设置时间的监听
timePicker.setOnTimeChangedListener(new OnSetTimeListener());
// 5.初始化当前的日期
datePicker.init(this.datePicker.getYear(), this.datePicker.getMonth(),
this.datePicker.getDayOfMonth(), new OnDateChangeListener());
// datePicker.init(1995,4,14,new OnDateChangeListener());
//设置默认时间
// timePicker.setCurrentHour(12);
// timePicker.setCurrentMinute(45);
//设置默认日期
// datePicker.updateDate(1997,4, 25);
}
// 6.获取当前的日期+时间
private void setDateTime() {
this.eText.setText((this.datePicker.getYear() + "-"
+ (this.datePicker.getMonth() + 1) + "-"
+ this.datePicker.getDayOfMonth() + " "
+ this.timePicker.getCurrentHour() + ":" + this.timePicker
.getCurrentMinute()));
}
// 4.1时间的监听(时间发生变化更新editText中的内容)
class OnSetTimeListener implements OnTimeChangedListener{
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
DateandTimeActivityDemo.this.setDateTime();
}
}
// 5.1日期的监听(发生变化就去更新editText中的内容)
class OnDateChangeListener implements OnDateChangedListener {
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
DateandTimeActivityDemo.this.setDateTime();
}
}
}
效果图:
3.AlertDialog
3.1简介
1.AlertDialog的基本组成?
2.如何设置对应的按钮?
1.setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)
这是一个相当于OK、确定操作的按钮
2.setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener)
这是一个相当于取消操作的按钮。
3. setNeutralButton (CharSequence text, DialogInterface.OnClickListener listener)
这个是相当于一个忽略操作的按钮。
3.创建AlertDialog的步骤?
- 1、创建AlertDialog.Builder对象
- 2、调用Builder对象的setTitle方法设置标题,setIcon方法设置图标
- 3、调用Builder相关方法如setMessage方法、setItems方法、setSingleChoiceItems方法、setMultiChoiceItems方法、setAdapter方法、setView方法设置不同类型的对话框内容。
- 4、调用setPositiveButton、setNegativeButton、setNeutralButton设置多个按钮
- 5、调用Builder对象的create()方法创建AlertDialog对象
- 6、调用AlertDialog对象的show()方法将对话框显示出来
3.2案例1-AlertDialog
View.inflate()和LayoutInflater.inflate()的区别:https://www.jianshu.com/p/dda7dfd9cd32。感谢博主。
效果图:
第一步:设置alertdialog为主启动类。
<!-- 设置alertDialog为主启动类-->
<activity android:name=".AlertDialogDemoActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
第二步:创建布局文件。
- 一个简单的按钮
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button_login"
android:text="点我登录"
/>
</LinearLayout>
第三步:创建AlertDialog的登录页面。layout/login。
设置了登录的基本界面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- 1.第一行-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<!--1.1.用户名-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:"
android:textSize="20dp" />
<!--1.2.输入框-->
<EditText
android:id="@+id/alertdialog_et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<!--2.第二行-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<!--2.1-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密 码:"
android:textSize="20dp" />
<!--2.2-->
<EditText
android:id="@+id/alertdialog_et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<!-- 3.-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<!-- 3.1-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
>
<!-- 3.1.1-->
<Button
android:id="@+id/alertdialog_button_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确认登录"
android:textSize="20dp"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>
<!-- 3.2-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
>
<!-- 3.2.1-->
<Button
android:id="@+id/alertdialog_button_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"
android:textSize="20dp"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
第三步:创建activity。
package com.example.basecontrols3;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
//警示框
public class AlertDialogDemoActivity extends AppCompatActivity {
//1.按钮
Button but;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 2.绑定布局
setContentView(R.layout.activity_alert_dialog_demo);
// 3.获取对象
but=(Button)findViewById(R.id.button_login);
// 4.设置监听
but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 5. 创建对话框构建器(需要先创造一个构造器)
AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogDemoActivity.this);
// 6. 获取布局
// 6.1上下文,要传入的资源id,生成的对象要不要填入父布局。下面的这个方法和LayoutInfulate的效果是一样的
View view2 = View.inflate(AlertDialogDemoActivity.this, R.layout.login, null);
// 获取登录布局中的控件(要根据view2的视图进行获取)
final EditText username = (EditText) view2.findViewById(R.id.alertdialog_et_username);
final EditText password = (EditText) view2.findViewById(R.id.alertdialog_et_password);
final Button button = (Button) view2.findViewById(R.id.alertdialog_button_login);
//6.2 设置参数,标题和图标
builder.setTitle("Login").setIcon(R.mipmap.ic_launcher)
.setView(view2);
// 6.3设置按钮组
builder.setPositiveButton("OK测试", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(AlertDialogDemoActivity.this,"我是ok测试",Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("Cancel测试", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(AlertDialogDemoActivity.this,"我是Cancel测试",Toast.LENGTH_LONG).show();
}
});
builder.setNeutralButton("忽略测试", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(AlertDialogDemoActivity.this,"我是忽略测试",Toast.LENGTH_LONG).show();
}
});
// 6.4创建对话框
final AlertDialog alertDialog = builder.create();
// 7.设置按钮监听器(当点击按钮的时候就会出现一个弹窗)
// 设置的是”确认登录“的事件监听
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// 7.1获取登录框中的信息
String uname = username.getText().toString().trim();
String psd = password.getText().toString().trim();
// 7.2假设账号和密码
if (uname.equals("root") && psd.equals("123456")) {
// 7.2.1登录成功的提示信息
Toast.makeText(AlertDialogDemoActivity.this, "登录成功",Toast.LENGTH_LONG).show();
}
// 7.2.2登录失败的提示信息(密码验证失败的提示信息,并关闭当前的窗口)
Toast.makeText(AlertDialogDemoActivity.this, "登录失败", Toast.LENGTH_LONG).show();
// 7.2.3不论登录成功还是失败,对话框都会消失
alertDialog.dismiss();// 对话框消失
}
});
// 7.3显示登录框
alertDialog.show();
}
});
}
}
效果图:
3.3案例-第1-6种创建方式
3.3案例感谢博主:https://www.cnblogs.com/shen-hua/p/5709663.html
创建AlertDialog对象的时候不用去设置对应的布局文件就可以直接显示。
后序更新!