`
mixer_a
  • 浏览: 363899 次
社区版块
存档分类
最新评论

Android 适配不同的屏幕[Lesson 2 - 适配不同屏幕密度]

阅读更多

Supporting Different Densities适配不同的屏幕密度

上一篇文章和大家分享了如何适配不同大小的屏幕,有个概念需要提前弄清楚,屏幕大的不一定就分辨率高,详细请看下面的内容。
This lesson shows you how to support different screen densities by providing different resources and using resolution-independent units of measurements.

[我们需要通过提供不同的resources来support不同的屏幕密度,使用一种独立与分辨率的测量单元来表示(也就是dp)]
  • Use Density-independent Pixels [使用设备独立像素dp/sp]
         [前一节,我们就提到过,一定要避免使用绝对pixels(像素)的方式来设计layout的大小或者距离,因为不同的的屏幕有不同的像素密度,所以相同的像素在不同的设备上物理大小会有区别。通常我们都会在需要的时候使用dp,或者sp来表示大小]
  •  
    • dp:A dp is a density-independent pixel that corresponds to the physical size of a pixel at 160 dpi(dots per inch:每英寸点数). 
      • dp也就是dip:device independent pixels(设备独立像素)
      • dp是一种与密度无关的像素单位,在每英寸160点的屏幕上,1dp = 1px
      • 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素
  1. <Button android:layout_width="wrap_content"   
  2.     android:layout_height="wrap_content"   
  3.     android:text="@string/clickme"  
  4.     android:layout_marginTop="20dp" />  


  • sp:An sp is the same base unit, but is scaled by the user's preferred text size (it’s a scale-independent pixel), so you should use this measurement unit when defining text size (but never for layout sizes).
    • scaled pixels(刻度像素). 主要用于定义字体的大小,而从来不再layout上使用
      1. <TextView android:layout_width="match_parent"   
      2.     android:layout_height="wrap_content"   
      3.     android:textSize="20sp" />  
  • px:pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多
总结:dp也就是dip。这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp或sp。但如果设置字体,需要使用sp。dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度为160,这时dp和sp和px是一样的。1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸),而屏幕密度变成了320。那么原来TextView的宽度设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动将width属性值设置成320px的。也就是160 * 320 / 160。其中320 / 160可称为密度比例因子。也就是说,如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换.【百度百科:http://baike.baidu.com/view/416780.htm#sub5084586】
  • Provide Alternative Bitmaps [提供可选择的图片]
因为需要适配不同屏幕,我们需要提供不同的图片来适配,这样才能带来更好的用户体验
To generate these images, you should start with your raw resource in vector format and generate the images for each density using the following size scale:
[通常我们需要提供下面的资源图片来适配]
xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75
This means that if you generate a 200x200 image for xhdpi devices, you should generate the same resource in 150x150 for hdpi, 100x100 for mdpi and finally a 75x75 image for ldpidevices.
[这意味着如果我们为xhdpi的设备生成了一张200x200的图片,同时也需要为hdpi的设备生成150x150的图片,为mdpi的设备生成100x100的图片,最后为ldpi的设备生成75x75的图片]
需要像下面一样来放置那些特殊适配的文件
res/
    drawable-xhdpi/
        awesomeimage.png
    drawable-hdpi/
        awesomeimage.png
    drawable-mdpi/
        awesomeimage.png
    drawable-ldpi/
        awesomeimage.png
这样之后,在任何地方引用@drawable/awesomeimage,系统都会自动根据当前设备的dpi来选择合适的图片进行显示。
For more tips and guidelines for creating icon assets for your application, see the Icon Design Guidelines.
分享到:
评论

相关推荐

    android – 多屏幕适配相关--屏幕设置相关

    综上所述,Android开发者需要理解屏幕尺寸、密度的概念,掌握不同的布局策略和资源管理方式,才能有效地实现多屏幕适配。通过合理地利用Android提供的工具和库,可以确保应用在各种设备上都有出色的显示效果。

    Android多屏幕适配及样式-设计开发指导书

    ### Android多屏幕适配及样式设计开发指导书 #### 一、引言 随着移动互联网技术的发展,Android设备种类繁多,不同的品牌、型号、屏幕尺寸以及分辨率等特性导致了多屏幕适配成为Android开发中的一项重要挑战。本文...

    Android-AutoAndroidLayoutAndroid屏幕适配方案直接填写设计图上的像素尺寸即可

    Android开发中的屏幕适配历来是一个挑战,因为Android设备的屏幕尺寸和密度各异。通常,开发者需要根据不同的屏幕密度(例如hdpi、xhdpi等)创建不同尺寸的资源文件,并使用dp(density-independent pixels)单位来...

    Unity与Android交互的适配包android-support-v4.jar,android-support-v7-appcompat.jar

    1、android-support-v4.jar,android-support-v7-appcompat.jar,非常实用的jar文件,不可缺少,兼容Android 对应版本,包中包含类许多我们可以调用的,如widget、...2、导入Unity或者Android Studio 开发中,即可使用

    Android-androidUI适配屏幕适配

    在Android应用开发中,屏幕适配是一个至关重要的环节,因为Android设备有着丰富的屏幕尺寸和分辨率。本篇文章将深入探讨如何进行Android UI的适配工作,确保应用在不同设备上都能呈现出良好的视觉效果和用户体验。 ...

    Android屏幕适配资源

    在Android应用开发中,屏幕适配是一个至关重要的环节,因为Android设备有着各种不同的屏幕尺寸和分辨率。本资源包"Android屏幕适配资源"专注于解决这一问题,提供了values资源,能够帮助开发者轻松实现不同屏幕尺寸...

    Android-今日头条屏幕适配方案终极版一个极低成本的Android屏幕适配方案

    dp是一种与设备密度无关的单位,它可以帮助我们保持界面元素在不同密度屏幕上的大小一致。 2. **自定义字体适配**:除了布局尺寸外,字体大小也需要适配。通过根据屏幕密度调整字体大小,可以确保文本在不同屏幕...

    可以适配权限管理的android-support-v4-jar.rar

    eclipse进行权限管理适配,ContextCompat.checkSelfPermission()方法找不到,是因为android-support-v4版本低了,这个版本可以使用,亲测,替换掉原来的V4包就可以了。

    Android 屏幕适配工具

    在Android开发中,屏幕适配是一项至关重要的任务,因为Android设备拥有各种各样的屏幕尺寸、分辨率和像素密度。为了确保应用程序在所有设备上都能提供一致且良好的用户体验,开发者需要掌握有效的屏幕适配策略。...

    android屏幕适配方案

    在Android开发中,屏幕适配是一项至关重要的任务,因为Android设备有着广泛的屏幕尺寸和分辨率,从小型手机到大型平板电脑不一而足。一个良好的屏幕适配方案能够确保应用程序在不同设备上显示一致且用户体验良好。...

    不同屏幕分辨率适配的varlues包

    2. **使用比例尺寸**:使用dp(density-independent pixels)单位,而不是px(pixels),可以确保元素在不同密度屏幕上的视觉大小一致。 3. **使用比例宽度和高度**:使用`wrap_content`和`match_parent`可以让控件...

    Android12适配nanopc-t4-跑通AP6398SV-20231222-0905.7z

    【Android 12适配nanoPC-T4】 在Android操作系统的发展历程中,每个新版本的发布都伴随着性能提升、功能优化以及对硬件平台更广泛的支持。Android 12是谷歌推出的最新版本,它引入了一系列改进,包括用户界面的刷新...

    使用CSS3-Media-Query技术适配Android平板屏幕分辨率和屏幕密度.docx

    使用CSS3 Media Query技术适配Android平板屏幕分辨率和屏幕密度 在移动应用开发中,适配各种Android平板设备的分辨率和屏幕密度是一个棘手的问题。使用CSS3 Media Query技术可以轻松解决这个问题。Media Query是一...

    Android dimens sw 屏幕适配文件

    Android dimens sw 屏幕适配文件 values-sw300dp values-sw310dp values-sw320dp values-sw330dp values-sw340dp values-sw350dp values-sw360dp values-sw370dp values-sw380dp values-sw390dp values-sw400dp ...

    Android-针对Android屏幕适配所整合的几种常用方案

    在Android应用开发中,屏幕适配是一个至关重要的环节,因为Android设备有着丰富的屏幕尺寸和分辨率。本篇文章将详细探讨几种常见的Android屏幕适配方案,帮助开发者解决不同设备间界面显示不一致的问题。 1. **使用...

    Android-解决Android适配问题

    例如,可以在`values-mdpi`、`values-hdpi`、`values-xhdpi`等目录下创建不同密度的资源,确保图像和布局在不同像素密度的屏幕上显示正确。此外,使用相对布局(`RelativeLayout`)或约束布局(`ConstraintLayout`)...

    Android-Android屏幕适配方案自动生成不同分辨率的值

    在Android应用开发中,屏幕适配是一个至关重要的环节,因为Android设备有着各种不同的屏幕尺寸和分辨率。本篇文章将深入探讨“Android-Android屏幕适配方案自动生成不同分辨率的值”这一主题,帮助开发者构建能够在...

    Android 处理HTML-HTML适配屏幕.pdf

    为了实现良好的屏幕适配,开发者需要充分理解Android的屏幕分类和资源管理机制,利用dp单位和比例缩放来设计可扩展的UI,同时配合WebView的特性处理HTML内容。此外,测试是确保适配成功的关键,开发者应该在多种真实...

    Android屏幕适配工具类

    Android系统通过dp(density-independent pixels)作为单位来实现不同密度屏幕的适配,dp是一个与设备像素密度无关的单位。但是,对于不同的屏幕尺寸,仅仅依赖dp是不够的,因为即使相同密度的屏幕,尺寸差异也可能...

Global site tag (gtag.js) - Google Analytics