好的,所以我有一个我在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()));
我接近这一切都错了吗?我找不到任何东西可以帮我解决这个问题。任何帮助将不胜感激!
答案 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);
}