人気の Google 開発者であるRomain Guyによって作成された素敵な投稿があり、ビューで角の丸いドローアブル (彼のコードでは "StreamDrawable" と呼ばれます) を効率的に使用する方法を示しています。
このサンプル自体は、Galaxy S3 のポートレート モードで非常にうまく機能しますが、いくつか問題があります。
画面が小さい場合 (qvga 画面など)、表示される画像がトリミングされます。
表示したいサイズよりも小さすぎる入力ビットマップがある場合、出力イメージのエッジが不鮮明になります。Galaxy S3 でも、横向きでサンプル コードを実行すると、見栄えが悪くなります。
まだわかりませんが(サンプルコードを使用するために画像をスケーリングする回避策を使用しているため)、このソリューションでもlistViewで使用すると少し遅いと思います。多分これのためのrenderscriptソリューションがありますか?
setImageDrawable を使用するか setBackgroundDrawable を使用するかは問題ではありません。それはドローアブル自体にあるものでなければなりません。
変数と bitmapShader を試してみましたが、何も機能しませんでした。悲しいことに、 TileModeには画像を引き伸ばすだけの値はなく、何らかの方法でタイルを張るだけです。
回避策として、スケーリングされた新しいビットマップを作成できますが、これは単なる回避策です。確かに、必要以上に多くのメモリを使用しないより良い方法があります。
これらの問題を修正し、この優れたコードを使用するにはどうすればよいですか?