【发布时间】:2012-12-16 01:27:42
【问题描述】:
有一个由流行的 Google 开发人员 Romain Guy 制作的 nice post,它展示了如何在视图上有效地使用圆角 drawable(在 his code 中称为“StreamDrawable”)。
在我的 Galaxy S3 纵向模式下,该示例本身运行良好,但我遇到了一些问题:
-
如果屏幕很小(例如在 qvga 屏幕上),显示的图像会被裁剪。
-
如果我的输入位图比我希望的显示方式太小,则输出图像的边缘会被涂抹。即使在 Galaxy S3 上,当您运行示例代码并且它在横向上时,它看起来也很糟糕:
-
我仍然不确定(因为我使用了缩放图像的解决方法来使用示例代码),但它认为即使是这个解决方案在 listView 中使用时也会有点慢。也许有一个renderscript解决方案?
我使用 setImageDrawable 还是 setBackgroundDrawable 都没有关系。它必须是可绘制对象本身的东西。
我尝试过使用变量和位图着色器,但没有任何效果。可悲的是TileMode 没有任何价值来拉伸图像,只能以某种方式平铺它。
作为一种解决方法,我可以创建一个新的缩放位图,但这只是一种解决方法。当然有更好的方法,它也不会使用比它应该使用的更多的内存。
如何解决这些问题并使用这个出色的代码?
【问题讨论】:
-
你应该对那篇文章发表评论或联系他在这里回答。
-
问题解决了吗?
-
现在,没有。但是您可以使用缩放位图的解决方法。不是最好的东西,但如果你时间不够,你可以使用它。
-
由于在某些时候位图需要以不同于您开始的任何大小(即调整大小)的大小绘制,我认为我不会考虑手动调整它的大小解决方法/破解。这只是低级。要么你做,要么图书馆做。
-
这是不正确的,因为它使用的内存超出了您的需要。当您创建一个新的缩放位图时,您可以同时拥有 2 个位图。相反,如果您已经有了位图,您只需通过仅采样您需要的内容来绘制您需要的内容。既然 drawable 已经做了一些特殊的绘图,为什么不也有这个呢?甚至可以使用 GPU 来完成这项任务。另一件事是,如果你有图像文件,你将无法使用 WRAP_CONTENT 因为你想自己设置大小。
标签: android rounded-corners android-drawable