0

好的,所以我有一个图像,我在 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(未缩放),这不是我想要的。我还尝试获取缩放位图的尺寸而不是 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()));

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

4

1 回答 1

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);
    }
于 2013-07-19T19:54:32.080 回答