学习Android的第二天

news2024/9/28 23:30:15

目录

Android User Interface 用户界面

UI

Android View与ViewGroup的概念

Android View

android.view.View

android.view.View XML 属性

android:id 属性 

Android ViewGroup

android.view.ViewGroup

ViewGroup.LayoutParams

ViewGroup.MarginLayoutParams

ViewGroup 重要的子类

Android Units 单位


Android User Interface 用户界面

UI

UI 是用户界面(User Interface)的缩写。用户界面是用户与计算机系统或设备进行交互的一种方式,它包括用户能够看到、触摸、听到或以其他方式感知的所有元素。UI 的设计旨在使用户的交互体验更加直观、有效和愉悦。用户界面可以包括图形界面、文本界面、声音界面等各种形式,目的是让用户能够轻松地与软件、应用程序或设备进行沟通和操作。

UI 设计涵盖了许多方面,包括布局、颜色、图标、字体、交互元素等,以确保用户在使用产品时能够方便、快捷地完成任务,并且有良好的使用体验。UI 设计不仅关注外观,还关注用户与系统之间的交互方式,以提高用户的满意度和效率。

Android View与ViewGroup的概念

在 Android 应用程序中,是由 View 和 ViewGroup 及其派生类组合而成的,构建了整个用户界面。其中,View 是所有 UI 组件的基类,而 ViewGroup 是容纳 View 及其派生类的容器,ViewGroup 也是从 View 派生出来的。这种组合方式使得开发者可以使用各种预定义的 View 和 ViewGroup 子类,从而更轻松地构建用户友好的应用界面。

在这个框架下,View 作为用户可以看到和与之交互的基本构建块,而 ViewGroup 则作为布局容器,用于组织和容纳各种 View 对象。这种组合的设计使得应用可以适应不同的屏幕尺寸和设备,提供了灵活性和可维护性。

Android确实提供了丰富的预定义 View 和 ViewGroup 子类,这些类包括了常见的用户界面元素和布局模式,使得开发者能够更加高效地构建应用程序界面。这种模块化和可组合的设计是 Android UI 开发的基石之一。

UI布局的层次结构:

View 和 ViewGroup 是 Android 中两个关键的类,它们之间有一些基本的区别:

1、用途:

  • View 是表示用户界面上的单个元素,可以是按钮、文本框、图像等。View 负责处理用户输入、绘制自身等任务。
  • ViewGroup 是用于容纳和组织多个 View 或其他 ViewGroup 的容器。它定义了一种布局方式,用于排列和摆放其包含的视图。

2、层次结构:

  • View 是 ViewGroup 的基类,但它本身并不容纳其他视图。
  • ViewGroup 是一个特殊的 View,它继承自 View,但它能够包含多个 View,形成一个层次结构。

3、继承关系:

  • View 是直接继承自 Object 类的,而 ViewGroup 是继承自 View 类的,因此 ViewGroup 具有 View 类的一些特性和方法。

4、功能:

  • View 主要负责用户界面上的可见元素,处理触摸事件、绘制等。
  • ViewGroup 主要负责容纳和管理多个 View,定义它们的布局和相对位置。

5、使用场景:

  • View 通常用于表示单个控件或用户界面元素,例如按钮、文本框等。
  • ViewGroup 用于创建布局结构,容纳和组织多个 View 或其他 ViewGroup,例如线性布局、相对布局等。

总的来说,View 和 ViewGroup 一起构成了 Android 用户界面的基础。View 是构建界面上具体元素的基类,而 ViewGroup 是用于组织这些元素的容器。在 Android 开发中,了解和合理使用这两个类对于构建灵活、可维护的用户界面至关重要。

Android View

android.view.View

android.view.View 类是 Android 中用户界面的基本构建块。

1、矩形区域:

  • View 对象会占用屏幕上的矩形区域,这个区域用于显示视图的内容。

2、绘图:

  • View 负责自身的绘制,包括显示文本、图像、颜色等。这是通过重写 onDraw() 方法来实现的,该方法允许开发者自定义视图的外观。

3、事件处理:

  • View 处理用户输入事件,例如触摸屏幕、点击按钮等。这些事件的处理可以通过重写相应的方法,例如 onTouchEvent(),onClick() 等。

