android学习笔记九——RatingBar

RatingBar==>星级评分条

RatingBar和SeekBar十分相似,它们甚至有相同的父类:AbsSeekBar.两者都允许用户通过拖动来改变进度;

两者最大的区别在于RatingBar是通过星星表示进度;RatingBar本身就是一个特殊的SeekBar。

RatingBar常见XML属性如下图:

android学习笔记九——RatingBar

注意:为了程序支持响应星级评分条的改变,程序可以考虑为其绑定一个OnRatingBarChangeLinstener监听器。

实例如下:

布局文件==》
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <!-- <ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="200px"
android:src="@drawable/no" />--> <RatingBar
android:id="@+id/ratingbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="255"
android:numStars="5"
android:progress="255"
android:stepSize="0.5" /> </RelativeLayout> 代码实现==》
package com.example.myratingbar; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener; public class MainActivity extends Activity
{ @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); RatingBar bar = (RatingBar) this.findViewById(R.id.ratingbar);
//final ImageView img = (ImageView) this.findViewById(R.id.image); bar.setOnRatingBarChangeListener(new OnRatingBarChangeListener()
{
@SuppressWarnings("deprecation")
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser)
{
//img.setAlpha((int) (rating * 255 / 5));
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

实现效果如:

android学习笔记九——RatingBar

如何替换如上图系统默认星星图标,实现方式如下:

参考:http://my.oschina.net/amigos/blog/60060

drawable-mdpl资源文件==》

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item
android:id="@+android:id/background"
android:drawable="@drawable/unselect">
</item>
<item
android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/unselect">
</item>
<item
android:id="@+android:id/progress"
android:drawable="@drawable/select">
</item> </layer-list>

 样式文件==》style.xml

 <style name="roomRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratingbar_drawable</item>
<item name="android:minHeight">48dip</item>
<item name="android:maxHeight">48dip</item>
</style>

加 布局文件==》

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" > <RatingBar
android:id="@+id/ratingbar"
style="@style/roomRatingBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:numStars="8"
android:rating="1.5"
android:stepSize="0.15" /> </LinearLayout>

运行效果如下:

  android学习笔记九——RatingBar

上一篇:JSON入门之二:org.json的基本使用方法


下一篇:修改Latex常用编辑器WinEdt中的字号与字体 [转]