以最简单/最快捷的方式提供帮助
希望在Android Studio中以hdpi / mdpi之类的格式管理多个图像
答案 0 :(得分:1)
声明可识别分辨率的图像资产 来源-https://flutter.io/docs/development/ui/assets-and-images#declaring-resolution-aware-image-assets
AssetImage了解如何将逻辑请求的资产映射到一个 最接近当前设备像素比例的像素。为了 这种工作映射,资产应根据 特定的目录结构:
content_copy .../image.png .../Mx/image.png .../Nx/image.png ...etc.
…其中M和N是与标称值相对应的数字标识符 包含在其中的图像的分辨率,换句话说,它们 指定要用于图像的设备像素比率。
假定主要资产对应于1.0的分辨率。对于 例如,对于名为的图像,请考虑以下资产布局 my_icon.png:
content_copy .../my_icon.png .../2.0x/my_icon.png .../3.0x/my_icon.png
在设备像素比为1.8的设备上,资产 ... / 2.0x / my_icon.png将被选择。对于2.7的设备像素比, 资产... / 3.0x / my_icon.png将被选择。
如果未在屏幕上指定渲染图像的宽度和高度 图像小部件,标称分辨率用于缩放资产,因此 它将占用与主要资产相同的屏幕空间 会有更高的分辨率。也就是说,如果... / my_icon.png 是72px x 72px,则... / 3.0x / my_icon.png应该是216px x 216px; 但是如果它们都将呈现为72px x 72px(以逻辑像素为单位) 宽度和高度未指定。
pubspec.yaml资产部分中的每个条目都应对应 到一个真实文件,主要资产条目除外。如果 主资产条目与真实文件不对应,则资产 分辨率最低的设备将用作设备的后备设备 设备像素比率低于该分辨率。该条目仍应 但是,将其包含在pubspec.yaml清单中。
答案 1 :(得分:1)
虽然 iOS 将图像和资产视为不同的项目,但 Flutter 应用程序只有资产。在 iOS 上放置在 Images.xcasset
文件夹中的资源被放置在 Flutter 的 assets 文件夹中。与 iOS 一样,资产是任何类型的文件,而不仅仅是图像。例如,您可能在 my-assets
文件夹中有一个 JSON 文件:
my-assets/data.json
在 pubspec.yaml
文件中声明资产:
assets:
- my-assets/data.json
然后使用 AssetBundle 从代码访问它:
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
Future<String> loadAsset() async {
return await rootBundle.loadString('my-assets/data.json');
}
对于图像,Flutter 遵循类似于 iOS 的简单的基于密度的格式。图像资产可能是 1.0x, 2.0x, 3.0x
或任何其他乘数。所谓devicePixelRatio,表示单个逻辑像素中物理像素的比例。
资产位于任意文件夹中——Flutter 没有预定义的文件夹结构。您在 pubspec.yaml
文件中声明资产(带位置),然后 Flutter 将其提取。
例如,要将名为 my_icon.png
的图像添加到您的 Flutter 项目,您可能决定将其存储在任意名为 images
的文件夹中。将基本图像 (1.0x) 放在图像文件夹中,并将其他变体放在以适当倍数命名的子文件夹中:
images/my_icon.png // Base: 1.0x image
images/2.0x/my_icon.png // 2.0x image
images/3.0x/my_icon.png // 3.0x image
接下来,在 pubspec.yaml
文件中声明这些图像:
assets:
- images/my_icon.png
您现在可以使用 AssetImage
访问您的图片:
return AssetImage("images/a_dot_burr.jpeg");
或直接在 Image
小部件中:
@override
Widget build(BuildContext context) {
return Image.asset("images/my_image.png");
}
有关详细信息,请参阅Adding Assets and Images in Flutter。