DensityPixel似乎不适用于ImageButton

时间:2014-03-02 11:08:03

标签: android pixel dpi image-scaling

对于一款游戏,我有六个在mdpi上看起来很棒的按钮。左侧的4个按钮是100x100px:

Scaling ok

如果我切换到hdpi,它看起来像这样:

Scaling not ok

xml看起来像这样(我省略了除了一个按钮以外的所有内容以保持简单):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gameContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1.0"
        android:orientation="vertical" >

        <com.mydomain.mygame.game.GameSurface
            android:id="@+id/gameSurface"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/background_game" >
        </com.mydomain.mygame.game.GameSurface>

        <RelativeLayout
            android:id="@+id/controlButtonContainer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal" >

            <ImageButton
                android:id="@+id/button_left"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_alignParentBottom="true"
                android:layout_marginBottom="100dp"
                android:contentDescription="@string/button_left"
                android:background="@drawable/control_button" />

        </RelativeLayout>
    </FrameLayout>

    <LinearLayout
        android:id="@+id/emptyBar"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:baselineAligned="false"
        android:gravity="center"
        android:orientation="horizontal" >
    </LinearLayout>

</LinearLayout>

这些尝试不起作用: 我尝试使用 100dp 而不是 wrap_content 。我尝试了 src 而不是背景以及尝试了不同的 scaleType 属性。

可能我可以在代码中计算缩放因子,但我无法想象这是正确的方法。为什么它没有自动缩放,因为 dp 然后是什么?那么如何在xml中配置正确的比例?

1 个答案:

答案 0 :(得分:1)

请避免使用100dp这样的特定尺寸。尝试使用WRAP_CONTENT或MATCH_PARENT。对于不同的屏幕尺寸,请使用drawable-hdpi和drawable-mdpi等drawable文件夹。并在其所有特定文件夹中放置android:background =“@ drawable / control_button”的相应图像。

请参阅以下多个屏幕尺寸的链接: http://developer.android.com/guide/practices/screens_support.html http://developer.android.com/training/multiscreen/screensizes.html