Android 屏幕适配基础

Posted 嘴巴吃糖了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 屏幕适配基础相关的知识,希望对你有一定的参考价值。

Pixels和dp、sp的区别

不同屏幕密度下,1p显示的物理长度不同

1dp在不同屏幕上显示相同的物理长度
sp只用在字体上,和dp一样为了让在不同设备上有一致的显示效果

单位尺寸

搞清楚屏幕的各种单位含义,是屏幕适配的基础

屏幕尺寸

含义:手机对角线的物理尺寸

单位:英寸(inch),1英寸=2.54cm

屏幕尺寸、分辨率、像素密度三者关系

dpi 屏幕密度

含义:每英寸的像素点数

单位:dpi(dots per ich)

/**
 * 获取屏幕密度比值
 */
fun getDpi(activity: AppCompatActivity): Float 
    val w = activity.window.windowManager
    val dm1 = DisplayMetrics()
    w.defaultDisplay.getMetrics(dm1)
    val density = dm1.density
    return density
 

该屏幕的dpi=density*160dpi
android中,规定以160dpi(即屏幕分辨率为320x480 5.7英寸)为基准:1dp=1px

dp 密度无关像素

含义:density-independent pixel,叫dp或dip,与终端上的实际物理像素点无关。

单位:dp,可以保证在不同屏幕像素密度的设备上显示相同的效果

dp与px的转换

因为ui设计师给的设计图是以px为单位的,Android开发则是使用dp作为单位的,那么需要进行转换:

在Android中,规定以160dpi(即屏幕分辨率为320x480 5.7英寸)为基准:1dp=1px

px= dp (dpi/160)

px = dp * density

sp独立比例像素

含义:scale-independent pixel,叫sp或sip

单位:sp

Android开发时用此单位设置文字大小,可根据字体大小首选项进行缩放

推荐使用12sp、14sp、18sp、22sp作为字体设置的大小,不推荐使用奇数和小数,容易造成精度的丢失问题;

小于12sp的字体会太小导致用户看不清

www.jishudog.com/9089/html

TypedValue. 构建DP/PX

把Android系统中的非标准度量尺寸转变为标准度量尺寸 (Android系统中的标准尺寸是px, 即像素)

 val with = TypedValue.applyDimension(
			TypedValue.COMPLEX_UNIT_DIP,
			350f,
			context.resources.displayMetrics
  ) 

以上就是屏幕适配的基础

文末

要想成为架构师,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

一、架构师筑基必备技能

1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
……

二、Android百大框架源码解析

1.Retrofit 2.0源码解析
2.Okhttp3源码解析
3.ButterKnife源码解析
4.MPAndroidChart 源码解析
5.Glide源码解析
6.Leakcanary 源码解析
7.Universal-lmage-Loader源码解析
8.EventBus 3.0源码解析
9.zxing源码分析
10.Picasso源码解析
11.LottieAndroid使用详解及源码解析
12.Fresco 源码分析——图片加载流程

三、Android性能优化实战解析

  • 腾讯Bugly:对字符串匹配算法的一点理解
  • 爱奇艺:安卓APP崩溃捕获方案——xCrash
  • 字节跳动:深入理解Gradle框架之一:Plugin, Extension, buildSrc
  • 百度APP技术:Android H5首屏优化实践
  • 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
  • 携程:从智行 Android 项目看组件化架构实践
  • 网易新闻构建优化:如何让你的构建速度“势如闪电”?

四、高级kotlin强化实战

1、Kotlin入门教程
2、Kotlin 实战避坑指南
3、项目实战《Kotlin Jetpack 实战》

  • 从一个膜拜大神的 Demo 开始

  • Kotlin 写 Gradle 脚本是一种什么体验?

  • Kotlin 编程的三重境界

  • Kotlin 高阶函数

  • Kotlin 泛型

  • Kotlin 扩展

  • Kotlin 委托

  • 协程“不为人知”的调试技巧

  • 图解协程:suspend

五、Android高级UI开源框架进阶解密

1.SmartRefreshLayout的使用
2.Android之PullToRefresh控件源码解析
3.Android-PullToRefresh下拉刷新库基本用法
4.LoadSir-高效易用的加载反馈页管理框架
5.Android通用LoadingView加载框架详解
6.MPAndroidChart实现LineChart(折线图)
7.hellocharts-android使用指南
8.SmartTable使用指南
9.开源项目android-uitableview介绍
10.ExcelPanel 使用指南
11.Android开源项目SlidingMenu深切解析
12.MaterialDrawer使用指南

六、NDK模块开发

1、NDK 模块开发
2、JNI 模块
3、Native 开发工具
4、Linux 编程
5、底层图片处理
6、音视频开发
7、机器学习

七、Flutter技术进阶

1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter开发环境搭建和调试
5、Dart语法篇之基础语法(一)
6、Dart语法篇之集合的使用与源码解析(二)
7、Dart语法篇之集合操作符函数与源码分析(三)

八、微信小程序开发

1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战……

全套视频资料:

一、面试合集

二、源码解析合集


三、开源框架合集


欢迎大家一键三连支持,若需要文中资料,直接点击文末CSDN官方认证微信卡片免费领取【保证100%免费】↓↓↓

以上是关于Android 屏幕适配基础的主要内容,如果未能解决你的问题,请参考以下文章

iOS设计尺寸375*812怎么适配安卓

Android 屏幕适配屏幕适配基础概念 ① ( Android 与 iOS 屏幕宽高比种类 | 屏幕像素密度 DPI )

Flutter MediaQuery获取屏幕信息以及屏幕适配

android屏幕适配的全攻略

Android 屏幕适配

Android 屏幕适配屏幕适配基础概念 ④ ( 屏幕适配限定符 | 手机/平板电脑设备屏幕适配 )