安卓进阶——UI控件
✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。
🍎个人主页:Meteors.的博客
💞当前专栏:知识分享
✨特色专栏:知识分享
🥭本文内容:安卓进阶——UI控件
📚 ** ps ** :阅读文章如果有问题或者疑惑,欢迎在评论区提问或指出。
目录
一. StatusBar
二. ViewPager
三. AppWidgetProvider
四. RemoteView
五. Chronometer
六. CalenderView
七. DataPicker、TimePicker
八. NumberPicker
九. TabHost
十. ViewSwitcher
十二. ViewFipper
一. StatusBar
就是安卓的 Status Bar(状态栏) 是位于手机屏幕最顶部、显示时间、电量、网络信号、通知图标等系统状态信息的那个细长条。
状态栏通常显示两类信息:
系统图标(左侧): 这些是固定显示的、与系统核心功能相关的图标。
时间: 当前时间。
蜂窝网络信号: 信号强度和运营商名称。
Wi-Fi 图标: 显示是否连接到Wi-Fi及信号强度。
电池电量: 当前电池百分比和充电状态。
蓝牙、闹钟、定位等: 当相应功能激活时显示。
通知图标(右侧): 这些来自应用程序,用于提示用户有新的消息或事件。
新消息: 微信、短信等。
下载完成: 文件下载或应用更新。
日历提醒: 即将到来的会议或事件。
后台进程: 例如音乐播放器的播放控制通知。
当有多个通知时,状态栏通常只会显示最关键的几个图标,用户可以从屏幕顶部向下滑动来展开通知栏(Notification Shade),查看所有通知的详情并进行操作。
二. ViewPager
ViewPager是Android支持库中的一个布局控件,它允许用户通过左右滑动的手势在多个子视图(通常是Fragment)之间切换。它常用于实现以下功能:
图片轮播/画廊
应用引导页
标签页切换(通常与TabLayout配合使用)
任何需要水平滑动切换内容的场景
三. AppWidgetProvider
AppWidgetProvider是Android中用于创建和管理应用小部件(App Widget)的广播接收器基类。应用小部件是可以嵌入到主屏幕(Home Screen)上的微型应用程序视图,用户可以与之交互。(AppWidgetProvider需要在单独的项目中实现)
核心功能
定义小部件的外观和行为
响应小部件的更新、启用、禁用和删除事件
处理用户与小部件的交互
四. RemoteView
RemoteViews是Android中一种特殊的视图结构,它允许应用程序在其他进程(通常是系统主屏幕进程)中显示和更新界面。主要用于:
应用小部件(App Widgets)
通知栏自定义布局
系统快捷设置面板
核心特性
跨进程工作:可以在应用进程外显示和更新UI
受限的UI元素:只支持部分View和属性
轻量级:通过序列化机制在不同进程间传递
五. Chronometer
Chronometer是Android中的一个计时器控件,继承自TextView,专门用于显示和计算时间流逝。它提供了一种简单的方式来实现计时功能,适用于需要计时、倒计时或显示持续时间的场景。
<Chronometerandroid:id="@+id/chronometer"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="24sp"android:layout_marginBottom="8dp" />
核心特性
基于系统时间:使用系统时钟作为计时基准
格式灵活:可以自定义时间显示格式
简单易用:提供开始、停止、重置等基本操作
事件通知:可以监听计时完成等事件
六. CalenderView
CalendarView是Android提供的一个日期选择控件,它允许用户通过直观的月历界面选择日期。这个控件通常用于需要用户选择日期的场景,如预约系统、日历应用、日程管理等。
核心特性
可视化月历展示:以月为单位显示日期网格
日期选择功能:用户可点击选择特定日期
日期范围限制:可设置可选日期的最小和最大范围
外观定制:支持部分UI属性的自定义
国际化支持:自动适应系统区域设置
七. DataPicker、TimePicker
DatePicker是Android中用于选择日期的控件,它允许用户通过年、月、日的滚动选择器来选择日期。
<DatePickerandroid:id="@+id/datePicker"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="8dp"android:datePickerMode="spinner" />
TimePicker是Android中用于选择时间的控件,它允许用户通过小时和分钟的滚动选择器来选择时间。
<TimePickerandroid:id="@+id/timePicker"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="16dp"android:timePickerMode="spinner" />
八. NumberPicker
NumberPicker是Android中的一个UI控件,允许用户通过滚动选择器从一组预定义的值中选择一个数字或字符串。它比Spinner更直观,比EditText更易于输入特定范围内的值。
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"android:layout_marginBottom="16dp"><NumberPickerandroid:id="@+id/numberPicker1"android:layout_width="wrap_content"android:layout_height="wrap_content" /><NumberPickerandroid:id="@+id/numberPicker2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp" /><NumberPickerandroid:id="@+id/numberPicker3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp" /></LinearLayout>
九. TabHost
TabHost是Android早期用于实现标签页(Tab)布局的控件,它允许用户通过点击不同的标签来切换内容视图。虽然在现代Android开发中更推荐使用ViewPager结合TabLayout或ViewPager2来实现标签页功能,但了解TabHost仍然有助于维护旧代码或理解Android UI发展历程。(已废弃,使用TabLayout替代)
十. ViewSwitcher
ViewSwitcher是Android中的一个视图容器控件,它可以在两个子视图之间进行切换,并支持动画效果。它是ViewAnimator的子类,常用于实现简单的视图切换场景,如登录/注册界面切换、图片轮播等。
<ViewSwitcherandroid:id="@+id/viewSwitcher"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginBottom="8dp"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="这是第一个视图"android:background="#FFCDD2" /><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="这是第二个视图"android:background="#C8E6C9" /></ViewSwitcher>
十二. ViewFipper
ViewFlipper是Android中的一个视图容器控件,它可以在多个子视图之间进行切换,支持自动轮播和动画效果。它是ViewAnimator的子类,与ViewSwitcher类似,但可以管理多个子视图而不是仅限于两个。
<ViewFlipperandroid:id="@+id/viewFlipper"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginBottom="8dp"android:flipInterval="2000"android:autoStart="true"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="第一张卡片"android:background="#BBDEFB" /><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="第二张卡片"android:background="#F8BBD0" /><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="第三张卡片"android:background="#C5E1A5" /></ViewFlipper>













