我如何获得android中drawable的真实大小?

问题描述 投票:1回答:4

嗨,我有一个ImageView包含一个Drawable,我想知道这个Drawable的实际大小(宽度和高度)。请问我如何获得真实尺寸?

我尝试过,但是没有用:

        final ImageView img = (ImageView) findViewById(R.id.imagePlan);
        img.setImageResource(R.drawable.gratuit);
        System.out.println("w=="+img.getDrawable().getIntrinsicWidth()+" h=="+img.getDrawable().getIntrinsicHeight());

感谢

android size drawable pixel
4个回答
7
投票

首先,您必须将drawable转换为位图,然后才能获得图像的高度和宽度。

尝试下面的代码:-

BitmapDrawable bd=(BitmapDrawable) this.getResources().getDrawable(imageID); 
double imageHeight = bd.getBitmap().getHeight(); 
double imageWidth = bd.getBitmap().getWidth(); 

1
投票

通过将资源解码为位图,您可以获得真实的宽度和高度。

    final ImageView img = (ImageView) findViewById(R.id.gratuit);
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
    int width = bitmap.getWidth();
    int height = bitmap.getHeight();
    img.setImageBitmap(bitmap);

1
投票

您的宽度和高度可能都为零,因为尚未测量可绘制对象,

img.post(new Runnable() {
    @Override
    public void run() {
      System.out.println("w=="+img.getDrawable().getIntrinsicWidth()+" h=="+img.getDrawable().getIntrinsicHeight());

     }
})

1
投票
BitmapFactory.Options options = new BitmapFactory.Options();
options.inTargetDensity = DisplayMetrics.DENSITY_DEFAULT;
Bitmap bmp = BitmapFactory.decodeResource(activity.getResources(), R.drawable.sample_image, options);
int w = bmp.getWidth();
int h = bmp.getHeight();
© www.soinside.com 2019 - 2024. All rights reserved.