我有一个以ImageView为中心的平面图。保留图像的纵横比,使图像两侧有一些空间(以红色表示)。
如何确定此红色空间的宽度(以像素为单位)或dp?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MyActivity"
android:background="@color/red"
android:orientation="vertical">
<ImageView
android:id="@+id/floor_plan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/floor_plan2"
android:adjustViewBounds="true"
android:layout_toStartOf="@+id/locateMe"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
/>
我注意到dimens.xml文件中的边距已设置为0dp。
答案 0 :(得分:0)
那是唯一的数学:
int originalImgWidth = bitmap.getWidth();
int originalImgHeight = bitmap.getHeight();
float scale = screenHeight * 1f / originalImgHeight;
// since your img will fill the screen vertically
float marginSize = (screenWidth - (originalImgWidth * scale)) /2;
请注意,如果图像横向大于水平^^
,则尺寸可能为负了解如何获取位图here
了解如何获取屏幕尺寸here