在本文中,我们将给您介绍关于android–在ratingbar中切断图像的详细内容,此外,我们还将为您提供关于android(RatingBar)、AndroidRatingBar、AndroidR
在本文中,我们将给您介绍关于android – 在ratingbar中切断图像的详细内容,此外,我们还将为您提供关于android (RatingBar)、Android RatingBar、Android RatingBar onRatingChanged Listener、Android RatingBar 案例的知识。
本文目录一览:- android – 在ratingbar中切断图像
- android (RatingBar)
- Android RatingBar
- Android RatingBar onRatingChanged Listener
- Android RatingBar 案例
android – 在ratingbar中切断图像
<?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/ic_rating_flowers_empty" /> <item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/ic_rating_flowers_empty" /> <item android:id="@+android:id/progress" android:drawable="@drawable/ic_rating_flowers" /> </layer-list>
在drawable floder中的rating_flowers.xml
<style name="flowersrating" parent="@android:style/Widget.ratingBar"> <item name="android:progressDrawable">@drawable/rating_flowers</item> <item name="android:minHeight">24dip</item> <item name="android:maxHeight">64dip</item> </style>
在styles.xml中
<TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dip" > <TextView android:text="@string/mood_headache" /> <ratingBar android:id="@+id/moodHeadacherating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="3" android:stepSize="1.0" android:rating="0"https://www.jb51.cc/tag/rating/" target="_blank">rating" /> </TableRow>
和活动
而我所看到的
和drawable-ldpi的图像
解决方法
android:padding="5dip"
来自TableRow,因为它会在花卉绘制正上方产生填充.
android (RatingBar)
1.星级评分条与拖动类似,运行用户拖动改变进度,通过星星显示进度,表达对每一事物的支持度.
android:numStarts=“5” 指定星级评分条有多少颗星
android:rating=“2.5” 默认有多少星
android:isIndicator=“true” 指定星级评分条是否运行用户改变,true为不改变
android:stepSize=“0.5” 指定每次需要改变 多少个星星,默认为0.5
setsetonratingBarchangelistener 星星变化事件
2.布局代码
3.多动代码
package com.example.android12;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ratingBar;
import android.widget.TextView;
public class ratingActivity extends Activity {
private TextView textView;
private ratingBar start;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_rating);
textView=findViewById(R.id.tv);
start=findViewById(R.id.rb);
start.setonratingBarchangelistener(new ratingBar.OnratingBarchangelistener() {
@Override
public void onratingChanged(ratingBar ratingBar, float rating, boolean fromUser) {
//得到当前评分条的当前值
textView.setText(ratingBar.getrating()+"");
}
});
}
}
Android RatingBar
RatingBar
extends AbsSeekBarjava.lang.Object | ||||
↳ | android.view.View | |||
↳ | android.widget.ProgressBar | |||
↳ | android.widget.AbsSeekBar | |||
↳ | android.widget.RatingBar |
RatingBar.OnRatingBarChangeListener() //一个回调函数,当星级进度改变时修改客户端的星级。
常用属性:
android:isIndicator //RatingBar是否是一个指示器(用户无法进行更改)
android:numStars //显示的星型数量,必须是一个整形值,像“100”。
android:rating //默认的评分,必须是浮点类型,像“1.2”。
android:stepSize //评分的步长,必须是浮点类型,像“1.2”。
public int getNumStars (); // 返回显示的星型数量返回值显示的星型数量
public RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener ();//返回值监听器(可能为空)监听评分改变事件
public float getRating ();
//获取当前的评分(填充的星型的数量)
//返回值--当前的评分
public float getStepSize ();
//获取评分条的步长
//返回值 步长
public boolean isIndicator ();
//返回值 判断当前的评分条是否仅仅是一个指示器(注:即能否被修改)
public void setIsIndicator (boolean isIndicator);
//设置当前的评分条是否仅仅是一个指示器(这样用户就不能进行修改操作了)
//参数 isIndicator Bool值,是否是一个指示器
public synchronized void setMax (int max);
//设置评分等级的范围,从0到max
//参数 max 评分条最大范围。
public void setNumStars (int numStars);
//设置显示的星型的数量。为了能够正常显示它们,建议将当前widget的布局宽度设置为
//wrap content
//参数 numStars 星型的数量
public void setOnRatingBarChangeListener (RatingBar.OnRatingBarChangeListener listener)
//设置当评分等级发生改变时回调的监听器
//参数 listener 监听器
public void setRating (float rating);
//设置分数(星型的数量)
//参数 rating 设置的分数
public void setStepSize (float stepSize);
//设置当前评分条的步长(step size)
//参数 stepSize 评分条的步进。例如:如果想要半个星星,它的值为0.5。
protected synchronized void onMeasure (int widthMeasureSpec, int heightMeasureSpec);
//权衡 view 和 content 来决定它的宽度和高度的整齐。它被measure(int, int)
//调用 并且应该被子类所覆盖,以便提供准确高效的布局测量。
//规定: 当覆盖这个方法的时候,你必须调用 setMeasuredDimension(int, int)以便
//存储精确的视图的宽和高。如果不这样做的话将触发llegalStateException异常,被函
//数 measure(int, int)抛出。调用父类 onMeasure(int, int)是合理的。
//尺寸的基本类的实现默认是背景大小,除非通过MeasureSpec允许大的尺寸。子类应
//该覆盖 onMeasure(int, int) 以便提供更好的布局大小。
//如果这个方法被覆盖,子类应该负责确保标准的宽和高至少是视图的最小宽度和高度的值
//(分别为getSuggestedMinimumHeight() 和 getSuggestedMinimumWidth()两方法)。
//参数
//widthMeasureSpec 受主窗口支配的水平空间要求。这个需求通
//过 View.MeasureSpec.进行编码。
//heightMeasureSpec 受主窗口支配的垂直空间要求。这个需
//求通过 View.MeasureSpec.进行编码。
Android RatingBar onRatingChanged Listener
我在我的应用程序中使用了ratingBar元素,并尝试使用OnratingChangedListener进行设置.在监听器中,我使用变量上的if语句来做不同的事情.问题是,出于某种原因,当我有多个选项时,这个监听器无法正常工作.它是在onCreate()方法中设置的,在if语句中的变量获取值之前,但我试图将它移动到其他位置而根本没有成功.
我的onCreate():
bar = (ratingBar) findViewById(R.id.serviceLevel);
bar.setonratingBarchangelistener(new OnratingBarchangelistener() {
@Override
public void onratingChanged(ratingBar ratingBar, float rating,
boolean fromUser) {
if(Code==null){
Toast.makeText(TipCalculatorActivity.this, "Locationing error occured, please report to the developer.", Toast.LENGTH_LONG).show();
}else if(Code=="1"){
if(rating==0){
autochange.setText("Precentage: 0%");
precentage = 0;
calculate(value, precentage);
}else if(rating==0.5){
autochange.setText("Precentage: 10%");
precentage = 8;
calculate(value, precentage);
}else if(rating==1){
autochange.setText("Precentage: 11%");
precentage = 9;
calculate(value, precentage);
}else if(rating==1.5){
autochange.setText("Precentage: 11%");
precentage = 10;
calculate(value, precentage);
}else if(rating==2){
autochange.setText("Precentage: 12%");
precentage = 11;
calculate(value, precentage);
}else if(rating==2.5){
autochange.setText("Precentage: 12%");
precentage = 12;
calculate(value, precentage);
}else if(rating==3){
autochange.setText("Precentage: 13%");
precentage = 13;
calculate(value, precentage);
}else if(rating==3.5){
autochange.setText("Precentage: 13%");
precentage = 14;
calculate(value, precentage);
}else if(rating==4){
autochange.setText("Precentage: 14%");
precentage = 15;
calculate(value, precentage);
}else if(rating==4.5){
autochange.setText("Precentage: 14%");
precentage = 16;
calculate(value, precentage);
}else if(rating==5){
autochange.setText("Precentage: 15%");
precentage = 17;
calculate(value, precentage);
}
}else if(Code=="2"){
if(rating==0){
autochange.setText("Precentage: 0%");
precentage = 0;
calculate(value, precentage);
}else if(rating==0.5){
autochange.setText("Precentage: 10%");
precentage = 10;
calculate(value, precentage);
}else if(rating==1){
autochange.setText("Precentage: 11%");
precentage = 11;
calculate(value, precentage);
}else if(rating==1.5){
autochange.setText("Precentage: 12%");
precentage = 12;
calculate(value, precentage);
}else if(rating==2){
autochange.setText("Precentage: 13%");
precentage = 13;
calculate(value, precentage);
}else if(rating==2.5){
autochange.setText("Precentage: 14%");
precentage = 14;
calculate(value, precentage);
}else if(rating==3){
autochange.setText("Precentage: 15%");
precentage = 15;
calculate(value, precentage);
}else if(rating==3.5){
autochange.setText("Precentage: 16%");
precentage = 16;
calculate(value, precentage);
}else if(rating==4){
autochange.setText("Precentage: 17%");
precentage = 17;
calculate(value, precentage);
}else if(rating==4.5){
autochange.setText("Precentage: 18%");
precentage = 18;
calculate(value, precentage);
}else if(rating==5){
autochange.setText("Precentage: 19%");
precentage = 19;
calculate(value, precentage);
}
}
}
});
我的代码变量在AsyncTask完成后设置,因此可能在生成UI之后.有解决方案吗
解决方法:
为了使您的代码工作,您必须使用equals()方法来检查Code是否具有正确的值:
// ...
} else if (Code.equals("1")){
// ...
==将测试引用并返回false,因为两个引用不指向同一个对象.
Android RatingBar 案例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:paddingLeft="10dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RatingBar
android:id="@+id/rbOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="3"
android:rating="2.5" />
<RatingBar android:id="@+id/rbTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="2.25" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip">
<TextView android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RatingBar android:id="@+id/rbThree"
style="?android:attr/ratingBarStyleSmall"
android:layout_marginLeft="5dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
</LinearLayout>
<RatingBar
android:id="@+id/rbFour"
style="?android:attr/ratingBarStyleIndicator"
android:layout_marginLeft="5dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
</LinearLayout>
package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.TextView;
public class RatingBarDemo_2 extends Activity implements OnRatingBarChangeListener{
private RatingBar smallRatingBar = null;
private RatingBar indicatorRatingBar = null;
private TextView ratingText = null;
private RatingBar rabarone,rabartwoBar;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ratingbar_2);
ratingText = (TextView) findViewById(R.id.textView);
indicatorRatingBar = (RatingBar) findViewById(R.id.rbFour);
smallRatingBar = (RatingBar) findViewById(R.id.rbThree);
// The different rating bars in the layout. Assign the listener to us.
rabarone=((RatingBar)findViewById(R.id.rbOne));
rabarone.setOnRatingBarChangeListener(this);
rabartwoBar=((RatingBar)findViewById(R.id.rbTwo));
rabartwoBar.setOnRatingBarChangeListener(this);
}
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
// getNumStars
// Returns the number of stars shown.
final int numStars = ratingBar.getNumStars();
ratingText.setText(" 欢迎程度 " + rating + "/" + numStars);
if (indicatorRatingBar.getNumStars() != numStars)
{
indicatorRatingBar.setNumStars(numStars);
smallRatingBar.setNumStars(numStars);
}
// getRating
// Gets the current rating 评级(number of stars filled).
if (indicatorRatingBar.getRating() != rating)
{
Log.d("sxp","rating " + rating);
indicatorRatingBar.setRating(rating);
smallRatingBar.setRating(rating);
}
// getStepSize
// Gets the step size of this rating bar.
final float ratingBarStepSize = ratingBar.getStepSize();
if (indicatorRatingBar.getStepSize() != ratingBarStepSize)
{
Log.d("sxp","ratingBarStepSize " + ratingBarStepSize);
indicatorRatingBar.setStepSize(ratingBarStepSize);
smallRatingBar.setStepSize(ratingBarStepSize);
}
}
}
执行效果:
关于android – 在ratingbar中切断图像的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于android (RatingBar)、Android RatingBar、Android RatingBar onRatingChanged Listener、Android RatingBar 案例的相关信息,请在本站寻找。
本文标签: