Android中RatingBar的自定义效果

    博客分类:
  • Android

Android中RatingBar的自定义效果_第1张图片

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

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

整个项目布局:

我们一步一步来分析:

Xml代码 收藏代码
  1. <RatingBar
  2. style="@style/roomRatingBar"
  3. android:layout_marginLeft="10dip"
  4. android:layout_width="wrap_content"android:layout_height="wrap_content"
  5. android:id="@+id/room_ratingbar"></RatingBar>

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

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

Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stylename="roomRatingBar"parent="@android:style/Widget.RatingBar">
  4. <itemname="android:progressDrawable">@drawable/room_rating_bar</item>
  5. <itemname="android:minHeight">16dip</item>
  6. <itemname="android:maxHeight">16dip</item>
  7. </style>
  8. </resources>

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

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

///// room_rating_bar.xml

Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <!--
  3. Thisistheratingbardrawablethatisusedtoshowaroomnum.
  4. -->
  5. <layer-listxmlns:android="http://schemas.android.com/apk/res/android">
  6. <itemandroid:id="@+android:id/background"
  7. android:drawable="@drawable/room_unselect"></item>
  8. <itemandroid:id="@+android:id/secondaryProgress"
  9. android:drawable="@drawable/room_unselect"></item>
  10. <itemandroid:id="@+android:id/progress"
  11. android:drawable="@drawable/room_select"></item>
  12. </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">等等。这样里面的属性我们继承后就可以被重写成其他的了。

更多相关文章

  1. Android实现多行文字的跑马灯效果(Realizing multiple lines of M
  2. Android 架构组件之一
  3. Eclipse与Android源码中ProGuard工具的使用(代码混淆)
  4. Android动画效果 translate、scale、alpha、rotate 切换Acti...
  5. Anroid-vlc开源播放器代码编译及简单调用手把手
  6. Android 四大组件之Activity
  7. 为Android的界面设计增加跳跃效果

随机推荐

  1. Android(安卓)中 AlertDialog 的多种创建
  2. Android技术文章收集
  3. 【Android】PA4D_CH6 使用Internat资源
  4. 按键消息传播流程(WindowManagerService.j
  5. Android 铃声和音量的获取程序
  6. (安卓权限)Android Permissions
  7. Notes on the implementation of encrypt
  8. Android 根据IP地址获取城市
  9. Android - Animation(一)
  10. android studio 在win10上弹出框过大,无法