问题
我的XML中有这样一个ImageView:
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/ic_person_add"
android:alpha="0.87" />ic_person_add是普通的材料设计矢量。
在我的Nexus 5 (Android 6)上,图标缩放得很漂亮,而且非常锋利:

然而,在Note 2(Android4.4)上,图标实际上是像素化和丑陋的:

如何使每个设备上的ImageView (以向量作为src)锐利?最好有唯一的xml解决方案。
我已经发现:
android:adjustViewBounds="true" ->没有任何作用BitmapFactory.inscaled=false ->不仅适用于xml,而且我也不知道如何将其放在自定义ImageView类中。发布于 2016-01-12 09:31:55
真正的问题不是Note 2的DPI,而是Android版本。
发布了这样的声明:
一旦您在res/drawable中有了vectorDrawable映像,Gradle插件将在构建期间自动生成API级别20及以下的栅格PNG映像。
因此,我的安卓6设备确实有一个矢量图形作为ImageView的来源,所以它成功地把它放大得完美无缺。对于Note 2(运行在比Android5OS更旧的操作系统上),Android自动将我的Drawables文件夹中的Vectorgraphic转换为PNG。
可以更改VectorXML中转换的PNG的大小。
android:height android:width要达到dp中的大小,您的矢量图需要显示在预API 20设备上。因此,在我的例子中(最大为100 to ),我不得不将值更改为:
<vector android:height="100dp" android:viewportHeight="24.0"
android:viewportWidth="24.0" android:width="100dp">发布于 2016-01-11 23:26:47
Nexus 5密度桶是xxhdpi,而Note 2(基于这)是xhdpi。这表明您的xxhdpi位图的大小是正确的(或者至少是在所需的大小上),而xhdpi则不是。
如果您使用的是最近版本的Android提供的自动转换,您可能需要尝试手动对矢量图像进行栅格化,以确定这是否解决了问题。
如果您使用光栅图形,您可能需要添加一些视觉元素到每个密度变量,以获得一个想法,其中一个实际使用。
https://stackoverflow.com/questions/34732803
复制相似问题