Android:资源文件夹中的图像小于应有的值

时间:2014-10-19 22:23:03

标签: android image assets

当我尝试将图像设置为从资源文件夹中浏览的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" />

4 个答案:

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

Android: Accessing images from assets/drawable folders

答案 1 :(得分:0)

如果您将图像放在drawables文件夹中,它们将通过某些功能进行缩放,它们会从资源中加载它们。对于您自己加载的资源文件夹中的图像,不会发生这种情况。

答案 2 :(得分:0)

<强> Have a look at android docs


  1. 您应始终使用drawable文件夹
  2. 中的图片
  3. android中有不同的drawable个文件夹 (drawable-hdpidrawable-mdpidrawable-ldpi
  4. Android将决定应该根据哪个文件夹图像绘制 电话requirementsresolution
  5. 使用9-patch图片进行自动缩放
  6. 从资源加载时,“源”密度未知,所以这个 不执行自动缩放。因此,存在差异。

答案 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);