在真实设备和模拟器Android中显示不同的图片

时间:2015-04-26 21:42:38

标签: android imageview emulation

在真实设备和模拟器Android中不同的图片显示,我不明白是什么原因

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity"
android:orientation="vertical">

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
        android:src="@drawable/music"
        android:contentDescription="@string/app_name"
        android:layout_weight="0.5"
    android:cropToPadding="false" />

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="0.9">

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1"
        android:id="@+id/button" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2"
        android:id="@+id/button2" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="3"
        android:id="@+id/button3" />
</LinearLayout>

以下是它在仿真器和真实设备上的外观

Emulator Real device

我附上代码布局。我会很高兴得到任何帮助

2 个答案:

答案 0 :(得分:1)

首先,您的图片heightwidth设置为wrap_content, 试试这个,但你需要一个高分辨率的图片,请参阅 Harsh Dattani 关于图片尺寸的答案,你的问题应该解决

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity"
android:orientation="vertical">

<ImageView
    android:layout_width="fill_parent"<!--changed this-->
    android:layout_height="fill_parent"<!--changed this-->
    android:id="@+id/imageView"
    android:src="@drawable/music"
    android:scaleType="centerCrop"<!--added this line-->
    android:contentDescription="@string/app_name"
    android:layout_weight="0.5"
    android:cropToPadding="false"
    android:layout_gravity="center_horizontal" />

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="0.9">

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1"
        android:id="@+id/button" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2"
        android:id="@+id/button2" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="3"
        android:id="@+id/button3" />
</LinearLayout>
</LinearLayout>

答案 1 :(得分:0)

  

保持密度独立性很重要,因为没有它,a   UI元素(例如按钮)在物理上看起来更大   低密度屏幕,在高密度屏幕上更小。这样   密度相关的大小更改可能会导致应用程序出现问题   布局和可用性。

正如Supporting Multiple Screens文档中完美记录的那样,您需要支持多种屏幕尺寸的设备。将有单独的Drawable文件夹定位不同的密度,将您的图像以特定的密度放在相应的文件夹中。

一组六个广义密度:

  1. ldpi(低)~120dpi

  2. mdpi(中)~160dpi

  3. hdpi(high)~240dpi

  4. xhdpi(超高)~320dpi

  5. xxhdpi(extra-extra-high)~480dpi

  6. xxxhdpi(extra-extra-extra-high)~640dpi