4、交互式 UI 组件:

  • View 用于创建各种交互式用户界面组件,例如按钮 (Button)、文本视图 (TextView)、图像视图 (ImageView) 等。每个具体的 UI 元素都是 View 的子类。

在 Android 应用程序中,View 是构建用户界面的基础。通过组合不同类型的 View 对象,开发者可以构建出多样化且功能强大的用户界面,从简单的按钮到复杂的列表视图都是由 View 构成的。

android.view.View XML 属性

下表列出了 android.view.View 所有可设置的 XML 属性

XML 属性说明
android:alpha设置该组件的透明度
android:background设置该组件的背景颜色
android:clickable设置该组件是否可以激发单击事件
android:contentDescription设置该组件的主要描述信息
android:drawingCasheQuanlity设置该组件所使用的绘制缓存质量
android:fadeScrollbars设置该组件不使用滚动条时,是否淡出显示滚动条
android:fadingEdge设置滚动该组件时边界是否使用淡出效果
android:fadingEdgeLength设置淡出边界长度
android:focusable设置该组件是否可以得到焦点
android:focusableInTouchMode设置该组件在触摸模式下是否可以得到焦点
android:id设置该组件ViewById来获取它
android:isScrollContainer设置该组件是否可以作为可滚动容器使用
android:keepScreenOn设置该组件是否会强制手机屏幕一直打开
android:longClickable设置该组件是否可以响应长单击事件
android:minHeight设置该组件的最小高度
android:minWidth设置该组件的最小宽度
android:nextFocusDown设置焦点在该组件上,且按向下键时获得焦点的组件id
android:nextFocusRight设置焦点在该组件上,且按向右键时获得焦点的组件id
android:nextFocusLeft设置焦点在该组件上,且按向左键时获得焦点的组件id
android:nextFocusUp设置焦点在该组件上,且按向上键时获得焦点的组件id
android:onClick为该组件的单击事件绑定监听器
android:padding在组件的四边设置填充区域
android:paddingLeft在组件的左边设置填充区域
android:paddingRight在组件的右边设置填充区域
android:paddingBottom在组件的底边设置填充区域
android:paddingTop在组件的顶边设置填充区域
android:rotation设置该组件的旋转角度
android:rotationX设置该组件绕X轴旋转的角度
android:rotationY设置该组件绕Y轴旋转的角度
android:saveEnabled设置为false,当该组件被冻结时不会保存其状态
android:scaleX设置该组件水平方向的缩放比
android:scaleY设置该组件垂直方向的缩放比
android:scrollX设置该组件初始化后的水平滚动条偏移
android:scrollY设置该组件初始化后垂直滚动条偏移
android:scrollbarAlwaysDrawHorizontalTrack设置该组件是否显示水平滚动条的轨迹
android:scrollbarAlwaysDrawVerticalTrack设置该组件是否显示垂直滚动条的轨迹
android:scrollbarDefaultDelayBeforeFade设置滚动条在淡出隐藏之前延迟多少毫秒
android:scrollbarFadeDuration设置滚动条淡出隐藏需要多少秒
android:scrollbarSize设置垂直滚动条的宽度和水平滚动条的高度
android:scrollbarStyle设置滚动条的风格和位置:insideOverlay
android:scrollThumbHorizontal设置该组件水平滚动滑块对对应的Drawable对象
android:scrollThumbVertical设置该组件垂直滚动滑块对对应的Drawable对象
android:scrollTrackbHorizontal设置该组件水平滚动轨道对对应的Drawable对象
android:scrollTrackbVertical设置该组件垂直滚动轨道对对应的Drawable对象
android:scrollbar设置该组件滚动时显示几个滚动条:none horizontal,vertical
android:soundEffectsEnabled设置该组件被单击时是否使用音效
android:tag为组件设置一个字符串tag值,可以通过view的getTag 获取字符串,或通过findViewByTag查找该组件
android:transformPivotX设置该组件旋转时旋转中心的X坐标
android:transformPivotY设置该组件旋转时旋转中心的Y坐标
android:translationX设置该组件在x方向上的位移
android:translationY设置该组件在Y方向上的位移
android:visibility设置该组件是否可见

android:id 属性 

