Android(13、中级控件)

图形Drawable(译:可绘制的)

➢Drawable 类型表达了各种各样的图形,包括图片、色块、画板、背景等。
➢包含图片在内的图形文件放在res目录的各个drawable目录下,其中drawable目录- -般
保存描述性的XML文件,而图片文件一般放在 具体分辨率的drawable目录下。.
➢各视图的background属性、ImageView 和ImageButton的src属性、TextView和Butto
n四个方向的drawable***系列属性都可以引用图形文件。

drawable目录

●drawable-ldpi里面存放低分辨率的图片 (如240320) , 现在基本没有这样的智能手机了。
●drawable-mdpi里面存放中等分辨率的图片 (如320
480) ,这样的智能手机已经很少了。
●drawable-hdpi里面存放高分辨率的图片(如480800) ,- 般对应4英寸~ 4.5英寸的手机(但不绝对,同尺寸的手机有可能分辨率
不同,手机分辨率就高不就低,因为分辨率低了屏幕会有模糊的感觉)。
●drawable-xhdpi里面存放加高分辨率的图片 (如720x1280), - 般对应5英寸~ 5.5英寸的手机。
●drawable-xxhdpi里面存 放超高分辨率的图片(如1080
1920), - 般对应6英寸~ 6.5英寸的手机。
●drawable xxxhdpi里面存放超超高分辨率的图片(如1440*2560), - 般对应7英寸以上的平板电脑。

在Android开发中,drawable是用于存放应用程序的图像资源的目录之一。它用于存放各种类型的图像文件,如PNG、JPEG等,并可以在应用程序中使用这些图像资源。

drawable目录可以在res目录下创建,通常有以下几种常用的子目录:

  1. drawable:存放非适配不同屏幕密度的图像资源。这些图像资源将在所有屏幕密度的设备上使用相同的图像文件。
  2. drawable-hdpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpi、drawable-xxxhdpi:存放适配不同屏幕密度的图像资源。这些图像资源将根据设备的屏幕密度自动选择合适的图像文件。
  3. drawable-v21:存放适配Android 5.0(API级别21)及以上版本的图像资源。这些图像资源将在Android 5.0及以上版本的设备上使用。
  4. drawable-nodpi:存放不进行屏幕密度适配的图像资源。这些图像资源将在所有屏幕密度的设备上使用相同的图像文件,不会自动进行缩放。

在drawable目录中,可以存放各种类型的图像文件,如PNG、JPEG、GIF等。这些图像文件可以通过资源ID在应用程序中引用和使用。

在布局文件中,可以使用ImageView控件来显示drawable目录中的图像资源。例如:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/my_image" />

在上面的示例中,我们使用@drawable/my_image来引用drawable目录中的图像资源。my_image是图像文件的文件名(不包括扩展名)。

除了在布局文件中使用ImageView来显示图像资源,还可以在代码中使用getDrawable()方法来获取图像资源的Drawable对象,并在自定义的视图或其他地方使用。例如:

Drawable drawable = getResources().getDrawable(R.drawable.my_image);

在上面的示例中,我们使用getDrawable()方法来获取drawable目录中的图像资源,并将其赋值给一个Drawable对象。

形状图形

➢Shape图形又称形状图形,它用来描述常见的几何形状,包括矩形、圆角矩形、圆形、椭圆等等。
➢形状图形的定义文件是以shape标签为根节点的XML描述文件,它支持四种类型的形状:
●rectangle: 矩形。默认值
●oval: 椭圆。此时corners节点会失效
●line: 直线。此时必须设置stroke节点,不然会报错
●ring:圆环

在Android中,可以使用ShapeDrawable或者XML文件来定义形状图形。以下是一些常见的属性和用法:

  1. 形状类型(shape):可以指定形状的类型,如矩形(rectangle)、圆角矩形(rounded rectangle)、椭圆(oval)等。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    ...
</shape>
  1. 边框(stroke):可以设置形状的边框宽度、颜色和虚线样式。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke
        android:width="2dp"
        android:color="#FF0000"
        android:dashWidth="5dp"
        android:dashGap="2dp" />
    ...
</shape>
  1. 填充(solid):可以设置形状的填充颜色。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FF0000" />
    ...
