Android SeekBar 奇怪的行为
Android SeekBar strange behaviour
我在 Android 中有一个默认的 SeekBar,它有 3 个可能的值:0、1、2(左、中、右)。
但只有当手指恰好在点上(对应值)或右边时才取值。如果手指距离点左侧 1 个像素,则搜索栏采用先前的值。
我希望它在手指接近点时取值。
我的解释能力很差,所以看图:
如果使用 3 个点还不够,为什么不添加更多点并映射回您的 3 个点?例如
private static final double RATIOS = new double[]{ .33, 66, 100 }
private static final int FAKED_POINTS = new int[]{ 0, 50, 100 }
private void setupSeekBar() {
// Your normal setup
seekBar.setMax(100);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(!fromUser) // We only want to do this when the user changes the values
return;
for(int i = 0; i < RATIOS.length; i++){
if(progress <= RATIOS[i]){
onRealProgressChanged(i);
seekBar.setProgress(FAKED_POINTS[i]); // This way it always stays on our 3 faked points
}
}
}
private void onRealProgressChanged(int realProgress){
// Deal with the real changed value (being 0, 1, or 2)
}
如果您需要更多的微调,可以将其再放大一个数量级。
不是很干净或漂亮,但应该为您指明正确的方向。
我开发了一个可以帮助您的自定义 Seekbar 视图库。
请使用,如果喜欢,请分享!
将此行添加到应用模块中的 gradle 文件中
compile 'mx.segundamano.doubleseekbarview:seekbars:1.0.2'
并将其添加到您的 build.gradle 项目级文件
repositories {
maven {
url "http://dl.bintray.com/segundamanomx/maven"
}
}
里面有两个自定义视图,一个有一个选择器,一个有两个选择器。
尽情享受 ;)
我在 Android 中有一个默认的 SeekBar,它有 3 个可能的值:0、1、2(左、中、右)。
但只有当手指恰好在点上(对应值)或右边时才取值。如果手指距离点左侧 1 个像素,则搜索栏采用先前的值。
我希望它在手指接近点时取值。
我的解释能力很差,所以看图:
如果使用 3 个点还不够,为什么不添加更多点并映射回您的 3 个点?例如
private static final double RATIOS = new double[]{ .33, 66, 100 }
private static final int FAKED_POINTS = new int[]{ 0, 50, 100 }
private void setupSeekBar() {
// Your normal setup
seekBar.setMax(100);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(!fromUser) // We only want to do this when the user changes the values
return;
for(int i = 0; i < RATIOS.length; i++){
if(progress <= RATIOS[i]){
onRealProgressChanged(i);
seekBar.setProgress(FAKED_POINTS[i]); // This way it always stays on our 3 faked points
}
}
}
private void onRealProgressChanged(int realProgress){
// Deal with the real changed value (being 0, 1, or 2)
}
如果您需要更多的微调,可以将其再放大一个数量级。
不是很干净或漂亮,但应该为您指明正确的方向。
我开发了一个可以帮助您的自定义 Seekbar 视图库。
请使用,如果喜欢,请分享!
将此行添加到应用模块中的 gradle 文件中
compile 'mx.segundamano.doubleseekbarview:seekbars:1.0.2'
并将其添加到您的 build.gradle 项目级文件
repositories {
maven {
url "http://dl.bintray.com/segundamanomx/maven"
}
}
里面有两个自定义视图,一个有一个选择器,一个有两个选择器。
尽情享受 ;)