单击一个时如何禁用其他星星上闪烁的颜色/动画?
Posted
技术标签:
【中文标题】单击一个时如何禁用其他星星上闪烁的颜色/动画?【英文标题】:How to disable the blinking color/animations on other stars when one is clicked? 【发布时间】:2021-09-24 02:19:30 【问题描述】:当我点击一颗星星时,其他星星会在它变成全蓝色之前闪烁,我想在单击相应星星时禁用跳舞效果/动画/背景颜色或其他星星的任何内容。如果有人帮助我找到节省时间的方法,不胜感激。
[<RatingBar
android:id="@+id/rating_bar"
android:layout_
android:layout_
android:layout_gravity="center_vertical"
android:layout_marginBottom="8dp"
android:numStars="5"
android:stepSize="1"
app:layout_constraintBottom_toTopOf="@+id/btnSubmit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/HiddenText"
app:layout_constraintVertical_bias="0.488" />][1]
**When I click on a star, the other stars are blinking with the accent color of the filled star before it gets filled.**在此输入代码
rating_bar.setOnTouchListener(new View.OnTouchListener()
@Override
public boolean onTouch(View v, MotionEvent event)
/*
Log.i(TAG, "onTouch:1111111 " +rating_bar.getRating());
*/
if (event.getAction() == MotionEvent.ACTION_UP)
// TODO perform your action here
String StarPosition = String.valueOf(rating_bar.getRating());
if (StarPosition.equalsIgnoreCase("1.0"))
HiddenText.setText("Poor");
HiddenText.setTextColor(Color.parseColor("#2F8E33"));
else if (StarPosition.equalsIgnoreCase("2.0"))
HiddenText.setText("Bad");
HiddenText.setTextColor(Color.parseColor("#2F8E33"));
else if (StarPosition.equalsIgnoreCase("3.0"))
HiddenText.setText("Average");
HiddenText.setTextColor(Color.parseColor("#2F8E33"));
else if (StarPosition.equalsIgnoreCase("4.0"))
HiddenText.setText("Good");
HiddenText.setTextColor(Color.parseColor("#2F8E33"));
else if (StarPosition.equalsIgnoreCase("5.0"))
HiddenText.setText("Excellent");
HiddenText.setTextColor(Color.parseColor("#2F8E33"));
else
HiddenText.setText("");
Log.i(TAG, "onTouch:2222222222 " + rating_bar.getRating());
return false;
);
【问题讨论】:
【参考方案1】:不要使用OnTouchListener
,而是使用OnRatingBarChangeListener
rating_bar.setOnRatingBarChangeListener(new OnRatingBarChangeListener()
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser)
//your code in here
if(rating < 0.5f) // no rating or 0 stars, not filled?
else if(rating < 1.5f) // one star (rounded)
else if(rating < 2.5f) // two starts (rounded)
else...
);
【讨论】:
OnRatingBarChangeListener ,我使用了它,但问题是,假设我将填充的星形颜色用作深蓝色。当我点击一颗星星进行评分时,所有其他星星都会闪烁一秒钟左右,背景中带有非常温和的蓝色调。我想摆脱那里发生的背景颜色/动画。按两下或三次单颗星,您会感觉到整个评分栏的闪烁效果。以上是关于单击一个时如何禁用其他星星上闪烁的颜色/动画?的主要内容,如果未能解决你的问题,请参考以下文章