2011-07-24 8 views
7

res/drawableにビットマップを配置しました。Androidでビットマップのサイズを自動的に変更したくない

BitmapFactory.decodeResource()でビットマップを読み込んだ後、密度によって自動的にサイズが変更されることがわかりました。

これは私が望むものではありません。 元のサイズ(ピクセルサイズ)を維持したい。

どうすればよいですか?

+1

ゴーグルの第2ラウンドの後、私は "drawable-nodpi"と呼ばれるフォルダがあることを知ります。したがって、問題は解決したようです。 – Sunny

答えて

1

hdpi、ldpi、およびmdpiに別々のイメージを保存していて、これらのイメージにアクセスするためにリソースを使用している場合は、あまり操作できません。

イメージを1つだけ使用したい場合は、そのイメージをmdpiフォルダに1つコピーし、それ以外のイメージを削除します。

-1

イメージを「drawable」というフォルダに配置します(ldpi、mdpi、hdpiなどの接尾辞なし)。おそらく自分で作成する必要があるかもしれません(Eclipseはこれを自動的に作成しません)。

その後、他のdrawable-somethingフォルダからdrawableリソースを削除してください。

+0

私はこれらのビットマップをres/drawableに配置しました – Sunny

+1

Folder drawableはdrawable-mdpi/160dpi /と同じ方法で使用されます。 – Kostadin

+0

このコメントは完全に間違っています。正解は、inScaledをfalseに設定するか、-nodpiフォルダを他の回答に記載されているように使用することです。 – RichieHH

17

他の質問で言われたように、drawable-nodpiフォルダを使用すると、アンドロイドの画像サイズが変更されなくなります。

さらに、hdpiおよびldpi形式の画像の複数のバージョンを使用したいが、システムのサイズを変更したくない場合(たとえば、2倍の解像度を維持するため)、次のコードを使用できますあなたのビットマップをロード中:

// ask the bitmap factory not to scale the loaded bitmaps 
BitmapFactory.Options opts = new BitmapFactory.Options(); 
opts.inScaled = false; 

// load the bitmap 
Bitmap bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.id.mybmp, opts); 
+1

オプションをload isntructionに追加する必要があります:Bitmap bitmap = BitmapFactory.decodeResource(ctx.getResources()、R.id.mybmp、opts); –