.net开发安卓入门 - 布局与样式(像素单位px、dp、sp的区别)

news2024/11/18 21:40:38

.net开发安卓入门 - 布局与样式

  • 布局
    • LinearLayout
    • RelativeLayout
    • TableLayout
    • RecyclerView
    • ListView
    • GridView
    • GridLayout
    • Tabbed Layouts
  • 主题 Material Theme
    • 主题应用程序
    • 主题活动
  • 像素
    • px
    • dp
    • dip
    • sp
  • 常用UI框架推荐
  • 常用动画推荐

布局

布局用于排列构成屏幕的 UI 界面的元素 (,例如活动) 。 以下部分介绍如何在 Xamarin.Android 应用中使用最常用的布局。

LinearLayout

LinearLayout 是一个视图组,它以垂直或水平方向以线性方向显示子视图元素。
在这里插入图片描述

RelativeLayout

是显示相对位置的子视图元素的视图组。 视图的位置可以指定为相对于同级元素。
在这里插入图片描述

TableLayout

是一个视图组,用于在行和列中显示子视图元素。

在这里插入图片描述

RecyclerView

是一个 UI 元素,它显示列表或网格中的项集合,使用户能够滚动浏览集合。
在这里插入图片描述

ListView

是一个视图组,用于创建可滚动项的列表。 列表项使用列表适配器自动插入到列表中。 ListView这是 Android 应用程序的重要 UI 组件,因为它随处使用,从菜单选项的简短列表到联系人或 Internet 收藏夹的长列表。 它提供了一种简单的方式来显示可使用内置样式设置格式或自定义的行的滚动列表。 ListView 实例需要适配器以行视图中包含的数据馈送它。
在这里插入图片描述

GridView

是一个 UI 元素,用于在可滚动的二维网格中显示项。
在这里插入图片描述

GridLayout

是一个视图组,支持在 2D 网格中布局视图,类似于 HTML 表。
在这里插入图片描述

Tabbed Layouts

是移动应用程序中常用的用户界面模式,因为它们的简单性和可用性。 它们提供了在应用程序中的各个屏幕之间导航的一致、简单方法。
在这里插入图片描述

主题 Material Theme

材料主题 是一种用户界面样式,用于确定从 Android 5.0 (Lollipop) 开始的视图和活动的外观。 材料主题内置于 Android 5.0 中,因此由系统 UI 和应用程序使用。 从系统范围外观选项意义上讲,材料主题不是“主题”,用户可以从设置菜单中选择动态选择。 相反,可以将材料主题视为一组相关的内置基样式,可用于自定义应用的外观。

Android 提供三种材料主题风格:

  • Theme.Material – 深色版材料主题;这是 Android 5.0 中的默认风格。

  • Theme.Material.Light – 材料主题的浅色版本。

  • Theme.Material.Light.DarkActionBar – 浅色版本的材料主题,但带有深色操作栏。

此处显示了这些材料主题风格的示例:
在这里插入图片描述

主题应用程序

若要将整个应用程序配置为使用“材料主题”风格, android:theme 请将 AndroidManifest.xml 中的应用程序节点的属性设置为以下其中一个:

  • @android:style/Theme.Material – 深色主题。

  • @android:style/Theme.Material.Light – 浅色主题。

  • @android:style/Theme.Material.Light.DarkActionBar – 带有深色操作栏的浅色主题。

以下示例将应用程序 MyApp 配置为使用浅色主题:

<application android:label="MyApp" 
             android:theme="@android:style/Theme.Material.Light">
</application>

或者,可以在 AssemblyInfo.cs (或 Properties.cs) 中设置应用程序Theme属性。 例如:

[assembly: Application(Theme="@android:style/Theme.Material.Light")]

主题活动

[Activity(Theme = "@android:style/Theme.Material.Light",
          Label = "MyApp", MainLauncher = true, Icon = "@drawable/icon")]

材料主题公开以下用于自定义的布局属性:

  • colorPrimary – 应用栏的颜色。

  • colorPrimaryDark – 状态栏和上下文应用栏的颜色;这通常是深色版本的 colorPrimary。

  • colorAccent – UI 控件的颜色,如复选框、单选按钮和编辑文本框。

  • windowBackground – 屏幕背景的颜色。

  • textColorPrimary – 应用栏中 UI 文本的颜色。

  • statusBarColor - 状态栏的颜色。

  • navigationBarColor – 导航栏的颜色。
    下图中标记了这些屏幕区域
    在这里插入图片描述
    默认情况下, statusBarColor 设置为值 colorPrimaryDark。 可以设置为 statusBarColor 纯色,也可以将其 @android:color/transparent 设置为使状态栏透明。 也可以通过将导航栏设置为navigationBarColor@android:color/transparent透明。

关于更多主题介绍可以通过这里了解