</shape>
  1. 圆角(corners):对于矩形和圆角矩形,可以设置圆角的半径。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="5dp" />
    ...
</shape>
  1. 渐变(gradient):可以设置形状的渐变颜色。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FF0000"
        android:endColor="#00FF00"
        android:type="linear"
        android:angle="0" />
    ...
</shape>
  1. 尺寸(size):可以设置形状的宽度和高度。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size
        android:width="100dp"
        android:height="100dp" />
    ...
</shape>

这些是形状图形的一些常见属性和用法。可以通过组合和调整这些属性,创建出各种不同的形状图形。希望这些详细的笔记能够帮助您理解形状图形的属性和用法。如果有任何疑问,请随时提问。

在Android中,可以使用ShapeDrawable或者XML文件来定义形状图形。以下是一些常见的方法和属性:

  1. setShape(Shape):设置形状类型。
    • Shape参数:指定形状的类型,如矩形(RectShape)、圆角矩形(RoundRectShape)、椭圆(OvalShape)等。
  2. setStroke(int, int):设置形状的边框。
    • 第一个参数:边框的宽度,以像素为单位。
    • 第二个参数:边框的颜色,使用Color类的常量或十六进制颜色值。
  3. setStroke(int, int, float, float):设置形状的边框,并指定虚线样式。
    • 第一个参数:边框的宽度,以像素为单位。
    • 第二个参数:边框的颜色,使用Color类的常量或十六进制颜色值。
    • 第三个参数:虚线的宽度,以像素为单位。
    • 第四个参数:虚线之间的间隔,以像素为单位。
  4. setFill(int):设置形状的填充颜色。
    • 参数:填充的颜色,使用Color类的常量或十六进制颜色值。
  5. setCorners(float[]):设置形状的圆角。
    • 参数:一个长度为8的浮点数数组,分别表示左上角、右上角、右下角和左下角的圆角半径。
  6. setGradientType(int):设置形状的渐变类型。
    • 参数:渐变的类型,可以是线性渐变(GradientDrawable.LINEAR_GRADIENT)或径向渐变(GradientDrawable.RADIAL_GRADIENT)。
  7. setGradientColors(int[]):设置形状的渐变颜色。
    • 参数:一个整数数组,表示渐变的颜色。
  8. setSize(int, int):设置形状的尺寸。
    • 第一个参数:形状的宽度,以像素为单位。
    • 第二个参数:形状的高度,以像素为单位。

这些是ShapeDrawable类的一些常见方法和属性。通过调用这些方法和设置相应的属性,可以创建出各种不同形状的图形。希望这些详细的笔记能够帮助您理解形状图形的方法和属性。如果有任何疑问,请随时提问。

九宫格图片

➢将某张图片设置成视图背景时,如果图片尺寸太小,则系统会自动拉伸图片使之填满背景。
➢可是一旦图片拉得过大,其画面容易变得模糊。

九宫格图片是一种常见的图片布局方式,可以通过以下属性来定义九宫格图片:

  1. android:src:指定九宫格图片的资源文件。
  2. android:scaleType:指定图片的缩放类型。
    • fitXY:拉伸图片以填充整个ImageView。
    • centerCrop:按比例缩放图片,使其完全填充ImageView,并裁剪超出部分。
    • centerInside:按比例缩放图片,使其完全显示在ImageView内部,不裁剪。
    • fitCenter:按比例缩放图片,使其完全显示在ImageView内部,并居中显示。
  3. android:layout_widthandroid:layout_height:指定ImageView的宽度和高度。
  4. android:layout_gravity:指定ImageView在父容器中的对齐方式。
    • center:居中对齐。
    • top:顶部对齐。
    • bottom:底部对齐。
    • left:左对齐。
    • right:右对齐。
  5. android:layout_margin:指定ImageView的外边距。
  6. android:padding:指定ImageView的内边距。
  7. android:background:指定ImageView的背景颜色或背景图片。
  8. android:foreground:指定ImageView的前景颜色或前景图片。

状态列表图形

➢Button按 钮的背景在正常情况下是凸起的,在按下时是凹陷的,从按下到弹起的过程,
用户便能知道点击了这个按钮。

