我正在努力处理 Android“多屏幕尺寸”域中的一项非常琐碎的任务。
我要实现的目标
与屏幕宽度相匹配的布局,具有可调整大小的九色背景(仅限水平方向,因为始终有足够的垂直空间)。这是一个虚拟图像:
我的目标是,根据屏幕分辨率,通过使用一组不同的尺寸,以尽可能高的分辨率显示图像,例如。 320x45、480x67、600x87、720x101,没有任何缩小。 我希望有一个非程序化的解决方案。
上述图像尺寸的示例是:
问题
整个 Android 资源分配围绕 dp(密度无关像素)进行,而实际上我想根据实际可用像素显示图像。
如果我将 480x67 图像分配给 res/drawable-mdpi,将 600x87 图像分配给 res/drawable-hdpi,那么图像将在 5.4" display of 480x800 上正确显示,即 mdpi 显示。但是,4"480x800 显示器符合 hdpi 标准,系统将指定 600x87 image, which won't fit the screen。
我按照描述尝试了 smallestWidth 参数 in the online guide ,但这会产生奇怪的结果。例如,3.7"480 x 800 显示器 (hdpi) 使用我的 drawable-sw320dp 图像,尽管也有可用的 drawable-sw480dp 资源。
提前致谢!
最佳答案
我相信,通过结合密度和屏幕尺寸资源限定符,您可以获得接近最佳的行为。
让我们假设这种资源文件夹结构:
drawable-normal-hdpi - normal 大小决定最小宽度
320dp。 hdpi 指示 1.5X dp 到像素倍增器。所以最小px
normal hdpi 桶的宽度是 480px。我们在这里放了一个 480px 宽的
图片。drawable-normal-xhdpi - 同样大小决定 320dp 但这次
与 2X 乘数。所以我们使用 640 像素宽的图像。drawable-xlarge-mdpi - 大小表示至少 720dp。 mdpi 乘数
是 1X,所以我们使用 720px 宽的图像。现在让我们看看一些设备,看看它们是如何落入这些桶中的:
正常 hdpi。实际像素宽度:480 像素。图像适合
完美。正常 xhdpi。我们可以适应 720px 的图像,所以
我们使用的 640 像素图像不是最优的 - 但它非常接近。xlarge mdpi。我们可以容纳 800px,我们的图像
是720px。再次不理想,但足够接近。最坏情况:使用的图像质量可能提高 5-10%。 最佳情况:完美契合。
这种方法的主要缺点是你需要提供大量的资源和文件夹来解释所有大小和密度的排列(如果你需要将它与更多的区域设置、方向等限定符结合起来,那就更糟了在)。但是,就我对 Android 的理解而言,我认为如果不编码,您无法实现比这更好的东西。
关于 smallestWidth 的评论:您的奇怪行为示例实际上是预期的行为。
hdpi 乘数是 1.5 - 所以 480px 宽的 hdpi 显示器正好是 320dp 宽。如文档所述,这使得 drawable-sw320dp 成为正确的选择。我不确定您是否可以将 smallestWidth 限定符与 dpi 限定符结合使用。如果可能的话,您可能会得到比尺寸修饰符更准确的结果。但这意味着图像质量提高 5% 需要更多排列。可能不值得。
关于android - 根据分辨率/密度从资源中分配最佳质量的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23533181/
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
我正在尝试使用Ruby2.0.0和Rails4.0.0提供的API从imgur中提取图像。我已尝试按照Ruby2.0.0文档中列出的各种方式构建http请求,但均无济于事。代码如下:require'net/http'require'net/https'defimgurheaders={"Authorization"=>"Client-ID"+my_client_id}path="/3/gallery/image/#{img_id}.json"uri=URI("https://api.imgur.com"+path)request,data=Net::HTTP::Get.new(path
2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路