草庐IT

适用于不同屏幕尺寸和不同密度的 Android UI(布局 + 资源)

coder 2023-12-16 原文

首先,我已经在 SO 上看到了所有可用的答案,但无法确切地得到我想问的问题,因此我在这里写下这个问题,它可能对其他人也有帮助。

我所知道的

为了支持多密度,我们应该通过考虑以下因素在可绘制文件夹中提供不同的资源(图像),

ldpi    :  0.75x
mdpi    :  1x
hdpi    :  1.5x
xhdpi   :  2x
xxhdpi  :  3x
xxxhdpi :  4x

例如,如果我们在 mdpi 中有一个大小为 100X100 像素的图像,那么其他密度的图标大小将为,

ldpi    :   75X75 px
mdpi    :   100X100 px
hdpi    :   150X150 px
xhdpi   :   200X200 px
xxhdpi  :   300X300 px
xxxhdpi :   400X400 px

我的问题:

  1. 由于在一种密度下可以有多种屏幕分辨率,那么在设计图标时假设 mdpi 应该考虑哪种分辨率?假设设计师在 Photoshop 中创建屏幕,然后将图标剪切出来,那么 mdpi 应该考虑哪种屏幕分辨率?

  2. 是否会在所有具有相同密度的屏幕分辨率上显示相同的图像。例如,我们在 hdpi 中有从 480X600 到 1920X1200 的分辨率,那么在这两个分辨率上会显示相同的图像吗?在 1920X1200 分辨率下会不会比 480X600 看起来小?

  3. 如果我们想要设计一个适合所有屏幕尺寸的自定义背景图片怎么办?同样的方法应该是什么?假设我们要为hdpi设计一张背景图片,那么我们应该为哪种分辨率设计呢? (480X600 或 1920X1200)。我认为它不会适合所有屏幕尺寸。

  4. 使设计独立于分辨率的更好方法应该是什么?

  5. 这里的设计师所做的是,选择一个分辨率,以该分辨率设计整个应用程序屏幕,剪切/切片 psd 以获得图标。但是这种设计变得依赖于分辨率,它在具有其他分辨率的其他屏幕上效果不佳。独立于屏幕分辨率的最佳方式应该是什么。

有谁知道为 Android 创建独立于分辨率的 UI 的好的解决方案吗?

谢谢。

最佳答案

根据我的经验,我学到的是,

  1. 电话

    hdpi - 480 x 800
    xhdpi - 768 x 1280
    xxhdpi - 1080 x 1920
    xxxhdpi - 1440 x 2560
    

    表格 大型 mdpi - 600 x 1024 xlarge-mdpi - 800 x 1280

  2. 为平板电脑设计不同的切口。

  3. 为您想要支持的所有分辨率创建它。
  4. 为每个类别的最著名分辨率获取剪切图。
  5. 从每个类别中获取一种分辨率的剪切图和平板电脑的不同剪切图图像。

关于适用于不同屏幕尺寸和不同密度的 Android UI(布局 + 资源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24859028/

有关适用于不同屏幕尺寸和不同密度的 Android UI(布局 + 资源)的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  3. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  4. ruby - nanoc 和多种布局 - 2

    是否可以为特定(或所有)项目使用多个布局?例如,我有几个项目,我想对其应用两种不同的布局。一个是绿色的,一个是蓝色的(但是)。我想将它们编译到我的输出目录中的两个不同文件夹中(例如v1和v2)。我一直在玩弄规则和编译block,但我不知道这是怎么回事。因为,每个项目在编译过程中只编译一次,我不能告诉nanoc第一次用layout1编译,第二次用layout2编译。我试过这样的东西,但它导致输出文件损坏。compile'*'doifitem.binary?#don’tfilterbinaryitemselsefilter:erblayout'layout1'layout'layout2'

  5. ruby - inverse_of 是否适用于 has_many? - 2

    当我使用has_one时,它​​工作得很好,但在has_many上却不行。在这里您可以看到object_id不同,因为它运行了另一个SQL来再次获取它。ruby-1.9.2-p290:001>e=Employee.create(name:'rafael',active:false)ruby-1.9.2-p290:002>b=Badge.create(number:1,employee:e)ruby-1.9.2-p290:003>a=Address.create(street:"123MarketSt",city:"SanDiego",employee:e)ruby-1.9.2-p290

  6. 屏幕录制为什么没声音?检查这2项,轻松解决 - 2

    相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声

  7. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  8. java - 为什么 ruby​​ modulo 与 java/other lang 不同? - 2

    我基本上来自Java背景并且努力理解Ruby中的模运算。(5%3)(-5%3)(5%-3)(-5%-3)Java中的上述操作产生,2个-22个-2但在Ruby中,相同的表达式会产生21个-1-2.Ruby在逻辑上有多擅长这个?模块操作在Ruby中是如何实现的?如果将同一个操作定义为一个web服务,两个服务如何匹配逻辑。 最佳答案 在Java中,模运算的结果与被除数的符号相同。在Ruby中,它与除数的符号相同。remainder()在Ruby中与被除数的符号相同。您可能还想引用modulooperation.

  9. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  10. ruby-on-rails - 在 RSpec 中,如何以任意顺序期望具有不同参数的多条消息? - 2

    RSpec似乎按顺序匹配方法接收的消息。我不确定如何使以下代码工作:allow(a).toreceive(:f)expect(a).toreceive(:f).with(2)a.f(1)a.f(2)a.f(3)我问的原因是a.f的一些调用是由我的代码的上层控制的,所以我不能对这些方法调用添加期望。 最佳答案 RSpecspy是测试这种情况的一种方式。要监视一个方法,用allowstub,除了方法名称之外没有任何约束,调用该方法,然后expect确切的方法调用。例如:allow(a).toreceive(:f)a.f(2)a.f(1)

随机推荐