время показа для судоку в андроиде - PullRequest
0 голосов
/ 26 марта 2012

Мне нужно отобразить время, отмеченное игрой в судоку, время игры должно отображаться на экране. Это значит, что я должен быть в состоянии записать время с момента начала действия судоку до завершения игры. Может кто-нибудь помочь мне, как это сделать в Android.

Ответы [ 2 ]

0 голосов
/ 22 августа 2012

Я использую этот код каждый раз, когда мне нужно отобразить прошедшее время в игре. Сначала у вас есть этот TextView для отображения вашего времени, определенного в вашем xml, ничего особенного в этом нет. Код в вашей игровой активности:

    TextView time;

    long countUp;

    public static Chronometer.OnChronometerTickListener chronListener = new Chronometer.OnChronometerTickListener() {
        String msg;

        @Override
        public void onChronometerTick(Chronometer ch){
            countUp = (SystemClock.elapsedRealtime() - ch.getBase()) / 1000;
            msg = showTime(countUp);
            time.setText("Time: " + msg);
        }           
    };


//a function formatting your time in human readable format, e.g. 05:06
    public static String showTime(long countUp){
        String asText;
        if((countUp % 60) < 10){
            if((countUp / 60) < 10){
                asText = "0" + (countUp / 60) + ":0" + (countUp % 60); 
            } else {
                asText = (countUp / 60) + ":0" + (countUp % 60); 
            }
        } else {
            if ((countUp / 60) < 10){
                asText = "0" + (countUp / 60) + ":" + (countUp % 60);
            } else {
                asText = (countUp / 60) + ":" + (countUp % 60); 
            }
        }
        return asText;
    }

Работает как шарм.

0 голосов
/ 26 марта 2012

Я бы предложил изучить обработчик и метод postDelayed. Это отличный вариант для вторых интервалов, но в моем очень коротком опыте он затягивается примерно за 25 миллисекунд. http://developer.android.com/reference/android/os/Handler.html#postDelayed%28java.lang.Runnable,%20long%29

Затем создайте runnable, который изменяет переменную времени, и обновляет TextView в вашем приложении с новым временем. Это также должно быть отформатировано. http://developer.android.com/reference/java/lang/Runnable.html

Это должно помочь вам понять идею и иметь пример кода: http://www.vogella.de/articles/AndroidPerformance/article.html

Для его реализации вам понадобится способ определить, выиграл ли пользователь, и когда он это сделает, вам нужно удалить обратные вызовы из обработчика, и тогда у вас будет общее время в вашей переменной (используйте длинный ) количество миллисекунд, которые они сыграли.

Не стесняйтесь комментировать вопросы и, надеюсь, я могу помочь вам. Мне потребовалось некоторое время, чтобы понять, как делать эти вещи, поэтому я буду рад указать вам правильное направление, если вы застряли.

...