有时候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">等等。这样里面的属性我们继承后就可以被重写成其他的了。
分享到:
相关推荐
在Android开发中, RatingBar 是一个...在"Android自定义Ratingbar星星实现评分"这个例子中,开发者提供了宝贵的实践经验和代码参考,对于希望深入理解Android自定义视图机制的开发者来说,这是一个极好的学习资源。
Android 中自定义 RatingBar 方法 在 Android 开发中,RatingBar 是一个非常常用的组件,用于显示评分或星级評價。但是,系统默认的 RatingBar 样式可能不够美观,于是我们需要自定义 RatingBar 的样式来满足我们的...
ratingbar 自定义星星效果 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+android:id/background" android:drawable="@drawable/xixi0" /> <item android:id=...
系统中自带的RatingBar使用起来非常不方便,并且无法调整合适大小,于是自定义一个可自己调节星星数量,大小,间距等属性的RatingBar,详细了解请移步http://blog.csdn.net/zxc514257857/article/details/68670712
默认情况下,RatingBar的样式和颜色可能无法满足所有设计需求,因此开发者常常需要对其进行自定义,以达到更个性化的视觉效果。本文将详细介绍如何自定义RatingBar的背景图片以及解决在Android 6.0(API级别23)设备...
android自定义RatingBar显示效果
- 在XML布局文件中,通过`app:`(如果使用自定义属性)或`android:`(如果仅使用Android框架的属性)前缀引用自定义RatingBar的属性。 - 或者在Java代码中,通过`setCompoundDrawablesWithIntrinsicBounds()`方法...
总之,自定义RatingBar是Android开发中的一个重要技巧,它允许开发者创造出具有独特设计和交互体验的评分组件。通过理解RatingBar的基础知识并熟练掌握自定义View的原理,你可以为应用增添更多个性化的元素,提升...
在Android开发中,RatingBar是一种常用的UI组件,它允许用户以星星的形式给出评分。系统默认的RatingBar样式可能无法满足所有设计需求,因此开发者经常需要对其进行自定义以达到更美观的效果。本文将深入探讨如何...
一、RatingBar简单介绍 RatingBar是基于SeekBar(拖动条)和ProgressBar(状态条)的扩展,用星...效果图展示: 二、实例 1.布局文件 <?xml version=1.0 encoding=utf-8?> <LinearLayout xmlns:android=http
对于自定义的行为,例如触摸拖动时的动画效果,RatingBar可能无法直接满足。这时,我们需要自定义一个继承自RatingBar的类,并重写其onTouchEvent()方法,实现自定义的触摸响应逻辑。同时,如果需要更精细的控制,如...
为解决此问题,可以在自定义RatingBar的XML布局中设置`android:layout_width`和`android:layout_height`为`wrap_content`,并使用`android:scaleType="fitStart"`或`android:scaleType="fitEnd"`来控制星星的排列...
由于项目中需要使用到ratingbar,可之前每次使用总有各种各样的限制 使用过的小伙伴可能会有所体会,这次需要设置ratingbar之间的间距,我试了很多种方法都无效 迫于无奈,只能自己写一个呗 现在分享出来给小伙伴们...
本篇文章将深入探讨如何在Android中自定义RatingBar,包括改变其样式、背景图、间距、大小以及分数等属性。 首先,创建自定义RatingBar通常涉及到以下几个步骤: 1. **创建自定义View类**:你需要创建一个新的Java...
在Android开发中,RatingBar是一种常用的UI组件,用于显示评分或...总的来说,自定义RatingBar是Android开发中提升用户体验的重要手段,开发者可以根据项目需求灵活运用这些技术,创造出独特且富有个性化的评分组件。
本文将深入探讨如何在Android中自定义RatingBar,包括其样式、颜色、数量以及动态交互等方面。 首先,我们需要了解RatingBar的基本结构。RatingBar通常由一系列的ImageView组成,每个ImageView代表一个星星。在...
在Android开发中,RatingBar是一种常用的视图组件,它用于显示用户评价或评分,通常用于电影、产品或服务的评价场景。本实例将深入探讨如何在Android应用中创建和使用RatingBar,适合初级到高级的Android开发者学习...
在Android开发中, RatingBar通常用于用户评价,它呈现为一系列可选的星星。然而,这里我们将探讨如何创造性地利用RatingBar来实现一个登录时的加载进度条效果。这个概念可以提升用户体验,使得用户在等待登录验证时...