2011-08-16 8 views
1

基本的にレイアウトにHDの背景が必要ですが、元のイメージではなく、非常に圧縮されて表示されます。Android搭載端末/エミュレータで画像を圧縮したのはなぜですか?

例:

元画像:

enter image description here

Androidのエミュレータバージョン:

enter image description here

私はそれだけでエミュレータだったことかもしれないと思ったが、それは悪いに見えます電話自体に私はこれらが高品質の三星ギャラクシーSの携帯電話であることを知っています(これらはあとでアバターと一緒に付属しています)。

誰も圧縮せずにイメージを読み込む方法を知っていますか?ソースファイルは圧縮されていないpngです。ここ

が、それは価値がある何のためのコードです:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:weightSum="1"  android:background="@drawable/background" android:id="@+id/blank"> 

</LinearLayout> 
+0

圧縮率は低いですか? Ex。 "良い"画像は少なくともアルファチャンネルを持っていますが、 "悪い"の画像はありません。 –

+0

私はそれがpngかどうかを調べるために他のファイルタイプを試しました。 Jpegとビットマップは私に同じ結果を与えます。それはより小さな色空間(8ビットではなく6ビット)ですが、次に色空間をフルカラーに変更するにはどうすればよいですか? – Jason

+0

これはARGB8888からRGB565に変換されていますが、これをやめる方法を知っている人はいますか?私はdrawableの代わりに生で入れて見たサイトを見つけた...運がいいえ。私もアルファチャンネルを追加しようとしましたが、それでも何もしませんでした – Jason

答えて

1

説明:問題は、画像が自動的にAGB888からRGB565色空間に変換されることです。これを防ぐには、画像にアルファチャンネルがあり、 "drawable"ディレクトリではなく "raw"ディレクトリにあることを確認してください。

0

AAPTは、APKを構築する際に、画像を圧縮することができるが、その圧縮はロスレスことになっています。問題はおそらく他の場所にあるでしょう。ここには2つの可能性がある。

イメージリソースが、デバイス(またはエミュレータ)上のres/drawableから、mdpiでない場合は、hereのようにスケーリングされます。 1つの解決策は、リソースをres/drawable-nodpiフォルダに入れることです。もう1つは、密度に特有の複数の画像を提供することです。

背景画像がビューのサイズと一致しない場合、別の問題が発生します。ビューは自動的にビューのサイズに合わせて画像を拡大/縮小します。これを防ぐには、背景をとして定義し、gravityは縮尺のないものに設定します(centerなど)。

関連する問題