状态列表图形(StateListDrawable)是一种可以根据不同的状态显示不同图形的Drawable。它可以根据控件的不同状态(例如按下、选中、禁用等)来显示不同的图形。下面是状态列表图形的一些常见属性和方法:

  1. addState(int[] stateSet, Drawable drawable):为状态列表图形添加一个状态和对应的Drawable。
    • stateSet:一个整数数组,表示要匹配的状态集合。例如,android.R.attr.state_pressed表示按下状态,android.R.attr.state_selected表示选中状态。
    • drawable:要显示的Drawable。
  2. setExitFadeDuration(int duration):设置状态切换时的淡出动画持续时间。
    • duration:淡出动画的持续时间,以毫秒为单位。
  3. setEnterFadeDuration(int duration):设置状态切换时的淡入动画持续时间。
    • duration:淡入动画的持续时间,以毫秒为单位。
  4. isStateful():判断状态列表图形是否有状态。
    • 返回值:如果有状态,则返回true;否则返回false。
  5. setState(int[] stateSet):设置状态列表图形的当前状态。
    • stateSet:一个整数数组,表示当前的状态集合。
  6. getCurrent():获取当前状态下显示的Drawable。
    • 返回值:当前状态下显示的Drawable。
  7. mutate():创建状态列表图形的一个副本,以便可以独立地修改其状态。
    • 返回值:状态列表图形的副本。

复选框CheckBox

复选框(CheckBox)是一种用于表示二进制状态的控件,可以选择或取消选择。下面是复选框的一些常见属性和方法:

  1. android:checked:指定复选框的初始选中状态。
    • true:复选框初始为选中状态。
    • false:复选框初始为未选中状态。
  2. android:text:指定复选框显示的文本。
  3. android:textColor:指定复选框文本的颜色。
  4. android:textSize:指定复选框文本的大小。
  5. android:button:指定复选框的样式。
    • @android:drawable/checkbox_off_background:未选中的复选框样式。
    • @android:drawable/checkbox_on_background:选中的复选框样式。
  6. android:onCheckedChanged:指定复选框选中状态改变时的回调方法。
    • android:onCheckedChanged="onCheckedChanged":指定回调方法为onCheckedChanged
  7. isChecked():获取复选框的当前选中状态。
    • 返回值:如果复选框选中,则返回true;否则返回false
  8. setChecked(boolean checked):设置复选框的选中状态。
    • checked:要设置的选中状态,true表示选中,false表示未选中。

开关按钮Switch

➢Switch是开关按钮,它在选中与取消选中时可展现的界面元素比复选框丰富。
➢Switch控件新添加的XML属性说明如下:
●textOn: 设置右侧开启时的文本。
●textOff: 设置左侧关闭时的文本。
●track: 设置开关轨道的背景。
●thumb:设置开关标识的图标。

开关按钮(Switch)是一种用于表示二进制状态的控件,可以切换开关状态。下面是开关按钮的一些常见属性和方法:

  1. android:checked:指定开关按钮的初始状态。
    • true:开关按钮初始为打开状态。
    • false:开关按钮初始为关闭状态。
  2. android:textOn:指定开关按钮打开状态时显示的文本。
  3. android:textOff:指定开关按钮关闭状态时显示的文本。
  4. android:textColor:指定开关按钮文本的颜色。
  5. android:textSize:指定开关按钮文本的大小。
  6. android:thumb:指定开关按钮的滑块样式。
    • @drawable/custom_thumb:自定义的滑块样式。
  7. android:track:指定开关按钮的轨道样式。
    • @drawable/custom_track:自定义的轨道样式。
  8. android:thumbTextPadding:指定滑块与文本的间距。
  9. android:showText:指定是否显示文本。
    • true:显示文本。
    • false:不显示文本。
  10. setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener):设置开关按钮状态改变时的回调方法。
    • listener:开关按钮状态改变时的回调监听器。
  11. isChecked():获取开关按钮的当前状态。
    • 返回值:如果开关按钮打开,则返回true;否则返回false
  12. setChecked(boolean checked):设置开关按钮的状态。
    • checked:要设置的状态,true表示打开,false表示关闭。

