为了ImageView设置很多不同图片以表示某种应用状态,如果每次都一一的通过ImageView设置图片的src来达到这一目的,实在是太过于繁琐,且维护和管理起来不便。因此,引入ImageView的setImageLevel和level-list实现这一目的。
电影有五个星级;
先写一个movie_info_score_level.xml
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/movie_info_score_zero"
android:maxLevel="0"/>
<item
android:drawable="@drawable/movie_info_score_one"
android:maxLevel="1"/>
<item
android:drawable="@drawable/movie_info_score_one"
android:maxLevel="2"/>
<item
android:drawable="@drawable/movie_info_score_two"
android:maxLevel="3"/>
<item
android:drawable="@drawable/movie_info_score_two"
android:maxLevel="4"/>
<item
android:drawable="@drawable/movie_info_score_three"
android:maxLevel="5"/>
<item
android:drawable="@drawable/movie_info_score_three"
android:maxLevel="6"/>
<item
android:drawable="@drawable/movie_info_score_three"
android:maxLevel="7"/>
<item
android:drawable="@drawable/movie_info_score_four"
android:maxLevel="8"/>
<item
android:drawable="@drawable/movie_info_score_four"
android:maxLevel="9"/>
<item
android:drawable="@drawable/movie_info_score_five"
android:maxLevel="10"/>
</level-list>
布局文件
<ImageView
android:id="@+id/movie_score_view"
style="@style/MovieInfoScoreViewStyle"
android:contentDescription="@string/app_name" />
style
<style name="MovieInfoScoreViewStyle">
<item name="android:layout_width">138dip</item>
<item name="android:layout_height">20dip</item>
<item name="android:layout_marginStart">450dip</item>
<item name="android:layout_marginTop">115dip</item>
<item name="android:scaleType">fitXY</item>
<item name="android:src">@drawable/movie_info_score_level</item>
<item name="android:background">@null</item>
</style>
代码中设置
movieScoreView = (ImageView) findViewById(R.id.movie_score_view);
movieScoreView.setImageLevel(8); //设置int显示对应的星级