为当前位置和设置距离范围(以公里为单位)创建一个类似于Tinder的Seekbar



我想创建一个Android应用程序,该应用具有一个seekbar,该应用程序设置了从用户的位置设置距离Tinder的距离范围。我该怎么做呢?

这是我到目前为止尝试的,但是我不知道该从这里去哪里。这可能是完全错误的。

感谢您的任何帮助

public class MainActivity extends AppCompatActivity {
    public static SeekBar seek_bar;
    public static TextView text_view;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        seek_bar();
    }
    public void seek_bar( ) {
        seek_bar = (SeekBar) findViewById(R.id.DistanceSeekBar);
        text_view = (TextView) findViewById(R.id.DistanceTextView);
        text_view.setText(seek_bar.getProgress() + " / " + seek_bar.getMax());
        seek_bar.setOnSeekBarChangeListener(
                new SeekBar.OnSeekBarChangeListener() {
                    int progress_value;
                    @Override
                    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                        progress_value = progress;
                        text_view.setText(progress + " / " + seek_bar.getMax());
                        Toast.makeText(MainActivity.this, "SeekBar in progress", Toast.LENGTH_LONG).show();
                    }
                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {
                        Toast.makeText(MainActivity.this, "SeekBar in StartTracking", Toast.LENGTH_LONG).show();
                    }
                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                        text_view.setText("Covered : " + progress_value + " / " + seek_bar.getMax());
                        Toast.makeText(MainActivity.this, "SeekBar in StopTracking", Toast.LENGTH_LONG).show();
                    }
                }
        );
    }

这是一个大问题,伴侣。我们不能为您编写整个过程,但我会提出一些想法。

简单地解释,您可以将一个距离范围与Seekbar的每个级别相关联。

onprogresschanged((可以帮助您。只需使用"进度"参数。

类似:

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    switch(progress){
        case 0:
            range = [some defined range];
        break;
        case 1:
            range = [some defined range];
        break;
        ...
    }
}

然后,您只需与所使用的任何地理系统一起使用该"范围"变量。如果是GraphHopper库,您可以使用:

GeoPoint a = [some geopoint];
GeoPoint b = [some other geopoint];
if (a.distance(b) <= range) {
    // do stuff
}

但是您也可以对Google的库做类似的操作。

让我知道这是否是您想要的。

(欢迎来到Stackoverflow,btw(

最新更新