https://learn.microsoft.com/zh-cn/xamarin/android/user-interface/material-theme

像素

px

即像素,1px代表屏幕上一个物理的像素点;

px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同,如下图所示(图片来自android developer guide,下同)。

在这里插入图片描述

dp

这个是最常用但也最难理解的尺寸单位。它与“像素密度”密切相关,所以首先我们解释一下什么是像素密度。假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算出在这部手机的屏幕上,每英寸包含的像素点的数量为240/1.5=160dpi(横向)或320/2=160dpi(纵向),160dpi就是这部手机的像素密度,像素密度的单位dpi是Dots Per Inch的缩写,即每英寸像素数量。横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。

不同的手机/平板可能具有不同的像素密度,例如同为4寸手机,有480x320分辨率的也有800x480分辨率的,前者的像素密度就比较低。Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp到px的系数分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。例如界面上有一个长度为“80dp”的图片,那么它在240dpi的手机上实际显示为80x1.5=120px,在320dpi的手机上实际显示为80x2=160px。如果你拿这两部手机放在一起对比,会发现这个图片的物理尺寸“差不多”,这就是使用dp作为单位的效果,见下图。
  在这里插入图片描述

dip

与dp完全相同,只是名字不同而已。在早期的Android版本里多使用dip,后来为了与sp统一就建议使用dp这个名字了。

sp

与缩放无关的抽象像素(Scale-independent Pixel)。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。

最佳实践,文字的尺寸一律用sp单位,非文字的尺寸一律使用dp单位。例如textSize=“16sp”、layout_width=“60dp”;偶尔需要使用px单位,例如需要在屏幕上画一条细的分隔线时:

 <View layout_width="match_parent" layout_height="1px"/> 

常用UI框架推荐

https://gitcode.net/mirrors/wasabeef/awesome-android-ui?utm_source=csdn_github_accelerator

常用动画推荐

https://developer.android.google.cn/training/constraint-layout/motionlayout/examples?hl=zh-cn

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

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

相关文章

没有公网IP,怎样远程查看视频监控?

视频监控通常被称作“第三只眼”。如今&#xff0c;除了最基础的安防需求外&#xff0c;视频监控在不同的应用场景延伸出了各种各样的功能需求&#xff0c;并且正与日俱增。 常见的家庭应用场景&#xff0c;如照看老人小孩、宠物等&#xff1b;常见的公司应用场景&#xff0c;如…

vue的script动态改css、scss变量方法

解决场景&#xff1a;script设颜色变量&#xff0c;<style>的background-color的值"#ddd"的跟着变 序 1、这篇博文适用vue2和vue3版本&#xff0c;博主实验时&#xff0c;vue3的版本是^3.2.45 2、 其实要解决的方案在vue3里有一个专栏“单文件组件的 <…

[附源码]Python计算机毕业设计Django志愿者服务平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

3分钟带你重温 SelectDB 产品发布会亮点!

12月8日的 SelectDB 产品发布会圆满举办&#xff0c;一时间吸引了无数业内关注&#xff0c;大家都对这款在正式发布前就拿下 ClickBench 全球第一的云数仓产品充满期待与好奇。万众瞩目下&#xff0c;SelectDB Cloud 终于正式与大家见面了~~ 以下是这场发布会的详细解读&#…

蜂鸟E203学习笔记(五)——执行

1.1 执行概述 1.1.1 指令译码 指令所包含的信息编码在有限长度的指令字中&#xff0c;信息如下&#xff1a; 指令所需要读取的操作数寄存器索引指令需要写回的寄存器索引指令的其他信息如指令类型、指令的操作信息等 顺便注意&#xff1a;并非所有的处理器流水线都会在译码…

MySQL进阶篇(二) - 索引

一、索引概述&#xff08;P66&#xff09; 1. 介绍 索引&#xff08;index&#xff09;是帮助 MySQL 高效获取数据的数据结构&#xff08;有序&#xff09;。 在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&…

浅析Python中的struct模块

最近在学习python网络编程这一块&#xff0c;在写简单的socket通信代码时&#xff0c;遇到了struct这个模块的使用&#xff0c;当时不太清楚这到底有和作用&#xff0c;后来查阅了相关资料大概了解了&#xff0c;在这里做一下简单的总结。 了解c语言的人&#xff0c;一定会知道…

同花顺Python量化交易接口有什么功能?

为了进一步满足私募机构“本地化交易接口”的诉求&#xff0c;“同花顺Python量化交易接口”就出现了&#xff0c;目前仅支持同花顺模拟资金账户&#xff0c;您可以在本地对模拟资金账户进行下单、撤单、资产查询、委托查询等操作&#xff01;那么同花顺Python量化交易接口可以…

如何实现随机生成坐标点,并且使每个坐标点之间的距离大于某个距离?(用于散点图的绘制,进行数据的处理)

