(转载)RatingBar的自定义效果

首先看看效果:

     

有时候android系统提供给我们的ratingbar效果并不达到我们的要求,这个时候就可以自定义自己喜欢的ratingbar。

从上面的效果可以看出,自定义这样的组件,需要两张图片: 。一张用来未选择的效果,一张用来显示的效果。那还要中间那种一半是未选择一半时选择的呢?其实当你写好这样的组件后,系统就会自动帮你自动解析生成那种效果。

整个项目布局:

 

我们一步一步来分析:

<RatingBar

           style="@style/roomRatingBar"

           android:layout_marginLeft="10dip"

           android:layout_width="wrap_content" android:layout_height="wrap_content"

           android:id="@+id/room_ratingbar"></RatingBar>

从上面可看出自定义ratingbar主要是这段style="@style/roomRatingBar" ,好我们去找到这段代码

/////////styles.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <style name="roomRatingBar" parent="@android:style/Widget.RatingBar">

       <item name="android:progressDrawable">@drawable/room_rating_bar</item>

       <item name="android:minHeight">16dip</item>

       <item name="android:maxHeight">16dip</item>

    </style>

</resources>

上面的意思是继承@android:style/Widget.RatingBar,重写android:progressDrawable属性,换成我们自定义@drawable/room_rating_bar文件。

控制该组件的最大和最小高度。好我们继续去找这自定义文件@drawable/room_rating_bar。

///// room_rating_bar.xml

<?xml version="1.0" encoding="utf-8"?>

    <!--

       This is the rating bar drawable that is used to show a room num.

    -->

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+android:id/background"

    android:drawable="@drawable/room_unselect"></item>

    <item android:id="@+android:id/secondaryProgress"

    android:drawable="@drawable/room_unselect"></item>

    <item android:id="@+android:id/progress"

    android:drawable="@drawable/room_select"></item>

</layer-list>

好了,越来越接近真相了。这里就是定义组件的背景图片、一级进度背景图片和二级进度背景图片(里面这些id都是系统的id,当系统运行到这里时会自动根据这个id去重画组件)

讲到这里大概明白怎么用了。其实很多组件都可以通过这样的方法来使用,但如果明白整个过程,那以后做起其他来都至少有一点得心应手的感觉吧。好!下来我也只能说说我的见解,因为本人对android的理解也不是很深入。

前提是下载android的源码,这里我就不讲了。在android framework\base\core\res\res\values(android framework是我保存源码的目录)目录下找到styles.xml文件,该文件是android系统运行时所要加载的文件,里面保存了所有组件的样式定义。在里面你可以找到<style name="Widget.RatingBar">我们之前继承的其中一个组件样式,也有其他<style name="Widget.RatingBar.Small">、<style name="Widget.SeekBar">、<style name="Widget.ProgressBar.Small">等等。这样里面的属性我们继承后就可以被重写成其他的了。

项目:

https://files.cnblogs.com/not-code/testRatingBar.zip

 

上文转载自:http://www.cnblogs.com/not-code/archive/2011/04/03/2004388.html 作者昵称:没有代码

 

下文转载自:http://fariytale.iteye.com/blog/1260673 作者昵称:FariyTale

android评分条RatingBar自定义设置

RatingBar为评分条控件,默认效果为若干个绿色的星星,如果想将其换成其他自定义图片就要自定义它的style。首先是布局文件:

Java代码  收藏代码
  1. <RatingBar android:id="@+id/app_ratingbar" style="@style/MyRatingBar"  
  2.                 android:layout_marginTop="4dip" android:layout_width="wrap_content"  
  3.                 android:layout_height="wrap_content" android:numStars="5"  
  4.                 android:isIndicator="true" android:rating="5" />  

 其中android:numStars="5"设置显示的星星数量为5; android:rating="5"设置选中的数量为5,也就是全部选中

android:isIndicator="true"设置评分条只显示结果无法通过点击改变选中状态。

然后在res/values目录下建立styles.xml文件 代码:

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <resources>       
  3.         <style name="MyRatingBar" parent="@android:style/Widget.RatingBar">    
  4.         <item name="android:progressDrawable">@drawable/food_rating_bar_full</item>    
  5.         <item name="android:minHeight">15dip</item>    
  6.         <item name="android:maxHeight">15dip</item>    
  7.     </style>    
  8. </resources>    

 

android:progressDrawable为评分条图案。接下来在res/drawable目录下建立food_rating_bar_full.xml文件

代码:

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">    
  3.     <item android:id="@+android:id/background"    
  4.           android:drawable="@drawable/rating" />    
  5.     <item android:id="@+android:id/secondaryProgress"    
  6.           android:drawable="@drawable/rating" />    
  7.     <item android:id="@+android:id/progress"    
  8.           android:drawable="@drawable/rating_show" />    
  9. </layer-list>    

 <item android:id="@+android:id/progress" android:drawable="@drawable/rating_show" />为设置评分图案为  rating_show.png,也就是选中时的图案;

<item android:id="@+android:id/background" android:drawable="@drawable/rating" />  为设置背景图案为 rating.png,也就是为选中时的图案。

posted @ 2014-01-15 18:18  蓝色漩涡  阅读(311)  评论(0)    收藏  举报