单选按钮RadioButton

➢单选按钮要在- -组按钮中选择其中- -项,并且不能多选,这要求有个容器确定这组按钮的
范围,这个容器便是单选组RadioGroup。
➢RadioGroup实质上是个布局,同- -组RadioButton都要放在同- -个RadioGroup节点下。
除了RadioButton,也允许放置其他控件。

单选按钮(RadioButton)是一种用于在一组选项中选择一个选项的控件。下面是单选按钮的一些常见属性和方法:

  1. android:checked:指定单选按钮的初始选中状态。
    • true:单选按钮初始为选中状态。
    • false:单选按钮初始为未选中状态。
  2. android:text:指定单选按钮显示的文本。
  3. android:textColor:指定单选按钮文本的颜色。
  4. android:textSize:指定单选按钮文本的大小。
  5. android:button:指定单选按钮的样式。
    • @drawable/custom_button:自定义的单选按钮样式。
  6. android:onClick:指定单选按钮点击时的回调方法。
    • onClickRadioButton:指定回调方法为onClickRadioButton
  7. isChecked():获取单选按钮的当前选中状态。
    • 返回值:如果单选按钮选中,则返回true;否则返回false
  8. setChecked(boolean checked):设置单选按钮的选中状态。
    • checked:要设置的选中状态,true表示选中,false表示未选中。

RadioGroup是Android中用于管理一组单选按钮的容器控件。下面是RadioGroup的一些常用方法:

  1. check(int id):设置指定id的单选按钮为选中状态。
    • id:要设置为选中状态的单选按钮的id。
  2. clearCheck():清除所有单选按钮的选中状态。
  3. getCheckedRadioButtonId():获取当前选中的单选按钮的id。
    • 返回值:当前选中的单选按钮的id,如果没有选中的单选按钮则返回-1。
  4. setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener listener):设置单选按钮选中状态改变时的回调方法。
    • listener:单选按钮选中状态改变时的回调监听器。

编辑框EditText

当您使用EditText控件时,以下是一些常见的属性和方法:

  1. android:hint:设置EditText的提示文本,当EditText为空时显示。
  2. android:text:设置EditText的初始文本内容。
  3. android:inputType:设置EditText的输入类型。
    • text:普通文本输入。
    • number:数字输入。
    • phone:电话号码输入。
    • email:电子邮件输入。
    • password:密码输入。
  4. getText():获取EditText中的文本内容。
    • 返回值:返回一个Editable对象,可通过调用toString()方法将其转换为字符串。
  5. setText(CharSequence text):设置EditText的文本内容。
    • text:要设置的文本内容。
  6. addTextChangedListener(TextWatcher watcher):添加文本变化监听器。
    • watcher:要添加的文本变化监听器。
  7. setOnEditorActionListener(TextView.OnEditorActionListener listener):设置编辑操作的监听器。
    • listener:要设置的编辑操作监听器。

监听焦点变更事件的演示效果

在Android中,可以通过实现View.OnFocusChangeListener接口来监听焦点变更事件。以下是监听焦点变更事件的详细步骤:

  1. 创建一个实现了View.OnFocusChangeListener接口的类,例如MyFocusChangeListener
  2. 在该类中实现onFocusChange(View v, boolean hasFocus)方法,该方法会在焦点发生变化时被调用。
    • v参数:表示焦点变化的视图。
    • hasFocus参数:表示焦点是否获得,true表示获得焦点,false表示失去焦点。
  3. 在需要监听焦点变更的视图上调用setOnFocusChangeListener()方法,将监听器对象传递给它。
    • view.setOnFocusChangeListener(new MyFocusChangeListener()):将自定义的焦点变更监听器对象设置给视图。
  4. onFocusChange()方法中编写相应的逻辑,根据焦点的变化执行相应的操作。

下面是一个示例代码:

