如何根据屏幕密度(DPI大小)选择资源?

2024-01-06

我正在尝试根据我的颤振应用程序中的显示密度加载图标。如何根据屏幕密度动态加载(hdpi,xhdpi,xxhdpi ..)。


经过几个小时的搜索,根据官方文档 https://flutter.dev/docs/development/ui/assets-and-images#resolution-aware,颤振取决于设备像素比这是:

Device Pixel Ratio (DPR) is the relationship between physical 
hardware-based pixels and Device-Independent Pixels which are an abstraction.

对于安卓:

Denisty   Pixel Ratio
mdpi        1.0x
hdpi        1.5x
xhdpi       2.0x
xxhdpi      3.0x
xxxhdpi     4.0x

For Ios:

对于颤动:

.../image.png
.../Mx/image.png
.../Nx/image.png
...etc.

其中 M 和 N 是数字标识符,对应于其中包含的图像的标称分辨率。 换句话说,它们指定图像所需的设备像素比。

假定主要资产对应于 1.0 的分辨率。例如,考虑图像的以下资源布局

所以这取决于你有多少分辨率来创建你的assets文件夹的不同子目录,所以我的建议是创建以下子目录文件夹来覆盖所有DPR:

.../image.png  ---> default for android mdpi(1.0x) and ios @1x
.../1.5x/image.png  ---> default for android hdpi(1.5x)
.../2.0x/image.png  ---> default for android xhdpi(2.0x) and ios @2x
.../3.0x/image.png  ---> default for android xxhdpi(3.0x) and ios @3x
.../4.0x/image.png  ---> default for android xxxhdpi(4.0x)

在颤振项目中:

在 pubspec.yaml 中只需添加默认图像路径:

  assets:
    - assets/images/image.png

如果有人需要使用 SVG,只需检查此package https://pub.dev/packages/flutter_svg/example:

