GVKun编程网logo

android – 在ratingbar中切断图像

14

在本文中,我们将给您介绍关于android–在ratingbar中切断图像的详细内容,此外,我们还将为您提供关于android(RatingBar)、AndroidRatingBar、AndroidR

在本文中,我们将给您介绍关于android – 在ratingbar中切断图像的详细内容,此外,我们还将为您提供关于android (RatingBar)、Android RatingBar、Android RatingBar onRatingChanged Listener、Android RatingBar 案例的知识。

本文目录一览:

android – 在ratingbar中切断图像

android – 在ratingbar中切断图像

我做了自己的评级栏.从24pxx24px到64x64px有4种尺寸的花朵图像(xdpi,hdpi等).

<?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)

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()+"");
            }
        });
    }
}

在这里插入图片描述

morning to afternoon 发布了51 篇原创文章 · 获赞 3 · 访问量 1551 私信 关注

Android RatingBar

Android RatingBar

public class

RatingBar

extends   AbsSeekBar
java.lang.Object
   ↳ android.view.View
     ↳ android.widget.ProgressBar
       ↳ android.widget.AbsSeekBar
         ↳ android.widget.RatingBar
RatingBar是SeekBar和ProgressBar的扩展,用星星来评级。使用的默认大小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

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 案例

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 案例的相关信息,请在本站寻找。

本文标签: