3

私は何かを理解しようとしています。私が見ている奇妙なことはwrap_content、幅と高さを入れると、挿入される画像の実際の px (ピクセル) サイズよりも画像が大きくなることです。どうしてこんなことに?

私のコードwrap_content

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="false"
    android:src="@drawable/header" />

それは画像の正確なピクセルサイズの私のコードです:

 <ImageView
    android:id="@+id/imageView1"
    android:layout_width="378px"
    android:layout_height="155px"
    android:adjustViewBounds="false"
    android:src="@drawable/header" />

ご覧のとおり、これが正確なピクセル サイズです。

何故ですか?ビューをコンテンツサイズにラップする必要があると思ったwrap_contentのに、なぜ画面上で大きくなるのでしょうか?

4

5 に答える 5

5

画像のピクセルをそのまま使用し、画面の実際のピクセルを使用する必要がある場合は、次の手順を実行します。

1)res/drawable-nodpi固定ピクセルの非スケーリング画像を作成してそこに移動します。

2) 次に、wrap_contentaslayout_widthおよびを使用できますlayout_height。画像ピクセルは、dpi によるアップスケーリングなしでデバイス ピクセルと一致します。

http://developer.android.com/guide/practices/screens_support.htmlから、 nodpi の定義:

すべての密度のリソース。これらは密度に依存しないリソースです。システムは、現在の画面の密度に関係なく、この修飾子でタグ付けされたリソースをスケーリングしません。

于 2012-12-14T08:49:17.400 に答える
4

複数の画面をサポートするための非常に優れた説明は、

http://developer.android.com/guide/practices/screens_support.html

スケーリング後、それぞれのフォルダに画像を配置する必要があります。

たとえば、100 * 100の画像が必要な場合は、

75*75 in drawable-ldpi for Low density devices

100*100 in drawable-mdpi for Medium density devices

150*150 in drawable-hdpi for High density devices

200*200 in drawable-xhdpi for Extra High density devices

于 2012-08-19T16:29:53.677 に答える
1

wrap_contentは、画像を元のサイズのままにすることを意味します。つまり、画像のサイズが 200*200 の場合は 200*200 と表示され、画像のサイズが 400*400 の場合は 400*400 と表示されます。したがって、実際のピクセルでハードコーディングしたときに実際に得られるよりも大きな画像を取得している理由は、画像のサイズが大きいためです。つまり、画像は実際には大きいです。

于 2012-08-19T17:07:43.243 に答える
0

画像をどこに置くかを確認する必要があります。hdpiにある場合は、画面上で大きく見えます。wrap_contentを実行しているときにhdpiにある場合よりも大きく見えます。したがって、正確なサイズにするために、適切なライブラリに配置します。

于 2012-08-19T16:30:08.390 に答える
0

私の経験から、wrap_content可能な限り最大の利用可能なサイズを常に利用すると言えます。そのため、画像を引き伸ばすこともあれば、画像のサイズを縮小することもあります。正確な画像を使用するにはandroid:scaleType="fitXY"

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="false"
    android:scaleType="fitXY"
    android:src="@drawable/header" />

最初の 2 つのコメントの後に更新:

アンドロイドのドキュメントに従って:


幅と高さを正確な測定値で指定できますが、これを頻繁に行うことはおそらくないでしょう。多くの場合、次の定数のいずれかを使用して幅または高さを設定します。

wrap_contentは、コンテンツに必要なサイズに合わせてサイズを変更するようにビューに指示します

fill_parent (API レベル 8 で match_parent に名前が変更されました) は、親ビュー グループが許容する最大サイズになるようにビューに指示します。

一般に、ピクセルなどの絶対単位を使用してレイアウトの幅と高さを指定することはお勧めしません。代わりに、密度に依存しないピクセル単位 (dp)、wrap_content、fill_parent などの相対的な測定値を使用する方が、アプリケーションがさまざまなデバイス画面サイズで適切に表示されるようにするのに役立つため、より適切な方法です。受け入れられる測定タイプは、使用可能なリソース ドキュメントで定義されています。


サイズという用語自体が重要であることがわかりました。これにより、画像のサイズが自動的に変更されます。そのため、私の経験から、画像を引き伸ばしたり、画像のサイズを縮小したりすることがあると言いました

于 2012-08-19T16:07:30.353 に答える