Scale Drawable - setImageLevel 是不是规定了比例?

Posted

技术标签:

【中文标题】Scale Drawable - setImageLevel 是不是规定了比例?【英文标题】:Scale Drawable - does setImageLevel dictate the scale?Scale Drawable - setImageLevel 是否规定了比例? 【发布时间】:2012-04-10 01:41:54 【问题描述】:

我创建了一个小型测试应用程序来尝试缩放绘图。

我在 xml 中定义我的可绘制对象并将其保存为 scale_up.xml。我有一个带有ImageViewmain.xml 布局文件。我在 ImageView 中使用 android:src="@drawable/scale_up" 来使用我在 xml 中创建的可绘制对象。在我的活动中,我使用myImageView.setImageLevel(some level here) 来设置main.xml 中定义的ImageView 的级别。一切顺利,ImageView 显示在 scale_up 中定义的可绘制对象。

我的困惑如下:

如果级别设置为 10000,更改 scale_up.xml 中的 scaleHeightscaleWidth % 不会产生明显的差异 更改setImageLevel 中的级别(介于 0 和 10000 之间)会更改图像的大小 - 实际上只能在 5000 左右感知。scaleHeight 和 scaleWidth 的 % 值越高,图像越小(取决于setImageLevel())

我想我的问题是:

    是否正确使用setImageLevel(),在活动中传递一个介于 0 和 10000 之间的级别来控制 xml 文件中定义的可绘制对象的大小? scaleHeight、scaleWidth 和setImageLevel() 之间的关系是什么 - 正如我现在所看到的,我不妨将 scaleHeight 和 scaleWidth 设置为 100%,然后使用 setImageLevel(5000) 来获得 50% 的缩放图像 - 即增加或减少 setImageLevel(0 to 10000) 将改变比例 - 使 scaleHeightscaleWidth % 变得毫无意义。

感谢对此的任何澄清,也许还有一个如何正确使用缩放可绘制对象(在 xml 中定义)的示例。

【问题讨论】:

【参考方案1】:

    没有。 setImageLevel 更像是图像的枚举类型。它用于显示不同的图像,例如电池充电水平或信号条显示。您将一张图片置于 1 级以下表示电池电量不足,将另一张图片置于 2 级以下表示电池电量不足,依此类推。然后你使用 setImageLevel 在它们之间切换。至少这是我的理解。也就是说,我不知道为什么它会改变比例。

    我不知道为什么会这样。这可能是 Eclipse 中 ADT 中的 xml 编辑器/查看器的问题,我注意到很多东西在我的手机上显示得很好,但在我的编辑器上却非常糟糕。出于这个原因,我通常只在 xml 中工作。

您到底想完成什么?这样可能更容易回答您的问题。

【讨论】:

以上是关于Scale Drawable - setImageLevel 是不是规定了比例?的主要内容,如果未能解决你的问题,请参考以下文章

Android样式的开发:drawable汇总篇

setImage:forState 不适用于 UIButton 的子类

按钮上的标题用 setImage 隐藏,但用 setBackgroundImage 可见

setImage 总是拾取 1x 图像

button setimage 设置

调整大小时 SVG 图像质量下降