android ImageView如何调整我的图像?

时间:2015-06-22 03:03:42

标签: android

我有一些100 * 100的图标,我找不到更好的分辨率图标,所以我将它们放在drawable文件夹中。图像视图的宽度和高度设置为wrap_content。当图像显示在xhdpi屏幕上时,图像会自动缩放到200 * 200吗?或者我应该自己创建所有尺寸并将它们放在不同的文件夹中?我应该这样做吗?

6 个答案:

答案 0 :(得分:0)

当您指定宽度和高度为wrap_content时,图像将不会缩放,并且仅占用原始大小,即使在xhdpi中也会占用100x100像素。这意味着,您的图像在高端设备上看起来很小。如果您不希望图像显得很小,则必须创建图像的所有尺寸并将其放在各种不同密度的文件夹中。

答案 1 :(得分:0)

我不确定您要做什么,是否尝试让imageview适应您的图片尺寸,或者您是否尝试将图片视图固定大小?

  

当图像显示在xhdpi屏幕上时,图像将缩放到   自动200 * 200?

不,它仍然会显示为100 * 100px(大约50dp,因为xhdpi&#39的乘数是2.0)

  

或者我应该自己创建所有尺寸并将它们放在不同的尺寸中   文件夹?我应该这样做吗?

绝对这样做,有很多工具可以帮助你做到这一点。一个例子是http://romannurik.github.io/AndroidAssetStudio/index.html

答案 2 :(得分:0)

在我的情况下,我会做一个简单的数学。以下是从文档中获取的示例reference

此方法将重新调整您的Image大小,我们的示例参数将是Resource Image

public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
        int reqWidth, int reqHeight) {

    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(res, resId, options);

    // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeResource(res, resId, options);
}

这是重新调整Image

的辅助方法
public static int calculateInSampleSize(
            BitmapFactory.Options options, int reqWidth, int reqHeight) {
    // Raw height and width of image
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

    if (height > reqHeight || width > reqWidth) {

        final int halfHeight = height / 2;
        final int halfWidth = width / 2;

        // Calculate the largest inSampleSize value that is a power of 2 and keeps both
        // height and width larger than the requested height and width.
        while ((halfHeight / inSampleSize) > reqHeight
                && (halfWidth / inSampleSize) > reqWidth) {
            inSampleSize *= 2;
        }
    }

    return inSampleSize;
}

<强>更新

基本上它不会自动扩展到200 * 200,你需要自己做。我提供的上述代码将允许您以编程方式更改图像大小,其他替代方法是使用带有DPI的文件夹,如您所述。

答案 3 :(得分:0)

您可以为imageview添加属性,例如: -

android:scaleType="fitXY"

另外,如果您为imageview使用表格布局,最好采用width =&#34; 0dp&#34;因为表格布局不同......你可能还需要加权=&#34; 1&#34; ..

答案 4 :(得分:0)

  

请通过以下链接阅读:android系统如何调整大小   可绘制不同的屏幕尺寸。

Different image sizes for resolution-specific Drawable folders

  

http://developer.android.com/guide/practices/screens_support.html

答案 5 :(得分:-1)

是Android为您自动缩放