基本控件案例集锦(下)

基本控件案例集锦(下)

DatePicker,TimePicker,AlertDialoig

1.DatePicker

1.1简介

1.简介:

  • Android为用户提供显示日期与时间的控件DatePickerTimePicker
    日期选择控件(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对象的时候不用去设置对应的布局文件就可以直接显示。

后序更新!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单点了

谢谢大佬

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值