单击一个时如何禁用其他星星上闪烁的颜色/动画?

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 ,我使用了它,但问题是,假设我将填充的星形颜色用作深蓝色。当我点击一颗星星进行评分时,所有其他星星都会闪烁一秒钟左右,背景中带有非常温和的蓝色调。我想摆脱那里发生的背景颜色/动画。按两下或三次单颗星,您会感觉到整个评分栏的闪烁效果。

以上是关于单击一个时如何禁用其他星星上闪烁的颜色/动画?的主要内容,如果未能解决你的问题,请参考以下文章

按钮背景颜色动画禁用触摸(IOS)

如何禁用 ScrollView 项目上的多个按钮颜色选择?

JS框架_(JQuery.js)夜晚天空满天星星闪烁动画

react-native TouchableHighlight 禁用 onPress 颜色闪烁

悬停时如何停止当前正在运行的动画并更改样式

使用 WooCommerce,我希望在客户单击产品价格中的“库存”时隐藏/禁用产品属性“颜色部分”并了解如何