以编程方式缩小ImageButton的Image

时间:2014-11-08 10:22:30

标签: android

我有512 x 512分辨率的许多图标,我想设置它们 在ImageButtons上。当然我不想要ImageButtons 512 x 512大我希望它们能够像它的最佳一样大 当前设备的屏幕尺寸。

我创建了这样的按钮:

this.buttonMeasure = new ImageButton(this);
this.buttonMeasure.setImageResource(R.drawable.ic_measure);
this.buttonMeasure.setOnLongClickListener(this);

如何将图像缩小到最佳尺寸 以编程方式显示设备的屏幕大小?

我尝试了这个,但这会导致outOfMemoryError:

public static Bitmap getScaledBitMap(Context context, Drawable sourceDrawable) {
    Bitmap sourceBitmap = ((BitmapDrawable)sourceDrawable).getBitmap();

    DisplayMetrics metrics = new DisplayMetrics();
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

    windowManager.getDefaultDisplay().getMetrics(metrics);

    int width = sourceBitmap.getWidth();
    int height = sourceBitmap.getHeight();

    float scaleWidth = metrics.scaledDensity;
    float scaleHeight = metrics.scaledDensity;

    Matrix matrix = new Matrix();

    matrix.postScale(scaleWidth, scaleHeight);

    return Bitmap.createBitmap(sourceBitmap, 0, 0, width, height, matrix, true);
}

1 个答案:

答案 0 :(得分:0)

我根本不认为你会需要这个。您可以使用ImageButtonandroid:layout_width等属性为文件夹中的不同布局指定android:layout_height的大小。同样,您需要将具有相同名称的各种分辨率的图像副本放在相应的文件夹中。在运行时由android本身自动拾取适当的图像。 enter image description here