很长一段时间以来,我一直在声明 4 种不同密度的资源文件夹:
在布局的 XML 中,我一直在为这些图形使用固定宽度(同时仍然与密度无关),例如 128dp。
但是,随着越来越多的大屏幕手机(尤其是平板电脑)问世,这种方法就不再奏效了。尽管您以这种方式提供与密度无关的资源,但布局在大屏幕上看起来不太好。
这就是为什么我认为我需要添加依赖于屏幕尺寸的 Dimension 资源,以便在 XML 布局中使用,例如:
但这是否意味着我应该放弃支持这 4 个密度容器?或者我是否需要提供 16 个资源文件夹,即每个密度和大小的组合一个?
我在 Android documentation 中找不到任何有用的帮助关于这个话题。
最佳答案
可绘制对象和布局是不同的。要回答您的问题,您是否应该停止支持这些密度。是的,但您仍应支持 xdpi 和 hdpi。 Romain Guy 最近表示,像 Nexus 7(tvpi)这样的现代设备可以适本地扩展 Assets ,因此实际上并不需要 mdpi。并且没有人再使用 ldpi 了。我最后看的是不到 2% 的市场份额。
关于布局。 Nexus 7 (1280x800 tvdpi) 会使用 values-w1024dp 中的内容,但仍会从 drawable-hdpi 文件夹中获取资源。这两者并不相互排斥。像 S3 这样的东西也会从 values-w1024dp 中提取,但使用 drawable-xdpi。如果您的用例需要,您只需要提供替代布局。
那么你需要 16 种不同的东西吗?不,您确实需要 xdpi 和 hdpi(如果不是 mdpi)。您可能想要包含不同尺寸的备选布局。您可以根据需要具体化或通用化。除非您正在为手机和平板电脑(7 英寸和 10 英寸)开发混合应用程序,否则您可能不需要很多 xxxx-sizexxx 文件夹。
In the layout's XML, I have been using fixed widths (while still density-independent) such as 128dp for those graphics.
这可能是您问题的根源。使用 wrap_content 和 match_parent,您的布局应该尽可能流畅。应保留固定尺寸,用于在您提前知道尺寸的两侧和图像周围填充。如果这样做,从 320 x 200 的小尺寸到 GTV 尺寸的任何尺寸的布局都应该看起来不错。
关于android - Android 中特定于密度的布局与特定于尺寸的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14448451/
是否可以为特定(或所有)项目使用多个布局?例如,我有几个项目,我想对其应用两种不同的布局。一个是绿色的,一个是蓝色的(但是)。我想将它们编译到我的输出目录中的两个不同文件夹中(例如v1和v2)。我一直在玩弄规则和编译block,但我不知道这是怎么回事。因为,每个项目在编译过程中只编译一次,我不能告诉nanoc第一次用layout1编译,第二次用layout2编译。我试过这样的东西,但它导致输出文件损坏。compile'*'doifitem.binary?#don’tfilterbinaryitemselsefilter:erblayout'layout1'layout'layout2'
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我想为网站的管理和公共(public)部分设置一对样式指南。每个都需要自己的布局,其中包含静态html和调用erbpartials的混合(因此静态页面不会削减它)。我不需要Controller来为这些页面提供服务,而且我不希望有效的仅开发内容使其余代码困惑。这让我想知道是否有一种方法可以直接呈现布局。免责声明:我明白这不是我应该经常/永远做的事情,而且我知道有很多争论可以解释为什么这是一个坏主意。我对这是否可能感兴趣。有没有办法让我直接从routes.rb渲染布局而不通过Controller? 最佳答案 出于某种奇怪的原因,我想暂时
这个问题在这里已经有了答案:differentlayoutforsign_inactionindevise(8个答案)关闭7年前。如何更改设计Controller中的布局?
我一直在做一些研究,我想我已经知道答案了,但我想知道是否有任何方法可以在不使用javascript或依赖CSS3媒体的情况下获得设备的屏幕尺寸和像素密度查询。本质上,我正在研究如何获取屏幕分辨率和像素密度,以便服务器可以决定在URI请求中为服务器提供哪个图像。到目前为止,我还没有发现任何证据表明这是可能的,但我想嘿,为什么不问问呢? 最佳答案 我不完全同意上面的正确答案。实际上,这个答案在很多情况下都是正确的……但理论上并非如此。通常向Web服务器发出的请求包含一个User-Agent字段,从理论上讲,该字段可用于识别有关设备屏幕分
给定以下ruby数组:["2XL","3XL","4XL","5XL","6XL","L","M","S","XL"]如何对其进行排序以使其符合此顺序?["S","M","L","XL","2XL","3XL","4XL","5XL","6XL"]请注意,每种尺寸并不总是存在。为了历史的缘故,这是我最初的实现。sorted_sizes=[]sorted_sizes 最佳答案 ["S","M","L","XL","2XL","3XL","4XL","5XL","6XL"]&["2XL","3XL","4XL","5XL","6XL
我有request.env['http_host']在本地主机上工作,但在heroku的布局页面中引用时会导致错误。此请求在View中工作并显示正确的基本url,但是当我将代码移动到布局时它会导致错误。注意-我正在使用它来为html电子邮件中的图像构建绝对url。收到错误:ActionView::Template::Error(undefinedmethod`env'fornil:NilClass): 最佳答案 如果你想要没有端口的主机,只需使用:request.host编辑:糟糕,我刚刚注意到您正在使用View中的代码。我不知道它
我对RubyGUI设计做了很多研究,这似乎是Ruby倾向于落后的领域。我探索了MonkeyBars、wxRuby、fxRuby、Shoes等选项,只是想从Ruby社区获得一些意见。虽然它们绝对可用,但每一个的开发似乎都在下降。我在任何(减去fxRuby书)上都找不到大量有用的文档或用户基础。我只是想制作一个简单的GUI,所以我真的不想花费数百小时来学习更复杂的工具的复杂性或尝试使用甚至不再开发的东西(鞋子是应用程序的类型我正在寻找,但它有很多问题并且没有得到积极开发。)在所有选项中,你们会推荐哪个选项是最快的,并且仍然具有某种开发基础?谢谢! 最佳答案
运行有问题或需要源码请点赞关注收藏后评论区留言一、利用ContentResolver读写联系人在实际开发中,普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据,比如查看联系人,短信,通话记录等等,以及对这些通讯数据及逆行增删改查。首先要给AndroidMaifest.xml中添加响应的权限配置 下面是往手机通讯录添加联系人信息的例子效果如下分成三个步骤先查出联系人的基本信息,然后查询联系人号码,再查询联系人邮箱代码 ContactAddActivity类packagecom.example.chapter07;importandroid
1.前言 在10.0的系统rom定制化开发中,在系统中有多个launcher的时候,会在开机进入launcher的时候弹窗launcher列表,让用户选择进入哪个launcher,这样显得特别的不方便所以产品开发中,要求用RoleManager的相关api来设置默认Launcher,但是在设置完默认Launcher以后,在安装一款Launcher的时候,默认Launcher就会失效,在系统设置的默认应用中Launcher选项就为空,点击home键的时候会弹出默认Launcher列表,让选择进入哪个默认Launcher.所以需要从安装Launcher的流程来分析相关的设置。来解决问题设置默认La