【问题标题】:Does setImageResource pick the image from correct drawable foldersetImageResource 是否从正确的可绘制文件夹中选择图像
【发布时间】:2017-06-15 14:27:51
【问题描述】:

我有一个这样的简单代码:

LinearLayout mainLayout = (LinearLayout) findViewById(R.layout.main);
ImageView item = new ImageView(this);
item.setImageResource(R.drawable.logo);
mainLayout.addView(item);

ImageView 中的图像看起来有点模糊。似乎是从 default drawable folder 而不是 drawable-hdpi 中挑选图像。

因为当我在xml中设置相同的图像时,它看起来很完美。

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/logo" />

如何让 setImageResource 从正确的文件夹中选择图片?

谢谢

【问题讨论】:

  • 这可能是因为您必须在图形视图中查看支持hdpi 分辨率的布局,并且以编程方式运行您的应用程序可能会以较低的分辨率运行您的应用程序,这可能是从drawable 而不是@ 987654325@。这可能是原因。
  • 以编程方式,您可能正在以较低的分辨率运行您的应用程序 - 那么它一定是从 drawable-ldpi 中挑选了图像吧?因为我已经把图片放在了所有的文件夹里了。
  • 是的,只是这样。它将根据设备的分辨率自动从相关文件夹中获取图像。

标签: android imageview


【解决方案1】:

在清单中添加此代码:

 <supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true" />

【讨论】:

  • 这些设置已经存在于清单中。支持所有屏幕尺寸和密度。
【解决方案2】:

我不确定但是,这可能是因为您必须在图形视图中查看支持hdpi 分辨率的布局,并且以编程方式运行您的应用程序可能会以较低分辨率运行您的应用程序,该分辨率可能从drawable 或其他文件夹不是 drawable-hdpi。这可能是原因。

【讨论】:

    【解决方案3】:

    setImageResource 确实从正确的可绘制文件夹中选择图像,只要我在 SDK-17 上尝试过。

    我只是分别在 res/drawable、res/drawable-hdpi、res/drawable-xhdpi 文件夹中创建了三张不同同名的图片,然后运行以下几部分代码:

        setContentView(R.layout.activity_imageview);
        LinearLayout mainView = (LinearLayout) findViewById(R.id.main_view);
        ImageView iv = (ImageView) findViewById(R.id.image_view);
        iv.setImageResource(R.drawable.dataark);
    
        ImageView iv2 = new ImageView(this);
        iv2.setImageResource(R.drawable.dataark);
        mainView.addView(iv2);
    

    在 xml(iv) 中添加的 ImageView 和以编程方式添加的 ImageView (iv2) 都从 res/drawable-xhdpi 加载图像,即三星 Galaxy Note 的正确文件夹。

    所以很确定setImageResource 确实从正确的可绘制文件夹中选择图像。

    仅供参考,布局xml很简单,如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/main_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <ImageView
            android:id="@+id/image_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
        />
    
    </LinearLayout>
    

    【讨论】:

      猜你喜欢
      • 2013-08-31
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      相关资源
      最近更新 更多