在 ANDROID NOUGAT 上显示模糊图像的矢量绘图
Posted
技术标签:
【中文标题】在 ANDROID NOUGAT 上显示模糊图像的矢量绘图【英文标题】:Vector Drawables showing Blurr image on ANDROID NOUGAT 【发布时间】:2017-11-23 22:00:51 【问题描述】:我是安卓新手。我正在尝试在我的应用程序中使用矢量可绘制对象。以下代码在 Marshmallow 版本之前工作正常。在较低版本上也可以正常工作。但是一旦我在 Nougat 上运行它,图像就会变得模糊。
我的 build.gradle(项目)版本是 2.0+,并在我的 build.gradle(应用程序)中添加了以下代码
android
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig
minSdkVersion 15
targetSdkVersion 25
vectorDrawables.useSupportLibrary = true
支持的版本是:
compile 'com.android.support:appcompat-v7:25.3.1'
我还在 onCreate 方法中添加了以下代码
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
在我的 XML 中:
<ImageView
android:layout_
android:layout_
app:srcCompat = "@drawable/ic_camera_black_24dp"/>
【问题讨论】:
您是否尝试将android:scaleType="fitXY"
添加到您的 ImageView XML 中?
@MatPag 感谢您的快速回复。我也尝试过,但都是徒劳的。图像仍然模糊。
你能组装一个小示例项目并提供github链接吗?我对此感到好奇,因为矢量绘图过去有很多问题,应该用最新的支持库来解决
@MatPag 我已将其上传到 GitHub。链接是:github.com/ChoudharyAnjali/Vector-drawable
我回家看看这个
【参考方案1】:
我对您的代码进行了一些尝试,发现问题似乎是由于使用了同一图标的不同尺寸造成的。在您的特定情况下,您使用setCompoundDrawablesRelativeWithIntrinsicBounds
方法将ImageView
的矢量图标设置为200x200dp,并将相同的图标附加到TextView
,该方法使用定义的矢量width
和height
来确定其大小。 (在您的情况下为 24dp)
此行为背后的主要原因是该 Google 工程师的回复,您可以找到 here。
所以,如果您不希望以后出现问题,您不应该使用大小为 200x200dp 和 24x24dp 的相同矢量图标,因为系统会创建一些缓存的位图(以优化性能)您需要的大小,这可能会导致某些设备上的图像模糊。
如果您需要大小完全不同的相同图标,请使用多个 Vector drawable。
PS:关于您关于如何将 JPEG 或 PNG 转换为矢量可绘制对象的评论问题,我可以说矢量不应该由照片构建(即使可能非常困难和昂贵),矢量只有在以下情况下才方便您使用小路径,这就是它们仅用于图标或徽标的原因
【讨论】:
你的意思是写“多个PNG”吗?我会说多个 VectorDrawables 作为您链接到建议的答案。 是的对不起,我的意思是多个矢量资源,我会尽快纠正它 @MatPag 非常感谢。我真的很困惑为什么图像模糊。这真是一个很好的解释。 :) 。还有关于转换问题 如果我有 PNG 格式的小图标,我想将这些小图标转换为矢量绘图。如何实现? 如果您有简单的 PNG 图标,您可以使用在线工具并尝试结果,例如 vectorizer.io(在 google 上搜索更多选项)。最好的方法应该是使用像 Adobe Illustrator 这样的程序,并使用 PNG 作为背景,在矢量中重新创建路径(但您需要知道如何使用这些程序)。顺便说一句,如果它对您有所帮助,请接受答案(箭头下的检查)。祝你好运:)以上是关于在 ANDROID NOUGAT 上显示模糊图像的矢量绘图的主要内容,如果未能解决你的问题,请参考以下文章
Android Nougat 设备在 Eclipse 中显示未知目标
Videoview 不在 nougat 24 中显示,但在 android Q 29 中显示和工作
Android Studios:Android 设备管理器在文件资源管理器中未显示 Nougat 7.0 的文件