2010-09-16 7 views
8

Estoy tratando de implementar algo así como un temporizador de cuenta regresiva que activa una alarma en 0. Quiero ser capaz de establecer la cantidad de tiempo de espera antes de que se apague el temporizador y yo ' Me pregunto si hay un widget o elemento UI que brinde este tipo de funcionalidad de selección.selector de hora/minuto para el temporizador de cuenta atrás de Android

Básicamente, ¿Android tiene algo así como la rueda de selección del iPhone? ¿O hay algún tipo de timepicker que permite la selección de un número arbitrario de horas y minutos? El widget timepicker en Android tiene una etiqueta AM/PM innecesaria.

¿Debo implementar mi propia interfaz de usuario personalizada para lograr esto?

Respuesta

1

Sí, puedes hackear uno juntos. Es una clara posibilidad de que este código tenga una vida corta debido a los cambios en la API.

int foo = 7; 
Object o = findViewById(ids[i]); 
Class<? extends Object> c = o.getClass(); 
Method m = c.getMethod("setCurrent", int.class); 
m.invoke(o, foo); 

String[] displayedValues = new String[] { "$00", "$01", "$02", "$03", "$04", 
         "$05", "$06", "$07", "$08", "$09", "$10", "$11", 
         "$12", "$13", "$14", "$15", "$16", "$17", "$18", "$19", "$20", "$21", 
         "$22", "$23", "$24", "$25"}; 
Method m = c.getMethod("setRange", int.class, int.class, String[].class); 
M.invoke(o, 0, 25, displayedValues); 

Y luego dejar caer un par de estos en su diseño:

<com.android.internal.widget.NumberPicker 
android:id="@+id/picker1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" /> 

del conjunto setCurrent el índice del selector, que en el caso de foo significa un valor de "$ 07". setRange establece los valores para mostrar en el selector.

Buena suerte.

+0

lo que es el "estado"? – pengwang

+0

pengwang, espero que la edición aclare las cosas. avísame si no es así. –

9

Puede utilizar el valor predeterminado TimePickerDialog y reemplazar el método onTimeChanged para actualizar el título mismo:

public class DurationPickerDialog extends TimePickerDialog { 

    public DurationPickerDialog(Context context, int theme, 
     OnTimeSetListener callBack, int hour, int minute) { 
     super(context, theme, callBack, hour, minute, true); 
     updateTitle(hour, minute); 
    } 

    public DurationPickerDialog(Context context, OnTimeSetListener callBack, 
     int hour, int minute) { 
     super(context, callBack, hour, minute, true); 
     updateTitle(hour, minute); 
    } 

    @Override 
    public void onTimeChanged(TimePicker view, int hour, int minute) { 
     super.onTimeChanged(view, hour, minute); 
     updateTitle(hour, minute); 
    } 

    public void updateTitle(int hour, int minute) { 
     setTitle("Duration: " + hour + ":" + formatNumber(minute)); 
    } 

    private String formatNumber(int number) { 
     String result = ""; 
     if (number < 10) { 
      result += "0"; 
     } 
     result += number; 

     return result; 
    } 
} 
+1

Estoy usando samsung s3. Después de hacer clic en establecer la hora del botón se estableció y el diálogo se descarta, pero nunca se muestra de nuevo, pero si hago clic en cancelar el cuadro de diálogo del botón funciona bien. – Deepak

+0

Por lo que yo sé, esto no permitirá una configuración de más de 24 horas de duración. –

Cuestiones relacionadas