ImageView的相同尺寸图像的大小不同

时间:2012-09-07 19:15:37

标签: android android-layout android-imageview

我有一个框架布局,包含一个图像视图,当用户按下下一个按钮时,它应该更新它所显示的图像(想想幻灯片)。我想要在这个图像视图中放置的所有图像具有相同的尺寸。活动开始时imageview显示的初始图像位于res / drawable-hdpi目录中,而其他图像位于assets目录中。问题是我交换到imageview的图像看起来比第一个图像小,尽管所有这些图像都是相同的大小。

关于布局参数,我的框架布局的layout_width和layout_height设置为wrap_content,因此是imageview,我尝试将scaleType参数设置为每个可能的值,我仍然看到相同的结果。因此,除非存储在res / drawable-hdpi和资产中的图像以某种方式缩放,否则不应发生此行为。

那么,当用户循环浏览这些图像时,保留图像视图尺寸的最佳方法是什么?

这是我的框架布局的XML&我的imageview

<FrameLayout
  android:id="@+id/coverLayout"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerInParent="true" >

  <ImageView
    android:id="@+id/coverImageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="false"
    android:scaleType="fitCenter"
    android:src="@drawable/coverImage" />
</FrameLayout>

这是我的代码,将新图像加载到我的imageview

_coverImageView = (ImageView) findViewById(R.id.coverImageView);
...
...
if (loadNewImage) {
        AssetManager assetMgr = getAssets();
        InputStream stream;
        try {
            stream = assetMgr.open("covers/" + _coverImageName);
            Drawable coverDrawable = Drawable.createFromStream(stream, _coverImageName);
            _coverImageView.setImageDrawable(coverDrawable);
        }
        catch (IOException ex) {                        
            System.out.println(ex);
        }
}

1 个答案:

答案 0 :(得分:2)

  

因此,除非存储在res / drawable-hdpi和资产中的图像以某种方式缩放,否则不应发生此行为。

这正是问题所在。 Android根据几个规则来缩放位图,包括屏幕的密度(类)和位图来自哪个资源文件夹。见related question/answer。如果您希望资源和资源具有相同的行为,则可以将初始封面图片放在drawable-nodpi而不是drawable-hdpi

相关问题