2
  1. New -> 問題をテストするための Android プロジェクト
  2. Test.javaのコード:

    パッケージ test.density.yeah;

    import android.app.Activity;
    import android.os.Bundle;
    
    public class TestActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    }
    
  3. main.xmlのコード:

    <ImageButton
    android:background="@null"
    android:src="@drawable/icon"
    android:layout_width="200dp"
    android:layout_height="200dp">
    </ImageButton>
    
  4. 設定でエミュレーターを起動しました:

解像度 - 480x800

平均 LCD 密度 - 190

結果:

http://cs5961.userapi.com/u68152416/-3/y_ef134df2.jpg

その後、次の設定でエミュレータを起動しました。

解像度 - 480x800

平均 LCD 密度 - 240

結果:

http://cs5961.userapi.com/u68152416/-3/y_8b99507b.jpg

最初のテストのエミュレータ設定は、私の HTC HD2 の特性と一致し、2 番目のテストは HTC Sensation XL と同じです。それらでこのテストアプリを実行すると、同じ問題になります。HD2 (480x800, 190dpi) - 小さい画像, Sensation (480x800, 240dpi) - 巨大な画像.

では、なぜ「密度に依存しないピクセル」が機能しないのでしょうか。

4

2 に答える 2

4

問題なく動作しますが、知っておく必要があるひねりがあります。

ビューで src 属性を使用しています。これを行うと、ビューはビットマップ サイズに応じてサイズ変更され、通常はさまざまな密度、mdpi、hdpi、xhdpi などに対して異なるバージョンになります。layout_height と layout_width は無視されます。

ビューでビットマップ サイズを無視し、layout_width と layout_height の値を使用してサイズを強制する場合は、src ではなく background 属性を使用する必要があります。

<ImageButton
    android:background="@drawable/icon"
    android:layout_width="200dp"
    android:layout_height="200dp">
</ImageButton>
于 2012-04-09T15:33:01.940 に答える
1

画像スケーリングによって結果が間違っている可能性があります。画像スケーリングの詳細については、こちらをご覧ください。

http://thebigbyte.blogspot.com/2009/12/android-how-to-scale-image-in-imageview.html

ImageButton xmlを次のように変更することで、結果をテストできます。

<ImageButton
android:background="#ffffff"
android:layout_width="200dp"
android:layout_height="200dp">
</ImageButton>
于 2012-04-09T15:26:02.867 に答える