我有一个框架布局,包含一个图像视图,当用户按下下一个按钮时,它应该更新它所显示的图像(想想幻灯片)。我想要在这个图像视图中放置的所有图像具有相同的尺寸。活动开始时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);
}
}
答案 0 :(得分:2)
因此,除非存储在res / drawable-hdpi和资产中的图像以某种方式缩放,否则不应发生此行为。
这正是问题所在。 Android根据几个规则来缩放位图,包括屏幕的密度(类)和位图来自哪个资源文件夹。见related question/answer。如果您希望资源和资源具有相同的行为,则可以将初始封面图片放在drawable-nodpi
而不是drawable-hdpi
。