我是android新手。我试图在我的应用程序中使用矢量drawables。以下代码在棉花糖版本之前工作正常。在较低版本上也可以正常工作。但是当我在Nougat上运行它时,图像会变得模糊。
我的build.gradle(项目)版本是2.0+,并在我的build.gradle(app)中添加了以下代码
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_width="200dp"
android:layout_height="200dp"
app:srcCompat = "@drawable/ic_camera_black_24dp"/>
答案 0 :(得分:1)
我对你的代码玩了一下,我发现的问题似乎是问题似乎是由于使用了相同图标的不同大小。在特定情况下,您的ImageView
带有200x200dp的矢量图标,并使用方法TextView
附加到setCompoundDrawablesRelativeWithIntrinsicBounds
的相同图标,该方法使用定义的width
向量和height
确定其大小。 (在你的情况下为24dp)
此行为背后的主要原因是此Google工程师的回复,您可以找到here。
因此,如果您不希望将来出现问题,则不应使用大小为200x200dp和24x24dp的相同矢量图标,因为系统会创建一些缓存的Bitmap(以优化性能)不会满足您所需的尺寸,这可能会导致某些设备上的图像模糊。
如果您需要完全不同尺寸的完全相同的图标,请使用多个Vector drawable。
PS:关于如何将JPEG或PNG转换为矢量绘图的评论问题,我可以说矢量不应该由照片构建(即使可能它非常难和昂贵),矢量很方便只有当你使用小路径时,这才是它们仅用于图标或徽标的原因