Android的RatingBar实现拖动评星
2016-06-02 17:35
316 查看
自定义RatingBar星星图片(res/drawable)
<?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/start1"></item>
<item android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/start3"></item>
<item android:id="@+android:id/progress"
android:drawable="@drawable/start2"></item>
</layer-list>
background:背景图片
secondaryProgress:当android:stepSize="0.5"不等于整数的时候,出现暂时的第二层背景图片
progress:类似进度条,点亮的星星背景图片
定义RatingBar调用的style(style.xml)
<style name="roomRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratbar_background1</item>
<item name="android:minHeight">50dp</item>
<item name="android:maxHeight">50dp</item>
</style>
android:minHeight:设置星星图片的尺寸
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- 星级评分条 -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="第一种风格(可交互)" />
<RatingBar
android:id="@+id/ratingbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/roomRatingBar"
android:numStars="5"
android:stepSize="0.5"
android:rating="3.0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第二种风格(ratingBarStyleSmall)" />
<RatingBar
android:id="@+id/ratingbar2"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="3.0"
android:stepSize="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第三种风格(ratingBarStyleIndicator)" />
<RatingBar
android:id="@+id/ratingbar3"
style="?android:attr/ratingBarStyleIndicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="3.0"
android:stepSize="1"/>
</LinearLayout>
Activity文件:
package com.app.fengactivity;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.RatingBar;
public class MainActivity extends Activity {
private RatingBar ratingbar=null;//星级评分条
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ratingbar = (RatingBar)findViewById(R.id.ratingbar);
ratingbar.setOnRatingBarChangeListener(new RatingBarListener());
}
private class RatingBarListener implements RatingBar.OnRatingBarChangeListener{
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
System.out.println("等级:" + rating);
System.out.println("星星:" + ratingBar.getNumStars());
}
}
@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;
}
}
截图:、
<?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/start1"></item>
<item android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/start3"></item>
<item android:id="@+android:id/progress"
android:drawable="@drawable/start2"></item>
</layer-list>
background:背景图片
secondaryProgress:当android:stepSize="0.5"不等于整数的时候,出现暂时的第二层背景图片
progress:类似进度条,点亮的星星背景图片
定义RatingBar调用的style(style.xml)
<style name="roomRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratbar_background1</item>
<item name="android:minHeight">50dp</item>
<item name="android:maxHeight">50dp</item>
</style>
android:minHeight:设置星星图片的尺寸
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- 星级评分条 -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="第一种风格(可交互)" />
<RatingBar
android:id="@+id/ratingbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/roomRatingBar"
android:numStars="5"
android:stepSize="0.5"
android:rating="3.0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第二种风格(ratingBarStyleSmall)" />
<RatingBar
android:id="@+id/ratingbar2"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="3.0"
android:stepSize="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第三种风格(ratingBarStyleIndicator)" />
<RatingBar
android:id="@+id/ratingbar3"
style="?android:attr/ratingBarStyleIndicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="3.0"
android:stepSize="1"/>
</LinearLayout>
Activity文件:
package com.app.fengactivity;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.RatingBar;
public class MainActivity extends Activity {
private RatingBar ratingbar=null;//星级评分条
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ratingbar = (RatingBar)findViewById(R.id.ratingbar);
ratingbar.setOnRatingBarChangeListener(new RatingBarListener());
}
private class RatingBarListener implements RatingBar.OnRatingBarChangeListener{
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
System.out.println("等级:" + rating);
System.out.println("星星:" + ratingBar.getNumStars());
}
}
@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 1G-4G
- viewstub用法(android)
- android MediaPlayer surface分析
- Android群英转读书笔记第9章(Android 系统信息与安全机制)
- 【转】Android性能优化之使用线程池
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
- 安卓简单技术-内存泄漏(OOM)
- Android之四大图片缓存原理、特性对比分析
- HAL开发全流程(三)
- Android——Activity去除标题栏和状态栏
- Fragment 与FragmentActivity通信封装
- Android梳理 Activity
- A problem occurred configuring root project 'android'. > Could not resolve all dependencies for configuration ':_armv7DebugCompile'. > Could not resolve org.xwalk:xwalk_core_library:18+.
- 自定义Android标题栏TitleBar布局
- 增量更新的研究
- Android开发规范总结
- 《Android群英传》图像处理之画笔特效处理--PorterDuffXfermode篇
- Android动画机制与使用技巧(三)——动画补充知识
- Android apk 包提示更新
- Android studio使用插件和命令行两种方式打包APK