public class MainActivity extends AppCompatActivity {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.editText);

        editText.setOnFocusChangeListener(new MyFocusChangeListener());
    }

    private class MyFocusChangeListener implements View.OnFocusChangeListener {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                // 当EditText获得焦点时执行的操作
                Toast.makeText(MainActivity.this, "EditText获得焦点", Toast.LENGTH_SHORT).show();
            } else {
                // 当EditText失去焦点时执行的操作
                Toast.makeText(MainActivity.this, "EditText失去焦点", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

在上述示例中,当EditText获得焦点时会显示一个短暂的Toast提示,当EditText失去焦点时也会显示一个短暂的Toast提示。

文本变化监听器

➢调用编辑框对象的addTextChangedListener方法即可注册文本监听器。
➢文本监听器的接口名称为TextWatcher,该接口提供了3个监控方法,具体说明如下。
●beforeTextChanged:在文本改变之前触发。
●onTextChanged:在文本改变过程中触发。
●afterTextChanged: 在文本改变之后触发。

文本变化监听器(TextWatcher)是Android中用于监听EditText或其他文本输入框中文本内容变化的接口。通过实现TextWatcher接口,可以在文本内容发生变化时执行相应的操作。

TextWatcher接口定义了三个方法:

  1. beforeTextChanged(CharSequence s, int start, int count, int after):在文本内容发生变化之前调用。
    • s:变化之前的文本内容。
    • start:变化开始的位置。
    • count:变化的字符数。
    • after:变化后的字符数。
  2. onTextChanged(CharSequence s, int start, int before, int count):在文本内容发生变化时调用。
    • s:变化后的文本内容。
    • start:变化开始的位置。
    • before:变化之前的字符数。
    • count:变化后的字符数。
  3. afterTextChanged(Editable s):在文本内容发生变化之后调用。
    • s:变化后的文本内容。

要使用TextWatcher,可以按照以下步骤进行操作:

  1. 创建一个实现TextWatcher接口的类,例如MyTextWatcher

  2. 在该类中实现TextWatcher接口的三个方法。

  3. 将TextWatcher对象添加到EditText或其他文本输入框中,可以使用addTextChangedListener()方法。

    editText.addTextChangedListener(new MyTextWatcher());
    
  4. 在TextWatcher的方法中编写相应的逻辑,根据文本内容的变化执行相应的操作。

下面是一个示例代码:

public class MainActivity extends AppCompatActivity {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.editText);
        editText.addTextChangedListener(new MyTextWatcher());
    }

    private class MyTextWatcher implements TextWatcher {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // 在文本内容发生变化之前执行的操作
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // 在文本内容发生变化时执行的操作
        }

        @Override
        public void afterTextChanged(Editable s) {
            // 在文本内容发生变化之后执行的操作
        }
    }
}

在上述示例中,我们创建了一个MyTextWatcher类来实现TextWatcher接口,并将它添加到了EditText中。在MyTextWatcher的方法中,我们可以根据文本内容的变化执行相应的操作。

提醒对话框AlertDialog

➢AlertDialog 可以完成常见的交互操作,例如提示、确认、选择等功能。AlertDialog借
助建造器AlertDialog.Builder才能完成参数设置。
➢调用建造器的create方法生成对话框实例,再调用对话框实例的show方法,在页面.上弹
出提醒对话框。

AlertDialog是Android中用于显示提示、警告、确认等对话框的类。它提供了一种简单的方式来与用户进行交互,并获取用户的响应。

要使用AlertDialog,可以按照以下步骤进行操作:

  1. 创建AlertDialog.Builder对象。

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    

    其中,context为当前上下文,可以是Activity或Application的上下文。

  2. 设置对话框的标题、消息和图标(可选)。

    builder.setTitle("标题")
           .setMessage("消息")
           .setIcon(R.drawable.icon);
    

    其中,setTitle()用于设置对话框的标题,setMessage()用于设置对话框的消息内容,setIcon()用于设置对话框的图标。图标可以是资源文件中的图片,也可以是系统提供的图标。

  3. 设置对话框的按钮。

    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // 点击确定按钮后执行的操作
        }
    })
    .setNegativeButton("取消", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // 点击取消按钮后执行的操作
        }
    });
    

    其中,setPositiveButton()用于设置确定按钮,setNegativeButton()用于设置取消按钮。在按钮的点击事件中,可以编写相应的逻辑。

  4. 创建AlertDialog对象。

    AlertDialog alertDialog = builder.create();
    
  5. 显示对话框。

    alertDialog.show();
    

