Android:如何找到背景图像的比例

时间:2013-07-19 19:22:39

标签: android bitmap imageview aspect-ratio

好的,所以我有一个我在ImageView中使用的图像来填充屏幕。我通过使用scaletype =“centerCrop”来保持宽高比,如下所示:

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scaleType="centerCrop"
    android:src="@drawable/full_bg" />

在代码中,如何查找原始图像对缩放图像产生的比例或比例因子?我需要知道,所以我可以将这个相同的比例应用于战略性地定位在背景上的按钮。这就是我试图获得的比例:

ImageView view = (ImageView) findViewById(R.id.imageView1);
Log.i("Test", "x scale = " + Float.toString(view.getScaleX()));

这将返回1.0(未缩放),这不是我正在寻找的。我也尝试获取缩放的Bitmap的尺寸而不是ImageView,它也给我原始图像尺寸(540px):

ImageView view = (ImageView) findViewById(R.id.imageView1);
Drawable drawing = view.getDrawable();
Bitmap bitmap = ((BitmapDrawable)drawing).getBitmap();
Log.i("Test", "width = " + Integer.toString(bitmap.getWidth()));

我接近这一切都错了吗?我找不到任何东西可以帮我解决这个问题。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

试试这个:我根据屏幕大小改变图像大小,但这可以通过更改

轻松更改
    int width = metrics.widthPixels;

    int width = bitmap.getWidth();

或任何你想要缩放的东西。注意宽度是你要去的尺寸。

    public static void changeImageSize(ImageView object, Context context){

        DisplayMetrics metrics = new DisplayMetrics();
        ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(metrics);
        int width = metrics.widthPixels;
        int height = metrics.heightPixels;
        BitmapDrawable bmap = (BitmapDrawable) object.getDrawable();
        RelativeLayout.LayoutParams layout = (LayoutParams) object.getLayoutParams();   
        float bmapWidth = bmap.getBitmap().getWidth();
        float bmapHeight = bmap.getBitmap().getHeight();

        int newBmapWidth = (int) (bmapWidth*width/480);
        int newBmapHeight = (int) (bmapHeight*height/800);
        layout.width = newBmapWidth;
        layout.height = newBmapHeight;
        object.setLayoutParams(layout);
    }