ListViewのスクロール行を透過にする

GoogleIO 2010のスライドを見ていて、

The world of ListView Android - Romain Guy, Adam Powell

この中で、

My list turns black?!
・Gotcha
 - Very useful optimization
 - When scrolling views are cached in bitmaps
 - Opaque bitmaps to avoid blending

・ Solution
 - android:cacheColorHint=”#00000000”
 - android:cacheColorHint=”@color/myBackgroundColor”

とあるが、読んでいる時はこれがどういうものか全く意味が解らなかった。
解らない時は実際にやってみるに限る。

  • 実施前

  • 実施後 (ListViewのCacheColorHintを"#00000000"、parentのLinearLayouのBackgroundを"#808A2BE2"に設定)

単に背景色を紫色にするだけだとスクロールした際にListViewの行の背景色は元に(黒く)戻ってしまうが、CacheColorHintはListViewのスクロール行における背景色を指示するらしく、これを"#00〜"つまり透明にするとコンテナであるLinearLayoutに設定した背景色がスクロール中もそのまま透けて見えるということらしい。

AndroidのViewは最近のGUIツールキットらしく、色の属性に透過ビットが扱えるお陰でGUIの表現が随分と広がるので楽しい。