android:id 属性是在 Android 中用于为视图(View)或布局(ViewGroup)指定一个唯一标识符的属性。每个 View 或 ViewGroup 都可以通过该属性在代码中被唯一地引用。

以下是 android:id 的基本用法:

1、在 XML 中设置唯一标识符:

<Button
    android:id="@+id/myButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click me" />

这里 @+id/myButton 表示创建一个新的 ID,它被命名为 myButton。@+id/ 表示要创建一个新的 ID,而 myButton 是这个 ID 的名称。如果这个 ID 在同一 XML 文件中已经存在,可以使用 @id/ 进行引用。 

2、在代码中引用 ID:

Button button = findViewById(R.id.myButton);

这里 R.id.myButton 是通过代码引用在 XML 中定义的按钮的唯一 ID。

android:id 的作用包括:

  1. 标识视图: 为了在代码中能够找到和引用一个具体的视图,需要使用 android:id 为其分配一个唯一标识符。
  2. 事件处理: 在处理用户交互时,例如单击按钮时,通过 ID 来区分不同的视图,从而执行相应的操作。
  3. 布局操作: 在动态修改布局或处理视图层次结构时,ID 用于找到并操作特定的视图或布局。

确保为每个需要在代码中引用的视图分配一个唯一的 android:id,以便在运行时能够方便地进行操作和处理。

Android ViewGroup

android.view.ViewGroup

1、继承关系:

  • ViewGroup 是 View 的子类,因此它继承了一些 View 类的通用属性和方法。这意味着 ViewGroup 本身可以被当作普通的 View 使用,但由于它是一个抽象类,不能被直接实例化。

2、抽象类:

  • ViewGroup 是一个抽象类,它提供了一些基础的布局机制,但需要通过它的具体子类来实现特定的布局逻辑。每个具体的 ViewGroup 子类都定义了不同的排列和布局方式,例如 LinearLayout、RelativeLayout、FrameLayout 等。

3、布局参数:

  • 布局参数是通过 ViewGroup.LayoutParams 和 ViewGroup.MarginLayoutParams 这两个内部类来实现的。这些类包含了一系列的属性,用于指定子视图在容器中的位置、大小以及边距等信息。

4、XML 属性:

  • ViewGroup 的子类通常会提供一些特定的 XML 属性,用于调整布局。例如,LinearLayout 提供了 android:orientation 属性来定义子视图的排列方向,RelativeLayout 提供了一系列与相对位置有关的属性等。

通过使用 ViewGroup 和其子类,开发者可以创建复杂的布局结构,控制子视图的相对位置和大小,以及通过 XML 属性调整布局的外观和行为。这种灵活性使得 Android 应用可以适应不同屏幕尺寸和设备,并提供一致且美观的用户界面。

ViewGroup.LayoutParams

ViewGroup.LayoutParams 所支持的两个 xml 属性

xml 属性说明
android:layout_height指定该子组件的布局高度,值可以是
fill_parent
match_parent
wrap_parent
android:layout_width指定该子组件的布局宽度,值可以是
fill_parent
match_parent
wrap_parent

ViewGroup.MarginLayoutParams

ViewGroup.MarginLayoutParams 控制子组件周围的页边距

xml 属性说明
android:layout_marginBottom指定该子组件下边的页边距
android:layout_marginLeft指定该子组件左边的页边距
android:layout_marginRight指定该子组件右边的页边距
android:layout_marginTop指定该子组件上边的页边距

ViewGroup 重要的子类

1、AbsoluteLayout(绝对布局):

  • AbsoluteLayout 允许子视图按照指定的坐标(左上角为原点)放置在容器中。尽管它提供了精确的定位,但由于其不灵活、难以适应不同屏幕大小的特性,已经被弃用。推荐使用其他布局替代。

2、FrameLayout(帧布局):

  • FrameLayout 是一个简单的布局,用于将子视图叠放在一起。通常用于单个子视图,例如用于显示单个图片或视图。最后添加的子视图将覆盖之前添加的视图。

3、GridLayout(表格布局):

  • GridLayout 允许子视图在表格中排列,以行和列的形式。每个子视图可以占据一个或多个表格单元格。它适用于创建复杂的表格式布局。

