首页 > 其他分享 >Android 屏幕适配基础

Android 屏幕适配基础

时间:2023-06-22 11:04:45浏览次数:53  
标签:density 适配 像素 尺寸 Android 屏幕 dp


Pixels和dp、sp的区别

Android 屏幕适配基础_Android

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

Android 屏幕适配基础_Android_02

1dp在不同屏幕上显示相同的物理长度

sp只用在字体上,和dp一样为了让在不同设备上有一致的显示效果

单位尺寸

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

屏幕尺寸

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

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

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

Android 屏幕适配基础_Android_03

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
  )

以上就是屏幕适配的基础

标签:density,适配,像素,尺寸,Android,屏幕,dp
From: https://blog.51cto.com/u_16163453/6534419

相关文章

  • Android 多任务配置
    Android多任务配置本篇文章是为了了解安卓中的多任务系统,了解安卓中Task的栈结构,以及怎么配置app的多任务,模仿微信小程序。多任务配置在安卓手机上,当我们打开微信小程序,可以看到小程序其实是一个独立的任务,这是怎么配置的呢。其实很简单,我们只需要在安卓项目的配置文件中,对Activit......
  • 好家伙66万字,又一份牛逼的Android笔记面世了
    前言很久以前,凭借四大组件、Java基础等知识,便可开开心心的开发,轻松地上岗。而随着Android的不断发展完善,各种组件库越来越成熟,学习资料越来越多,我们却慢慢地看不到方向。信息爆炸的时代,到底该如何提升自己?如何才能找到真正利己的信息?如何才能看清前路的方向?为此我专门找了一份《And......
  • 四年Android开发,在拉勾上投了十几个简历,没有一个面试邀请......药丸了
    在浏览某论坛的时候看到一名程序员吐槽:坐标杭州,四年Android开发一枚,技术不顶尖也不算差吧,这边加班太猛了,在考虑换一个岗位。在拉勾上投了十几个简历,全都是不合适,没有一个面试邀请!!!简历在拉勾上是开放的,竟然没有一个感兴趣的公司打电话给我。前年这个时候,接到的电话还是很多的,这才过......
  • Android视图加载优化——Factory2设置方法
    前言Factory2是直接继承于Factory,继续跟踪下Factory的源码,比Factory的功能更加强大。当我们新建Activity的时候,大部分情况是继承AppCompatActivity。提供了向后兼容性。本文将深入探索AppCompatActivity的视图加载,探索将xml布局文件中的TextView替换成AppCompatTextVi......
  • 6轮面试辛苦拿到阿里Android开发offer,却从22k降到15k,在逗我?
    一小伙工作快3年了,拿到了阿里云Android开发岗位P6的offer,算HR面一起,加起来有6轮面试了,将近3个月的时间,1轮同级+1轮Android用人部门leader+1轮Android组leader+1轮项目CTO+1轮HR+1轮HRBP。一路上各种事件分发机制、自定义View、handler原理、多线程、hashmap、手写算法、......
  • 三年Android开发就这水平?我还不如去招应届生
    公司前段缺人,也面了不少android程序员,结果竟然没有一个合适的。一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望。看简历很多都是3年工作经验,但面试中,不提算法逻辑,仅仅基础的技术很多也知之不详,多数人数年的工作经验仅仅是用大量第三......
  • 【Android】如何实现同一个布局保证高度不变,使用不同高度的背景
    背景预实现一个切换tab,实现选中与未选中的背景切换,特别之处在于选中背景图和未选中背景图高度不相同,切换之后需要在java代码中动态设置LayoutParams改变高度。预期效果当前问题点选中背景为.9图,未选中背景为xml中通过shape实现。将当前ViewGroup设置为选中状态的固定高度选中效果正......
  • Android binder 机制驱动核心源码详解
    前言应用程序中执行getService()需与ServiceManager通过binder跨进程通信,此过程中会贯穿Framework、Natve层以及Linux内核驱动。binder驱动的整体分层如上图,下面先来宏观的了解下getService()在整个Android系统中的调用栈,ServiceManager本身的获取:与ServiceManage......
  • Android面试技巧总结,这下offer稳啦
    最近有很多朋友给我后台留言:自己投了不少简历,但是收到的面试邀请却特别少;好不容易收到了大厂的面试邀请,但是面试官问得太深了,结果也挂了;对于面试官的问题,明明知道该怎么做,但是却说不清楚。这些问题不是个例,很多人都有这样的困扰。很大一部分是技术层面的问题。薪资比较高的前端岗位......
  • 六年Android开发从组员到Leader的心路历程分享
    前言在互联网工作的这些年,大厂和小厂都待过,也接触过各种各样的管理者和组员,直到近两年自己开始成为技术Leader,算是在两种角色上都有些切身的心得体会,这里给大家分享下,希望能给大家的职场工作带来一些启发。简单说明下,在毕业不久加入阿里的第一年,团队大概十几个人,作为三个新人之一,......