SvgPicture.asset(assetName)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据屏幕密度(DPI大小)选择资源? 的相关文章

  • 错误:未为类“BuildContext”定义方法“inheritFromWidgetOfExactType”

    今天编译flutter项目的时候出现了这样的错误 This will generate a JSON format file containing all messages that need to be translated pub ca
  • 是否可以在flutter中开发移动键盘应用程序

    我们想要开发具有一些独特功能 例如在键盘上翻译 的移动键盘应用程序 第三方键盘 我们想知道是否有一种方法可以同时为 IOS 和 Android 开发一次 使用 Flutter 或者其他解决方案 对此有一个长的和一个短的答案 简短的回答基本上
  • 尝试将 Flutter 应用上传到 ItunesConnect 时出现 UIWebView 错误

    我正在尝试将我的应用程序上传到应用程序商店 但是我不断收到错误消息 表明我的应用程序存在此问题 ITMS 90809 已弃用的 API 使用 不再接受使用 UIWebView 的新应用程序 相反 使用 WKWebView 可以提高安全性和可
  • 快捷栏持续时间和高度

    我正在尝试展示一个小吃店 当我点击手势检测器后 这个小吃有两个按钮 问题是小吃栏出现几秒钟然后消失 所以我有两个问题 如何阻止小吃栏消失 直到用户采取行动并单击按钮 此外 小吃栏具有整个屏幕的高度 如何使其在屏幕底部具有特定高度 您可以使用
  • 带有 Firebase 通知的 Flutter Web - subscribeToTopic

    我想在我的 flutter web 应用程序中接收 firebase 通知 我知道 firebase messaging 包不可用于网络 但我已经管理配置我的应用程序以获取令牌 在网络应用程序位于后台时接收并显示消息 并在应用程序位于前台时
  • 如何为发布而不是调试创建密钥库?扑

    我按照使用此网站部署 flutter 的步骤进行操作https flutter io android release https flutter io android release 当我运行 flutter build apk 时出现此错
  • 如何在 Flutter App 中按时间注销?

    如果用户在登录后对应用程序没有反应或不活动超过 5 分钟 我需要从应用程序中注销用户 该应用程序将转到主登录页面 我尝试实施给定的解决方案here https stackoverflow com questions 52602606 how
  • 在没有动画的情况下替换 MaterialApp 中的初始路线?

    我们的应用程序建立在Scaffold到目前为止 我们已经能够使用内部提供的调用来满足我们的大部分路由和导航要求NavigatorState pushNamed pushReplacementNamed ETC 但我们不想要的是 当用户从抽屉
  • 颤动:所选值不显示在下拉列表中

    我正在从 SQLite 数据库填充城市名称并尝试显示为下拉列表 我通过遵循教程使其工作 但遇到了一个小问题 所选值不会显示在下拉列表中 它继续显示默认提示值 但是 我能够分配和检索正确的选定值 这是我的代码 cities dart clas
  • Flutter Scaffold Appbar 不显示后退按钮

    我的课程没有在 AppBar 中显示后退按钮 已经尝试将 this automaticallyImplyLeading true import package carros pages carro carro dart import pac
  • [flutter]为什么我的列对齐总是居中?

    我声明了连续两列来布局文本和图标 即使我设置了图标的列也始终位于中心mainAxisAlignment with MainAxisAlignment start 这是该卡的代码 import package flutter material
  • Android Studio 无法运行 Xcode 模拟器

    我正在尝试使用 Xcode iPhone 模拟器模拟我的 Flutter 应用程序 但收到此错误 在升级 Android Studio 和 Xcode 之前 它运行良好 Launching lib main dart on iPhone X
  • 如何将 Firestore 文档数据转换为类

    在 Firestore 中 有一些文档包含 名称 大陆 等字段及其字符串值 我在主 UI 代码中使用 FutureBuilder 并调用getData 功能 这是我的代码 class DatabaseService final locati
  • 使用 EditableText 进行 Flutter

    我正在尝试弄清楚如何在 Flutter 中使用 TextEditor 我有 卡片编辑器 基本上我希望能够处理相当于一段文本的内容 new EditableText autofocus true maxLines null backgroun
  • 如何在Flutter中获取ScrollView中的子滚动偏移位置

    我制作了一个 CustomScrollView 小部件 其中包含 银应用栏 Sliver持久标头 银格 Sliver持久标头 银格 SliverPercientHeader 将是 SliverGrid 中项目的描述 一旦点击 我用 Gest
  • 条件必须具有 bool 静态类型

    有什么方法可以在这种情况下使用未来的布尔值 或者有更好的方法吗 Widget buildRow String pair final Future
  • 在 Flutter 中从 Play 商店获取产品时应用内购买崩溃

    我在安装和实施后遇到问题应用内购买插件 https pub dev packages in app purchaseFlutter 团队提供 到目前为止我做了什么 在 Play 商店中添加了 2 个可见且活跃的产品 提交了用于 alpha
  • 在 flutter 中强制重建有状态子部件

    假设我有一个主屏幕 有状态小部件 其中有一个变量count作为状态 在此主屏幕中 有一个按钮和另一个有状态小部件 我们称之为MyListWidget MyListWidget初始化它自己的小部件initState取决于的值count多变的
  • 向上滚动时固定项目

    所以我有以下屏幕 我正在寻找一种方法 使得当用户向上滚动时 包含进度条和这 4 个数据字段 ItemHeader 的小部件将向上滚动 但搜索容器 SearchTextField 将被固定 到顶部 当然 当用户向下滚动时 它应该重新出现 我找
  • 是否可以将 Flutter 应用注册为 Android Intent Filter 并处理传入 Intents?

    人们可以使用 Flutter 应用程序中的 Intent 启动另一个 Activity https github com flutter flutter blob master examples widgets launch url dar