4、LinearLayout(线性布局):

  • LinearLayout 在水平或垂直方向上排列子视图,可以使用 android:orientation 属性指定方向。它是最简单和常用的布局,适合于简单的界面排列。

5、RelativeLayout(相对布局):

  • RelativeLayout 允许子视图相对于其父容器或其他子视图进行定位。使用相对位置关系,可以创建复杂的布局结构。它适用于需要灵活控制子视图相对位置的情况。

这些布局类可以根据应用的需求进行选择和组合,以构建出灵活、响应式的用户界面。在实际开发中,通常会根据具体场景选择不同的布局来实现所需的界面结构。

Android Units 单位

Android UI 设计过程中给 UI 控件添加宽高和定位都需要用到距离,用到距离难免就要用到丈量的单位

1、dp(设备独立像素):

  • dp 是一种相对于屏幕密度无关的尺寸单位。在不同屏幕密度的设备上,1dp 会映射到不同数量的物理像素,以保持 UI 元素的一致性。它是在 Android 开发中推荐使用的单位,特别适用于设置控件的宽度、高度和边距等。

2、px(像素):

  • px 是屏幕上的物理像素。1px 对应设备屏幕上的一个物理像素。这个单位通常在需要固定尺寸的情况下使用,但在不同密度的屏幕上可能会导致显示效果不一致。

3、pt(磅):

  • pt 是一个标准的长度单位,通常用于印刷业。1pt 等于 1/72 英寸。在 Android 开发中,使用 pt 的情况较少,因为屏幕尺寸通常不同于打印设备。

4、sp(可缩放像素):

  • sp 专门用于文本大小,与 dp 类似。主要的区别在于,用户可以在系统设置中调整文本大小的偏好。这使得应用能够根据用户的喜好来缩放文本,提供更好的可读性。

这些单位允许开发者以相对独立于屏幕密度的方式来指定尺寸,从而使得应用程序在不同的设备上保持一致的外观和用户体验。选择合适的单位取决于设计的需要和用户体验的考虑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1429240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习(12)--Mnist分类任务

一.Mnist分类任务流程详解 1.1.引入数据集 Mnist数据集是官方的数据集&#xff0c;比较特殊&#xff0c;可以直接通过%matplotlib inline自动下载&#xff0c;博主此处已经完成下载&#xff0c;从本地文件中引入数据集。 设置数据路径 from pathlib import Path# 设置数据路…

Pytest框架测试

Pytest 是什么? pytest 能够支持简单的单元测试和复杂的功能测试;pytest 可以结合 Requests 实现接口测试; 结合 Selenium、Appium 实现自动化功能测试;使用 pytest 结合 Allure 集成到 Jenkins 中可以实现持续集成。pytest 支持 315 种以上的插件;为什么要选择 Pytest 丰…

2024年第九届信号与图像处理国际会议(ICSIP 2024)

2024第九届信号与图像处理国际会议&#xff08;ICSIP 2024&#xff09;将于2024年7月12-14日在中国南京召开。ICSIP每年召开一次&#xff0c;在过去的七年中吸引了1200多名与会者&#xff0c;是展示信号和图像处理领域最新进展的领先国际会议之一。本次将汇集来自亚太国家、北美…

基于SpringBoot+Vue的师生疫情健康信息管理登记平台,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

python+PyQt5 左右声道测试

UI&#xff1a; 源代码&#xff1a; # -*- coding: utf-8 -*-# Form implementation generated from reading ui file MicrophoneWinFrm.ui # # Created by: PyQt5 UI code generator 5.15.2 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is …

Java正则表达式之Pattern和Matcher

目录 前言一、Pattern和Matcher的简单使用二、Pattern详解2.1 Pattern 常用方法2.1.1 compile(String regex)2.1.2 matches(String regex, CharSequence input)2.1.3 split(CharSequence input)2.1.4 pattern()2.1.5 matcher(CharSequence input) 三、Matcher详解3.1 Matcher 常…

​(三)hadoop之hive的搭建1

下载 访问官方网站https://hive.apache.org/ 点击downloads 点击Download a release now! 点击https://dlcdn.apache.org/hive/ 选择最新的稳定版 复制最新的url 在linux执行下载命令 wget https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz 2.解压…

账簿和明细账