背景&#xff1a; 最近需要开发一个新需求&#xff0c;需要绘制一个随机生成数字的散点图&#xff0c;要求点与点的距离要大于某个特定值。 解决思路&#xff1a; 通过循环获取每个坐标点&#xff0c;每获取一个新的坐标点&#xff0c;都要与之前生成的坐标点进行对比&#…

为你揭秘保健品平台利用“消费全返”,半年净赚过百万背后的原因

​大家好&#xff0c;我是每天分享电商模式咨询的林工&#xff0c;最近林工了解到某一家保健品企业&#xff0c;利用做会员招商活动一招“消费全返”的商业模式&#xff0c;在短短半年内裂变近数十万会员&#xff0c;净挣过百万营业额&#xff0c;这个模式值得各行各业的企业家…

Python实战案例,tkinter+random模块,实现课堂随机抽选提问并语音播报学生姓名

前言 今天给大家介绍Python实现课堂随机抽选提问并语音播报学生姓名实战案例&#xff0c;废话不多说直接开整~ 开发工具 Python版本&#xff1a; 3.8 相关模块&#xff1a; tkinter模块 time模块 random模块 环境搭建 安装Python并添加到环境变量&#xff0c;pip安装需…

计算机毕业设计ssm+vue基本微信小程序的琴房管理系统 uniapp 小程序

项目介绍 随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具,钢琴培训企业各种管理系统层出不穷,为钢琴培训企业琴房管理开发必要的系统,能够有效的提升管理效率。一直以来,钢琴培训企业琴房预约一直没有进行系统化的管理,学生无…

sharing-jdbc-1-5.x版本应用

1总结 2&#xff1a;详解 运行模式 :: ShardingSphere 用户手册&#xff0c;开发手册。这俩比较重要 spring.shardingsphere.mode.type 默认内存模式 3官网案例 不同的依赖坐标&#xff0c;配置方式不一样。按照官网的配置来一步一步配置。 4 整合springboot方式 行表达式 :…

【JS】postMessage 用法(可以给iframe传值)

文章目录基本概念代码案例基本概念 跨文档消息&#xff0c;有时候也简称为XDM(cross-document messaging) 是一种在不同执行上下文&#xff08;如不同源的页面&#xff09;间传递信息的能力。例如&#xff1a;www.wrox.com上的页面想要与包含在内嵌窗格中的p2p.wrox.com上面的页…

第一个Spring Boot程序

⭐️前言⭐️ 本文主要介绍Spring Boot项目的创建流程&#xff0c;及Spring Boot项目目录的一些注意事项。 &#x1f349;博客主页&#xff1a; &#x1f341;【如风暖阳】&#x1f341; &#x1f349;精品Java专栏【JavaEE进阶】、【JavaEE初阶】、【MySQL】、【数据结构】 &…

JAVA SCRIPT设计模式--行为型--设计模式之Command命令模式(14)

JAVA SCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVA SCRIPT语言来实现主体功能&#xff0c;所以不可能像C&#xff0c;JAVA等面向对象语言一样严谨&#xff0c;大部分程序都附上了JAVA SCRIPT代码&#xff0c;代码只是实现了设计模式的主体功能&#xff0c;不代…

服务器硬件规格常用查看命令——CPU相关命令

使用lscpu 命令可以从sysfs和/proc/cpuinfo中收集CPU体系结构信息&#xff0c;并解析优化为易阅读的格式。该信息包括&#xff1a;CPU的线程、核心、套接字数量和非一致内存访问&#xff08;NUMA&#xff09;节点的数量&#xff0c;以及CPU缓存、共享缓存、系列、型号等信息。 …

英文写作—Grammarly安装及下载

Grammarly是一款在线语法纠正和校对工具&#xff0c;支持Windows、Mac、iOS和Android等多个平台。 主要功能包括检查单词拼写、纠正标点符号、修正语法错误、调整语气以及给出风格建议等&#xff1b;对学术写作来说&#xff0c;Grammarly还可以帮助查重。 登陆界面&#xff1a…

每日一题:折半查找法,二分查找法

每日一题&#xff1a;折半查找法&#xff0c;二分查找法每日一题&#xff1a;折半查找法&#xff0c;二分查找法二分查找法定义&#xff1a;代码1&#xff1a;代码2&#xff1a;每日一题&#xff1a;折半查找法&#xff0c;二分查找法 ​ &#x1f496;&#x1f496;个人博客:比…

SpringBoot之自定义注解

目录 1.java注解简介 1.1.java注解分类 1.1.1.JDK基本注解 1.1.2.JDK元注解 1.1.3.自定义注解 1.1.4 在这里如何自定义注解&#xff1f; 2、自定义注解 3.Aop应用自定义注解 1.java注解简介 Java注解是附加在代码中的一些元信息&#xff0c;用于一些工具在编译、运行时进行解…