.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

同系列文章推荐

.net开发安卓入门 - 环境安装
.net开发安卓入门 - Hello world!
.net开发安卓入门 - 基本交互(Button,输入EditText,TextView,Toast)
.net开发安卓入门 - 布局与样式
.net开发安卓入门 - Activity
.net开发安卓入门 - Notification(通知)
.net开发安卓入门 - 四大基本组件
.net开发安卓入门 - Service (服务)
.net开发安卓入门 - 打包(.apk)
.net开发安卓入门 - ImageView 显示网络图片
.net开发安卓入门-文件操作与配置操作
.net开发安卓入门-Dialog
.net开发安卓入门-自动升级(配合.net6 webapi 作为服务端)
vs2022 实现无线调试安卓(Windows)
.net开发安卓从入门到放弃
.net开发安卓从入门到放弃 最后的挣扎(排查程序闪退问题记录-到目前为止仍在继续)
.net开发安卓入门 -记录两个问题处理办法

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

  1. .net开发安卓入门 - Hello world!

    .net开发安卓入门 - Hello world! 前言 新建项目 启动调试 调试效果 添加Hello World 效果 安卓样式常见属性介绍 第一类:属性值为true或false 第二类:属性值必须 ...

  2. .net开发安卓入门 - 环境安装

    文章目录 工具 VS2022 Android SDK Manager 如下图,安装一个镜像和工具 模拟器 设备管理器如下图 启动模拟器,看一下效果 常见问题 同系列文章推荐 工具 VS2022 下载地 ...

  3. .net开发安卓入门 - Service (服务)

    .net开发安卓入门 - Service Android Service 概述 Service VS Thread (服务和线程之间进行选择) 前台服务 代码 启动前台服务方法 运行效果 后台服务 代 ...

  4. .net开发安卓入门 - Activity

    .net开发安卓入门 - Activity Activity MainActivity 创建一个新的Activity和他的UI SecondActivity.cs second_activity.xm ...

  5. android 字体像素转换工具类_android px,dp,sp大小转换工具

    package com.voole.playerlib.util; import android.content.Context; /** * Android大小单位转换工具类 * * float s ...

  6. 安卓开发——安卓界面布局笔记

    Android布局笔记 Android的界面是有布局和组件协同完成的,布局使用不同的组件,组件按照布局的要求依次排列,就组成了用户所看见的界面. 所有的布局方式都可以归类为ViewGroup的5个类别 ...

  7. android 密度像素,Android屏幕密度适配问题之px,dp,sp等详细介绍

    一  ,android屏幕相关知识 屏幕大小:指屏幕对角线的长度,使用"寸"度量,如4.7寸手机 分 辨  率:分辨率指手机屏幕的像素点个数,如720*1280 指屏幕宽有720个 ...

  8. android功能网格布局,Visual Studio 开发安卓之布局-网格布局(GridLayout)

    GridLayout 与 TableLayout 用法非常相似,不过它的"单元格"可以跨行,没有了 Row 子元素,代码更简洁,还有据说它渲染速度比 TableLayout 快. ...

  9. 与像素无关的dp单位与像素单位px之间的转换

    package com.hujl.util; import android.content.Context; public class DensityUtil { /** * 根据手机的分辨率从 dp ...

最新文章

  1. 无向图--邻接矩阵、连接矩阵、深度遍历、广度遍历、生成树
  2. python-34:极视界爬虫总结
  3. POI获取WORD信息
  4. HbuilderX、Hbuilder编辑器如何使用手机调试app
  5. 使用servlet+jdbc+MD5实现用户加密登录
  6. Windows 未能启动。原因可能是最近更改了硬件或软件。解决此问题的步骤
  7. jQuery使用手册之三 CSS操作
  8. Android 10上的F2FS文件系统制作
  9. 应用时间序列分析(王燕)学习笔记2
  10. acwing-提高课
  11. Windows更新驱动后无法开机的解决办法
  12. Hbuilder开发移动新闻客户端(二)
  13. Win7电脑上如何增加磁盘分区?
  14. 三星I909破解使用GPRS上网教程
  15. 三菱FX5U传送指令
  16. JQuery入门学习教程
  17. ffmpeg播放器声音效果1-淡入淡出
  18. python输入姓和名_编程练习1-输入姓,返回名
  19. getchar和putchar函数详解
  20. 批量创建文件夹-python

热门文章

  1. 求计算机文化节主题,计算机文化节策划书.doc
  2. ReentrantLock 实现原理(公平锁和非公平锁)
  3. 计算机应用基础(专)【4】
  4. 最新!“2020年中国大学百强榜”出炉,排名前10的是这些高校
  5. android中应用程序生命周期,Android应用程序生命周期中的活动和图标
  6. 印度大停电对全球的警示
  7. J-LinuxShell-W3
  8. Web Service 部署
  9. 2023爱分析・云原生 IDE 市场厂商评估报告-行云创新(CloudToGo)
  10. 不黑学孙溟㠭匪石社寒山寺游记