当我尝试将图像设置为从资源文件夹中浏览的ImageView
时,我遇到了问题。当我将相同的图像放在drawable文件夹中并使用imageView.setImageResource(R.id.image);
时,它比较大并且比上一个方法浏览的图像更适合屏幕。有没有办法调整图像的大小,使其与平时完全一样适合屏幕。
这是布局文件和java中的代码。
AssetManager manager = getActivity().getAssets();
InputStream input = null;
try {
input = manager.open("images/" + mQuestion.getQImage() + ".png");
} catch (IOException e) {
e.printStackTrace();
}
Bitmap image = BitmapFactory.decodeStream(input);
ImageView qImageView = (ImageView) questionView.findViewById(R.id.ImageView_qImage);
qImageView.setImageBitmap(image);
<ImageView
android:id="@+id/ImageView_qImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/questionTopBottomMargin"
android:background="@color/radioButtonStrokeColor"
android:contentDescription="@string/hello_world"
android:padding="1px"
android:scaleType="fitXY" />
答案 0 :(得分:4)
当您将图像放置在可绘制文件夹中时,图像将按照屏幕密度进行分类,而如果您将图像放在assest文件夹中,则android需要计算密度。
如果你想使用assest文件夹中的图像,那么这段代码可以帮助你。
Options opts = new BitmapFactory.Options();
opts.inDensity = DisplayMetrics.DENSITY_HIGH;
drawable = Drawable.createFromResourceStream(context.getResources(), null, is, srcName, opts);
见这里
Image loaded from assets folder comes in different size than res/drawable
答案 1 :(得分:0)
如果您将图像放在drawables文件夹中,它们将通过某些功能进行缩放,它们会从资源中加载它们。对于您自己加载的资源文件夹中的图像,不会发生这种情况。
答案 2 :(得分:0)
drawable
文件夹drawable
个文件夹
(drawable-hdpi
,drawable-mdpi
,drawable-ldpi
)requirements
和resolution
答案 3 :(得分:0)
您只需在xml布局中定义imageView的宽度和高度,然后您应该尝试使用此代码,它对我来说非常适合
public Bitmap getImageBitmap(String imgName){
AssetManager mgr = getAssets();
InputStream inputStream = null;
try {
inputStream = mgr.open(imgName + ".png");
return BitmapFactory.decodeStream(inputStream);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
ImageView imageView = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = getImageBitmap(imageName);
imageView.setImageBitmap(bitmap);