0

这是我的问题:我将分辨率为 200x200 的图像放在高度和宽度均为 200dip 的图像视图中,但显示的图像似乎大于 200x200,这就是我发现问题的方法。

我使用下面的代码来获取屏幕的宽度和高度。发现我的屏幕是 540x800,但图像宽度大于我屏幕的一半。

    WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);

    width = wm.getDefaultDisplay().getWidth();
    height = wm.getDefaultDisplay().getHeight();

有没有人可以告诉我为什么。下面是xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation = "vertical"
android:background = "@drawable/mainbg2"
 >

<LinearLayout
    android:orientation="horizontal"
    android:id="@+id/layout_menu_normal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true">
    <ImageView 
    android:id="@+id/img_menu_normal"
    android:layout_width="200dip"
    android:layout_height="200dip"
    android:src="@drawable/menu_normal"/>
</LinearLayout>
</RelativeLayout>
4

2 回答 2

1

检查此文档

与密度无关的像素 (dp) 定义 UI 布局时应使用的虚拟像素单位,以与密度无关的方式表示布局尺寸或位置。

与密度无关的像素相当于 160 dpi 屏幕上的一个物理像素,这是系统为“中等”密度屏幕假定的基线密度。在运行时,系统会根据使用中屏幕的实际密度,根据需要透明地处理 dp 单位的任何缩放。dp 单位到屏幕像素的转换很简单:px = dp * (dpi / 160)。例如,在 240 dpi 的屏幕上,1 dp 等于 1.5 个物理像素。在定义应用程序的 UI 时,您应该始终使用 dp 单位,以确保您的 UI 在不同密度的屏幕上正确显示。

所以我假设你的设备不是使用更大比例的 mdpi。如果您想在您的设备上制作精确的像素大小,您可以使用200px. 但首先检查上面的文档链接。

于 2013-09-21T12:22:26.237 回答
0

它在视图中显示 200X200 dp 大小的图像,您可以使用文件中的此 xmp 更改进行检查

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white"
android:orientation="vertical" >

<LinearLayout
    android:id="@+id/layout_menu_normal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/img_menu_normal"
        android:layout_width="200dip"
        android:layout_height="200dip"
        android:background="@android:color/black"
        android:src="@drawable/ic_launcher" />
</LinearLayout>

我希望你能明白那里发生了什么。我将图像设置在相对视图的中心,并将图像视图的背景颜色更改为黑色,将主视图背景颜色更改为白色。它的工作代码。

于 2013-09-21T10:17:54.757 回答