随机推荐

  • .NET 框架是否提供解析 HTML 字符串的方法?

    知道我不能使用 HTMLAgilityPack 只能直接使用 NET 假设我有一个包含一些 HTML 的字符串 我需要以这种方式解析和编辑 通过 id 或标签查找层次结构中的特定控件 修改 最好是创建 这些找到的元素的属性 net 中有可用
  • 使用波形符分隔符将 MSAccess 表导出为 Unicode

    我想从MSAccess2003导出几个表的内容 这些表包含 unicode 日语字符 我想将它们存储为波浪号分隔的文本文件 我可以使用 文件 导出 手动执行此操作 并在 高级 对话框中选择波形符作为字段分隔符 选择 Unicode 作为代码
  • node.js 哈希字符串?

    我有一个想要散列的字符串 在 Node js 中生成哈希值的最简单方法是什么 哈希用于版本控制 而不是安全性 如果你只想对一个简单的字符串进行 md5 哈希 我发现这对我有用 var crypto require crypto var na
  • 仅针对特定元素的 JavaScript SelectionChange 事件

    我想实现一个 JavaScriptselectionchange特定事件div元素 所以如果用户从 DOM 中选择文本 我想显示一个荧光笔框 我已经为网络实现了这个onmouseup事件 但我一直在尝试为移动设备实现这一点 对于移动浏览器我
  • Scala 2.8 CanBuildFrom

    继我问的另一个问题之后 Scala 2 8 突破 https stackoverflow com questions 1715681 scala 2 8 breakout 我想更多地了解一下 Scala 方法TraversableLike
  • C 的 INI 文件解析器

    我需要在 C 中读 写 INI 文件 对我来说有点奇怪的是我找不到任何标准的方法来做到这一点 在 C 中处理 INI 文件的常用方法是什么 我更喜欢平台无关的和 Linux INI 文件解析器库 This link http blog br
  • 删除 SwiperJS 中用数组映射的幻灯片而不重置状态

    我已经为这个问题苦苦挣扎了很长一段时间 但一直无法弄清楚 在这里编写沙箱演示代码 https codesandbox io s swiper remove slides w4gy3 file src App js 我有一组渲染的幻灯片Swi
  • 浅克隆中的“嫁接”提交到底是什么?

    在 git 中进行浅克隆时 使用 depth选项 根提交被标记为grafted 谷歌搜索没有找到任何令人满意的文档 好像没有什么关系git 移植 https git wiki kernel org index php GraftPoint
  • jQuery 数据表行顺序

    dTable periods grid dataTable bProcessing false bPaginate false bDestroy true bFilter false aaData myArray 为什么行顺序混乱 我希望行
  • Google Docs API:文档资源 ID 是否会改变?

    构建一个类似网站的环境 其中所有链接都基于文档中的资源 ID 是否明智 文档 ID 过去是否发生过变化 将来是否会发生变化 上周 我们惊讶地发现一个集合中的某些文档 ID 似乎已更改 这可能吗 id 是条目的唯一 永久标识符 因此它永远不应
  • 使用代理时 Nginx 502 Bad Gateway 错误

    我有一个 Angular 构建和一个 Laravel 后端 提供在一台服务器上运行的 API 我已经在 nginx 中配置了它们 前端有一个到后端服务器的代理 后端在 url 上运行 示例是占位符 http api example com
  • 在react-router v4中使用React IndexRoute

    我正在通过在线教程自己学习 React 这是一个关于使用 React Router 的基本示例
  • SplFileObject 错误无法打开流:没有这样的文件或目录

    我正在尝试在 symfony2 中实现存折网络服务并遵循此存折捆绑 https github com eymengunay PassbookBundle我的控制器看起来像这样 if form gt isValid Create an eve
  • 审计跟踪和实施 SOX/HIPAA/等敏感数据的最佳实践

    我认为自己在应用程序设计方面相对熟练 但我从未接触过敏感数据 我一直想知道审计跟踪的最佳实践是什么以及应该如何实施它们 我现在不必这样做 但如果医疗公司要求我为他们做一些工作 能够自信地与他们交谈 那就太好了 假设我们有一个 学校 数据库
  • 在spring配置文件中设置资源

    我正在尝试在弹簧配置中配置推土机 当使用 xml 配置时 它会像
  • MPI 发送数组的数组

    好的 所以我尝试通过 MPI 发送这样的结构 struct BColumns double B int offset 如果我只是像这样对数据进行一些BS分配 bSet offset myRank bSet B double calloc 2
  • django 基于类的视图 - UpdateView - 如何在处理表单时访问请求用户?

    在 Django 的基于类的 UpdateView 中 我排除了用户字段 因为它是系统内部的 我不会要求它 现在将用户传递到表单的正确 Django 方法是什么 我现在的做法是将用户传递到init表单的 然后重写表单的 save 方法 但我
  • 更改 setup.py 中的输出目录

    我正在使用 setuptools 中的设置来创建setup py 我想知道是否可以以编程方式更改输出目录以将其更改为dist 我知道您可以使用以下命令从命令行执行此操作 dist dir标志 但我希望能够做到within the setup
  • 非公开 API 使用:应用程序包含一个或多个损坏的二进制文件

    我对 iOS 应用程序新版本上传的情况感到非常沮丧 这是故事 日期2018 年 1 月 25 日我们已经上传了新版本3 3 27 内部版本号 1 0 该过程已成功完成并可用于试飞 之后我们发现了一些问题并继续2018 年 1 月 26 日我
  • 如何根据屏幕密度(DPI大小)选择资源?

    我正在尝试根据我的颤振应用程序中的显示密度加载图标 如何根据屏幕密度动态加载 hdpi xhdpi xxhdpi 经过几个小时的搜索 根据官方文档 https flutter dev docs development ui assets a