下面是一个示例代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showAlertDialog();
            }
        });
    }

    private void showAlertDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("提示")
                .setMessage("确定要删除吗?")
                .setIcon(android.R.drawable.ic_dialog_alert)
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 点击确定按钮后执行的操作
                        Toast.makeText(MainActivity.this, "已删除", Toast.LENGTH_SHORT).show();
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 点击取消按钮后执行的操作
                        Toast.makeText(MainActivity.this, "已取消", Toast.LENGTH_SHORT).show();
                    }
                });

        AlertDialog alertDialog = builder.create();
        alertDialog.show();
    }
}

在上述示例中,当按钮被点击时,会显示一个带有标题、消息和确定、取消按钮的AlertDialog对话框。当点击确定按钮时,会显示一个短暂的Toast提示,表示已删除。当点击取消按钮时,会显示一个短暂的Toast提示,表示已取消。

日期对话框DatePickerDialog

DatePickerDialog是Android中用于选择日期的对话框。它提供了一个简单的方式来让用户选择日期,并获取用户选择的日期。

要使用DatePickerDialog,可以按照以下步骤进行操作:

  1. 创建DatePickerDialog.OnDateSetListener对象。

    DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
            // 在用户选择日期后执行的操作
        }
    };
    

    onDateSet()方法中,可以获取用户选择的年、月、日。

  2. 获取当前日期。

    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH);
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    

    使用Calendar类可以获取当前日期的年、月、日。

  3. 创建DatePickerDialog对象。

    DatePickerDialog datePickerDialog = new DatePickerDialog(context, dateSetListener, year, month, day);
    

    其中,context为当前上下文,可以是Activity或Application的上下文,dateSetListener为日期选择的监听器,yearmonthday为初始日期。

  4. 显示对话框。

    datePickerDialog.show();
    

下面是一个示例代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showDatePickerDialog();
            }
        });
    }

    private void showDatePickerDialog() {
        DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                // 在用户选择日期后执行的操作
                String date = dayOfMonth + "/" + (month + 1) + "/" + year;
                Toast.makeText(MainActivity.this, "选择的日期是:" + date, Toast.LENGTH_SHORT).show();
            }
        };

        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);

        DatePickerDialog datePickerDialog = new DatePickerDialog(this, dateSetListener, year, month, day);
        datePickerDialog.show();
    }
}

在上述示例中,当按钮被点击时,会显示一个DatePickerDialog对话框,用户可以选择日期。当用户选择日期后,会显示一个短暂的Toast提示,表示选择的日期。

时间对话框TimePickerDialog

TimePickerDialog是Android提供的一个对话框,用于让用户选择时间。它提供了一个用户友好的界面,可以选择小时和分钟。

要使用TimePickerDialog,需要执行以下步骤:

  1. 创建一个TimePickerDialog.OnTimeSetListener监听器,用于在用户选择时间后执行相应的操作。
TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // 在用户选择时间后执行的操作
    }
};
  1. 创建一个TimePickerDialog实例,并传入上述监听器、初始小时和分钟。
TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, timeSetListener, hour, minute, is24HourFormat);
  • MainActivity.this表示当前的上下文(Activity)。
  • timeSetListener是在用户选择时间后要执行的操作。
  • hour和minute是初始的小时和分钟,可以从Calendar对象中获取。
  • is24HourFormat表示是否使用24小时制。
  1. 显示TimePickerDialog。
timePickerDialog.show();

完整的示例代码如下:

// 获取当前时间的小时和分钟
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);

// 创建一个TimePickerDialog.OnTimeSetListener监听器
TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // 在用户选择时间后执行的操作
        String selectedTime = hourOfDay + ":" + minute;
        Toast.makeText(MainActivity.this, "Selected Time: " + selectedTime, Toast.LENGTH_SHORT).show();
    }
};

// 创建一个TimePickerDialog实例,并传入监听器、初始小时和分钟
TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, timeSetListener, hour, minute, true);

// 显示TimePickerDialog
timePickerDialog.show();

这段代码会创建一个TimePickerDialog,用户可以选择时间。当用户选择时间后,会显示一个短暂的Toast提示,表示选择的时间。

  • 63
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值