Android众说纷纭分辨率
Andoid最被人诟病的就是显示屏的各种不同尺寸和不同分辨率。由于Android厂商的纷繁多样,导致出现了不同尺寸和不同分辨率的手机,指示开发者需要兼容各种手机屏幕。本文想学习的就是Android的显示屏幕的各种名词。
打开手机参数,会看到这样的数据
尺寸指的是屏幕对角线的长度。以英寸作为度量单位。
分辨率指的是在长和宽上各有多少像素。用这个能知道宽高比,一般如果宽高比例是16:9,就是宽屏,4:3就是窄屏了。
我们平时说的VGA,HVGA,QVGA,WVGA,WQVGA是分辨率的概念:
VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素;
HVGA:Half-size VGA;即:VGA的一半,分辨率为480×320;
QVGA:Quarter VGA;即:VGA的四分之一,分辨率为320×240;
WVGA:Wide Video Graphics Array;即:扩大的VGA,分辨率为800×480像素;
WQVGA:Wide Quarter VGA;即:扩大的QVGA,分辨率比QVGA高,比VGA低,一般是:400×240,480×272
指的是一英寸有多少像素点。
这里使用的单位有几个:dpi,ppi
ppi和dpi经常被混用,其实ppi才是正确的(pixel per inch),dpi(Dot Per inch)是在打印的时候才用到的。
比如上面那个手机参数中,密度是441ppi,则说明每1平方英寸的屏幕中有441*441个像素。
我们可以稍微做下计算,这个手机屏幕高有1920个像素,密度是441ppi,则高大致有1920/441 = 4.35 英寸,宽有1080/441 = 2.44英寸。那矩形对角线长度(尺寸)5^2 ~ 4.35^2 + 2.44^2
我们可以看到我们的res文件夹中保存的图片信息都是用dpi来做的,比如
drawable-hdpi
drawable-ldpi
drawable-mdpi
drawable-xdpi
hdpi就是高密度,mdpi中等密度,ldpi低密度,xdpi更高密度。
为什么这里要针对不同的密度做不同的资源划分呢?因为图片大小是以像素来算的,比如一个图片是400*300,就是长宽占的像素。
想象下两个手机有同样的尺寸和宽高比,但是一个是高密度高分辨率的,一个是低密度低分辨率的。那么同样一个图片在高密度的手机上就会显示非常小,在低密度低分辨率手机上就会显示非常大。因此对不同密度设置不同的图片是很有必要的。
密度无关像素我们一直都是用像素来做基本单位的,但是Android的大小分辨率不一,比如一个320的直线,在240*320的分辨率下正好放,但是在240*640的分辨率下只显示了一半,就是说这个图片展示实际和密度是相关的。因此Android引入了一个密度无关像素的概念。这是一个量词,dp或者叫dip(Density Independent Pixel)。它和像素并不是一一对应的,是有一个换算公式的。比如在160dpi密度的屏幕中(1英寸有160*160个像素),那么dp就和像素是等价的。如果说在320dpi密度的屏幕中,那么一个dp就相当于2个像素了。
使用dp的好处是什么呢?好处就是如果在开发中,比如一条直线以dp作为单位,那么只要设置一次,就可以适配到多个屏幕了。
首先Android将分辨率与密度绑定起来,做了一个约定
即320*480分辨率的手机,它的密度必须设置为160dpi,那么它在宽上可以展示320个像素,也是320dp。对于480*800分辨率的在3寸到4寸手机呢,它的密度必须是240dpi,那么在宽上可以显示480像素,dp呢?160 / 240 * 480 = 320dp。也是可以显示320dp。所以如果在程序中设置一条直线为320dp,那么在不同分辨率下一样会占满了整个宽。
Android至今还有头疼的图片分辨率的问题就在于px和dp的转换上。我们的资源图片还是以px为单位,在转换成dp的过程中会出现各种问题。比如转换过程中的四舍五入的问题可能会导致图片的显示出现差异等。
适配完结篇二 - 谷歌小弟的Android多分辨率适配框架 • 切图存放于drawable-nodpi • 抛开系统的dpi并且摒弃dp和sp,统一使用px作为尺寸单位 • 按照给定高分辨率(如1920*1080)切图和布局, 其实只有1080px有参考价值 • 根据需要, 等比例缩放每个View 目前,xxhdpi分辨率的手机占了主流,所以在该框架中采用了drawable-xxhdpi的切图。倘若以后xxxhdpi分辨率的手机占了主导地位,那么就请UI设计师按照该分辨率切图,我们将其放在drawable-nohdpi中,再修改BASE_SCREEN_WIDTH即可。
安卓端/iOS端如何播放4K分辨率的RTMP/RTSP流 关于4K分辨率 4K分辨率即4096×2160的像素分辨率,它是2K投影机和高清电视分辨率的4倍,属于超高清分辨率。在此分辨率下,观众将可以看清画面中的每一个细节,每一个特写。影院如果采用惊人的4096×2160像素,无论在影院的哪个位置,观众都可以清楚的看到画面的每一个细节,影片色彩鲜艳、文字清晰锐丽,再配合超真实音效,这种感觉真的是一种难以言传的享受。
dp/dip(device independent pixels) 设备独立像素 与设备有关系 对角线每英寸的像素点的个数 px 像素,pixel的缩写。
相关文章
- Android一键锁屏开发全过程
- [Android] 如何查看apk需要支持的Android版本
- [Android Pro] 关于inputStream.available()方法获取文件的总大小
- [Android Pro] android root权限破解分析
- [Android Memory] android 警告:Exported activity does not require permission
- Failed to fetch URl https://dl-ssl.google.com/android/repository/addo Android SDK更新以及ADT更新出现问题的解决办法
- Android开发之旅:android架构
- 基于XMPP协议的Android即时通信系
- android 5.0 -- Ripple 效果
- 鹅厂流出两份Android Framework技术宝典火了,完整版 PDF 限时开放下载
- Android 原子操作
- Android Button 实现渐变背景色、外边框颜色、圆角弧度、点击变色(完整源码)
- Android 12.0 系统多个播放器app时,设置默认播放器
- Android 9.0 延时开机动画解决首次开机黑屏和去掉android正在启动的提示框
- android 9.0 修改Launcher3 app hotseat 图标形状为圆角图标
- android 解决报错 installation failed with message Failed to finalize session : INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed parse during installPackageLI: Failed to read manifest from /xx/xx/xx.apk
- 【Android Gradle 插件】Gradle 构建生命周期 ② ( Gradle 类的添加构建生命周期监听器函数 | Gradle#addListener 函数 )
- 【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )
- 【Android 逆向】整体加固脱壳 ( 脱壳点简介 | 修改系统源码进行脱壳 )
- 【Android 安装包优化】Android 中使用 7zr 可执行程序 解压缩文件
- 2014 android毕设代做 代做Android毕设 安卓毕设
- Android修改kernel logo和开机动画(android)
- android studio——替换全局的某个字符串
- android 输入法如何启动流程_Android输入法显示流程
- Android 系统休眠唤醒 android-suspend
- Android的报错提示:Failed to resolve: com.android.support:appcompat-v7:28.0.0
- Android 10.0 Camera2 拍照功能默认选前摄像头