2

我想创建一个 android 应用程序,它有一个搜索栏,可以像 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();
                    }
                }
        );
    }
4

1 回答 1

0

这是个大问题,伙计。我们无法为您编写整个代码,但我会提出一些想法。

简单地说,您可以将距离范围与 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
}

但是你也可以用谷歌的图书馆做类似的事情。

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

(欢迎来到 StackOverflow,顺便说一句)

于 2018-04-23T16:36:35.400 回答