亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更改滾動條上的背景顏色

更改滾動條上的背景顏色

紅顏莎娜 2024-01-28 20:26:47
我有一個滾動視圖,當用戶滾動它時,我想慢慢地、逐漸地改變背景顏色。我怎樣才能實現以下目標?
查看完整描述

2 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

使用 aNestedScrollView并附加一個OnScrollChangeListener. 然后將其與ARGBEvaluator生成一種顏色,并將其設置為背景。我是憑記憶來的,但是類似:


final ArgbEvaluator evaluator = new ArgbEvaluator();

final colorStart = Color.GREEN;

final colorEnd = Color.BLUE;

nestedScrollView.setOnScrollChangedListener((view, scrollX, scrollY, oldX, oldY) -> {

    final float height = (float) v.getHeight();

    if(height <= 0) return;


    final float progress = (float)((float)scrollY/v.getHeight());

    background.setBackgroundColour((int)evaluator.evaluate(progress, startColor, endColor);

});


查看完整回答
反對 回復 2024-01-28
?
浮云間

TA貢獻1829條經驗 獲得超4個贊

與已接受的答案類似,我在 Kotlin 中是這樣做的:


@RequiresApi(Build.VERSION_CODES.M)

@SuppressLint("RestrictedApi")

private fun setBackgroundAnimation(nestedScrollView: NestedScrollView) {


    val evaluator = ArgbEvaluator()


    val colorStart = context?.getColor(R.color.backgroundColor)

    val colorEnd = Color.BLACK


    var progress: Float

    val velocity = 3


    nestedScrollView.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->

        val scrollViewHeight = nestedScrollView.height


        if (scrollViewHeight > 0) {

            progress = (scrollY / scrollViewHeight.toFloat()) * velocity

            nestedScrollView.setBackgroundColor(

                evaluator.evaluate(

                    progress,

                    colorStart,

                    colorEnd

                ) as Int

            )

        }

    }

}


查看完整回答
反對 回復 2024-01-28
  • 2 回答
  • 0 關注
  • 249 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號