目录 一. 账簿的意义和种类二. 明细账 \quad 一. 账簿的意义和种类 \quad 账簿是由一定格式、互有联系的账页组成&#xff0c;以审核无误的会计凭证为依据,用来序时地、分类地记录和反映各项经济业务的会计簿籍&#xff08;或称账本&#xff09;。设置和登记账簿是会计工作的重…

10个常考的前端手写题,你全都会吗?(上)

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

C++:输入流/输出流

C流类库简介 C为了克服C语言中的scanf和printf存在的缺点。&#xff0c;使用cin/cout控制输入/输出。 cin&#xff1a;表示标准输入的istream类对象&#xff0c;cin从终端读入数据。cout&#xff1a;表示标准输出的ostream类对象&#xff0c;cout向终端写数据。cerr&#xff…

刘知远团队大模型技术与交叉应用L6-基于大模型文本理解和生成介绍

介绍 NLP的下游运用可以分为&#xff1a;NLU(理解)和NLG(生成) 信息检索&#xff1a;NLU 文本生成&#xff1a;NLG 机器问答&#xff1a;NLUNLG 大模型在信息检索 大模型在机器问答 大模型在文本生成 信息检索-Information Retrieval (IR) 背景 谷歌搜索引擎目前同时集成了…

水表表盘读数识别新体验,带你进入华为云ModelArts算法套件的世界

前言 数字时代&#xff0c;数字化服务已经发展到各行各业&#xff0c;我们的生活中也随处可见。 数字化服务的便捷了我们的衣食住行的方方面面&#xff0c;除了我们日常化的出行、饮食、购物&#xff0c;其实住方面也已有了很深的发展。 水电燃气这三项和我们生活息息相关的…

YOLO-World: Real-Time Open-Vocabulary Object Detection

文章目录 1. Introduction2. Experiments2.1 Implementation Details2.2 Pre-training2.3 Ablation Experiments2.3.1 预训练数据2.3.2 对RepVL-PAN的消融研究2.3.3 文本编码器 2.4 Fine-tuning YOLO-World2.5 Open-Vocabulary Instance Segmentation2.6 Visualizations Refere…

R语言分析任务:

有需要实验报告的可CSDN 主页个人私信 《大数据统计分析软件&#xff08;R语言&#xff09;》 实 验 报 告 指导教师&#xff1a; 专 业&#xff1a; 班 级&#xff1a; 姓 名&#xff1a; 学 …

Multisim14.0仿真(四十三)LM311应用

一、LM311简介&#xff1a; lm311是一款高灵活性的电压比较器&#xff0c;能工作于5V-30V单个电源或正负15V分离电源。 二、LM311主要特性&#xff1a; ★ 快速响应时间&#xff1a;165 ns。 ★ 选通能力。 ★ 最大输入偏置电流&#xff1a;300nA。 ★ 最大输入偏置电流&#…

8868体育助力意甲尤文图斯俱乐部 帮助球队签订新合同

意甲的尤文图斯俱乐部是8868合作体育球队之一&#xff0c;根据意大利媒体的消息&#xff0c;尤文图斯已经决定和费德里科-基耶萨续约&#xff0c;这名球员已经开始思考他的将来了。 费德里科-基耶萨今年26岁&#xff0c;他和尤文图斯的合约到2025年6月30号就结束了。他知道很多…

大数据分析|设计大数据分析的三个阶段

文献来源&#xff1a;Saggi M K, Jain S. A survey towards an integration of big data analytics to big insights for value-creation[J]. Information Processing & Management, 2018, 54(5): 758-790. 下载链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1…

flask基于django大数据的证券股票分析系统python可视化大屏

证券分析系统采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的Python进行编写&#xff0c;使用了Django框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对股票信息、股票买入、…

[Linux 进程(六)] 写时拷贝 - 进程终止

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制&#xff0c;讲之前我们先把写时拷贝理清&#xff0c;然后再开始讲进程控制。…

从源代码看Chrome 版本号

一直以来都是用Chrome 浏览器&#xff0c;但是看到Chrome 点分4 组数据的表达方式&#xff0c;总是感觉怪怪的&#xff0c;遂深入源代码了解她的版本号具体表示的内容 chrome 浏览器中显示的版本号 源代码中的版本号标识 版本号文件位于 chrome/VERSION &#xff0c; 看到源代…