如何在颤动中显示.9.png格式的图片?

时间:2018-01-02 06:11:03

标签: android dart flutter

这是我的代码:

new Image.asset('images/launcher/border_highlight.9.png', fit: BoxFit.fill)));

当我更改图像的宽度和高度时,它的显示效果很差,但在原生android中显示正常。

扑了不支持.9图片?还有另一种方法可以达到同样的效果吗?

3 个答案:

答案 0 :(得分:2)

如果您知道九补丁图像中间部分的坐标,则可以在“图像”窗口小部件上设置centerSlice属性。我们目前无法自动从图像中读取这些坐标。如果有关于Android如何做到这一点的任何文档,我们可以考虑做些事情,请不要犹豫提交功能请求。

答案 1 :(得分:1)

Flutter支持类似的概念,但不直接支持9补丁文件,因此它实际上可用于任何图像。

例如,我在这里有一个50x50的图片,button.png

image to be used as a button

在Photoshop中放大到1200%时,我们可以看到我们想要定义为“中心”的区域,以便可以对其进行拉伸。我从每个边缘以15px的距离绘制了一些蓝色辅助线:

enlarged image

要在Flutter中使用它,我们可以使用centerSlice属性并传入一个Rect,该Rect基本上定义了我在Photoshop中绘制的矩形,即宽度和高度都从15px到35px:

        Image.asset(
          "images/button.png",
          height: 100,
          width: 350,
          centerSlice: Rect.fromLTRB(15, 15, 35, 35),
        )

结果如下(不传递centerSlice,而是传递fit: BoxFit.fill):

demo

答案 2 :(得分:0)

目前Flutter支持

JPEG,PNG,GIF,动画GIF,WebP,动画WebP,BMP和WBMP

另见https://github.com/flutter/engine/blob/e7a294770012800fc8a43494fe646659b496ea49/lib/ui/painting.dart#L21