gpt4 book ai didi

Android NumberPicker OnValueChangeListener

转载 作者:行者123 更新时间:2023-11-29 14:39:19 26 4
gpt4 key购买 nike

我有一个关于 Android NumberPicker 的问题。当用户在 NumberPicker 上执行 Fling 时,对于每一步,都会触发 OnValueChange 的监听器。我能否以这种方式更改它,即 oldVal 和 newVal 彼此之间的差异可能超过 1,并且 Listener 仅触发一次?

提前致谢。

编辑:我将尝试在我的代码中更具体地解释它。

        int diff = Math.abs(newVal - oldVal);

if (newVal - oldVal > 0) {
sendMessage(te);
for (int i = 0; i < diff; i++) {
sendMessage(plus);
}
sendMessage(te);
} else if (newVal - oldVal < 0) {
sendMessage(te);
for (int i = 0; i < diff; i++) {
sendMessage(minus);
}
sendMessage(te);
} else {
if (D)
Log.w(TAG, "This should NEVER happen");
}

此方法称为 inonValueChange。它发送消息的速度太快,以至于我连接的设备无法及时使用react。所以我需要以任何方式放慢速度。有谁知道如何在不让我的主线程休眠的情况下减慢它的速度?当它处于休眠状态时,整个 GUI 在此期间没有响应。我尽量避免这种情况。

谢谢。

最佳答案

您可以使用 setOnScrollListener 而不是 setOnValueChangedListener,并在滚动状态为 SCROLL_STATE_IDLE 时获取选择器的值。检查这个例子:

    numberPicker.setOnScrollListener(new NumberPicker.OnScrollListener() {

private int oldValue; //You need to init this value.

@Override
public void onScrollStateChange(NumberPicker numberPicker, int scrollState) {
if (scrollState == NumberPicker.OnScrollListener.SCROLL_STATE_IDLE) {
//We get the different between oldValue and the new value
int valueDiff = numberPicker.getValue() - oldValue;

//Update oldValue to the new value for the next scroll
oldValue = numberPicker.getValue();

//Do action with valueDiff
}
}
});

请注意,您需要在监听器中为 oldValue 变量初始化值。如果您需要创建一个通用监听器(可以接收任何值数组),您可以创建一个自定义类来实现 NumberPicker.OnScrollListener 并在构造函数中接收初始值。像这样:

    public class MyNumberPickerScrollListener implements NumberPicker.OnScrollListener {

private int oldValue;

public MyNumberPickerScrollListener(int initialValue) {
oldValue = initialValue;
}

@Override
public void onScrollStateChange(NumberPicker numberPicker, int scrollState) {
if (scrollState == NumberPicker.OnScrollListener.SCROLL_STATE_IDLE) {
//We get the different between oldValue and the new value
int valueDiff = numberPicker.getValue() - oldValue;

//Update oldValue to the new value for the next scroll
oldValue = numberPicker.getValue();

//Do action with valueDiff
}
}
}

阅读NumberPicker.onScrollListener文档以获取更多信息。

关于Android NumberPicker OnValueChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com