点击某个按钮显示3 2 1 倒计时(地图上的倒计时与计算速度 时间 距离)

来源:互联网 发布:java 性能权威指南 编辑:程序博客网 时间:2024/05/17 09:35
//当点击开始按钮时,开始倒计时,添加监听器,    tvAction.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                try {                    TextView tvAction = (TextView) v;                    String text = tvAction.getText().toString();                    // 判断是开始还是停止                    if ("开始".equals(text)) {                        // 创建 DiaLog显示 3,2,1                          counterDialog = new AlertDialog.Builder(getActivity()).create();                        View showCounterView = View.inflate(getActivity(),                                R.layout.activity_show_counter, null);                        final TextView tvCounter = (TextView) showCounterView                                .findViewById(R.id.tv_show_count);                        counterDialog.setView(showCounterView);                        counterDialog.show();                        //设置 3 2 1 数字显示的时间间隔 延迟多少毫秒                        handler.postDelayed(new Runnable() {                            @Override                            public void run() {                                try {                                    count = count - 1;                                    tvCounter.setText(String.valueOf(count));                                    if (count > 0) {                                        handler.postDelayed(this, 500);                                    } else {                                        counterDialog.dismiss();                                        count = 3;                                        //显示另外一个布局 开始设置 时间,距离 速度了                                        showRecorder();                                    }                                } catch (Exception e) {                                    e.printStackTrace();                                }                            }                        }, 500);                        tvAction.setText("结束");                    } else if ("结束".equals(text)) {                        linearLayout.setVisibility(View.GONE);                        handler.removeCallbacks(runnable);                        positionList.clear();                        baiduMap.clear();                        tvAction.setText("开始");                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        });

开始计时, 显示 时间,运动的距离,与速度

private void showRecorder() {        linearLayout.setVisibility(View.VISIBLE);        // 显示时间        // 显示时间控件        final Chronometer chronometer = (Chronometer) view                .findViewById(R.id.chronometer1);        // 对时间控件设置基本时间,显示出来是00        chronometer.setBase(SystemClock.elapsedRealtime());        chronometer.start();        final TextView tvDistance = (TextView) view                .findViewById(R.id.tv_distance);        tvDistance.setText("0:0");        final TextView tvSpeed = (TextView) view                .findViewById(R.id.tv_recorder_speed);        tvSpeed.setText("0:0");        runnable = new Runnable() {            @Override            public void run() {                try {                    // 计算公里                    double distance = 0;                    if (positionList.size() >= 2) {                        for (int i = 0; i < positionList.size() - 1; i++) {                            // 第一个点 纬度                            double latitude1 = positionList.get(i).latitude;                            // 第一个点的经度                            double longitude1 = positionList.get(i).longitude;                            // 第二个点的纬度                            double latitude2 = positionList.get(i + 1).latitude;                            // 第二个点的经度                            double longitude2 = positionList.get(i + 1).longitude;                            distance = distance                                    + BaiduMapUtil.GetDistance(longitude1,                                            latitude1, longitude2, latitude2);                        }//在工具类中 有计算距离的类                        // 转成公里                        String strDistance = String.valueOf(distance / 1000);                        if (strDistance.contains(".")) {                            strDistance = strDistance.substring(0,                                    strDistance.indexOf(".") + 3);                        }                        tvDistance.setText(strDistance);                    }                    // 得时间60:00 [60,00]                    String time = chronometer.getText().toString();                    Log.i("计算时间", time + "," + System.currentTimeMillis());                    double minute = Integer.parseInt(time.split("\\:")[0]);                    double second = Integer.parseInt(time.split("\\:")[1]);                    if ((minute > 0 || second > 0) && distance > 0) {                        // 计算速度                        double speed = (distance / 1000)                                / ((minute * 60 + second) / (60 * 60));                        String strSpeed = String.valueOf(speed);                        if (strSpeed.contains(".")) {                            strSpeed = strSpeed.substring(0,                                    strSpeed.indexOf(".") + 3);                        }                        tvSpeed.setText(strSpeed);                    }                } catch (Exception e) {                    // TODO: handle exception                } finally {                    handler.postDelayed(this, 1000);                }            }        };        //没隔一秒计算一次        handler.postDelayed(runnable, 1000);    }
0 0
原创粉丝点击