0

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

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

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

这是我的框架布局和我的图像视图的 XML

<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>

这是我将新图像加载到我的图像视图中的代码

_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);
        }
}
4

1 回答 1

2

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

这正是问题所在。Android 根据几个规则缩放位图,包括屏幕的密度(类别)以及位图来自哪个资源文件夹。请参阅此相关问题/答案。如果您希望资产和资源具有相同的行为,则可以将初始封面图像放入drawable-nodpi而不是drawable-hdpi.

于 2012-09-07T19:22:48.527 回答