【问题标题】:Android - Adding Images To ProjectAndroid - 将图像添加到项目
【发布时间】:2013-02-10 02:55:56
【问题描述】:

我是Android 的新手,我正在使用Eclipse ADT 创建一个简单的应用程序。此应用程序有一个按钮,可根据用户点击更改其背景图像。

我注意到我的项目中有 4 个图片文件夹:drawable-hdpi, drawable-ldpi, drawable-mdpi, and drawable-xhdpi

而且我还注意到当前在其中的图像(启动器图标)大小不同。

这是否意味着我必须使用一些图像编辑软件为我的每张图像的每种分辨率创建一张图像?或者(希望)有没有办法导入图像并自动为我完成?

谢谢!

【问题讨论】:

    标签: android image import adt image-size


    【解决方案1】:

    图像和其他可视文件存储在一个或多个可绘制目录中。如果仅在一个目录中,Android 将根据需要缩放图像。如果使用多个目录,Android 将选择适当大小的图像。

    • drawable-ldpi - 低密度图像
    • drawable-mdpi - 中等密度图像
    • drawable-hdpi - 高密度图像
    • drawable-xhdpi - 超高密度图像(即类似视网膜的显示)
    • drawable-xxhdpi - 超高密度图像(Nexus 10、Samsung Galaxy S4、HTC One 和 Sony Xperia Z 等设备)
    • drawable-xxxhdpi - 三倍超高密度图像 (​​Nexus 6 and 9)

    (旁注:XML 文件也可以作为可绘制对象编写和存储。这些类型的文件可以根据视图的状态或其他视觉设置(如渐变、边框等)控制何时使用多个图像。 )

    那么,应该做什么呢?

    为了获得最佳效果(来自Android developer docs):

    要生成这些图像,您应该从矢量格式的原始资源开始,并使用以下尺寸比例为每个密度生成图像:

    • xxxhdpi: 4.0
    • xxhdpi: 3.0
    • xhdpi: 2.0
    • hdpi:1.5
    • tvdpi:1.33(仅限电视)
    • mdpi:1.0(基线)
    • ldpi:0.75

    这意味着,如果您为 xhdpi 设备生成 200x200 的图像,您应该为 hdpi 生成 150x150、tvdpi 为 133x133、mdpi 为 100x100,最后为 ldpi 设备生成 75x75 的相同资源。

    如果您只想使用一张图片并让 Android 为您扩展:

    根据Dashboard on the Android Developer site,现在超过 75% 的 Android 设备具有 hdpi 或更高的分辨率。因此,例如,如果您在 hdpi 上创建一个图像,它在大约三分之一的设备上看起来很完美,在某些设备上可以放大,在大约 25% 的设备上可以缩小。一般来说,我认为缩小规模比扩大规模要好。

    【讨论】:

    • 谢谢!我最近研究了这个问题。
    • 我有 20 张图片。它们每个都是 100x100 像素。我想这意味着我必须再创建 60 张图像,其他 3 种密度各一张。你能推荐一个程序来简化这个任务吗?我使用paint.net,但它不做批处理。
    • 我不知道什么是最好的,但这里有一些选择。我使用了 ImageMagick 的“mogrify”命令行工具:imagemagick.org/script/mogrify.php。这是一个超级用户论坛帖子,也可能有帮助:superuser.com/questions/315885/fast-batch-image-resizer
    • 好回答 Ben,你应该把 tvdpi 添加到你的列表中
    【解决方案2】:

    这是否意味着我必须使用一些图像编辑软件为我的每张图像的每种分辨率创建一张图像?或者(希望)有没有办法导入图像并自动为我完成?

    如果您已经有图像的高分辨率源(或矢量图形格式),您可以使用Android Asset Studio 从您自己的源图像为每个密度(减去 xxhdpi)生成图标/图像)。您还可以从默认的 Android 剪贴画创建图标/图像,这些剪贴画可以为各种版本的 Android 设置主题。这将为您省去一些使用图像编辑工具调整大小和保存的麻烦。

    【讨论】:

    • 该工具将在其创建的图像中附加“.9”(即 image.9.png)。调用drawable时,只需使用“image”(跳过“.9”和扩展名)。花了一些时间试图弄清楚这一点。
    猜你喜欢
    • 2013-04-17
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多