Selector de horas / minutos para el temporizador de cuenta atrás de Android

Estoy tratando de implementar algo como un temporizador de cuenta regresiva que reproduce una alarma en 0. Quiero ser capaz de establecer la cantidad de tiempo que esperar antes de que el temporizador se apaga y me pregunto si hay un elemento de interfaz de usuario o elemento que proporciona Este tipo de funcionalidad de selección.

Básicamente, ¿tiene Android algo como la selección del iPhone spinwheel? ¿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.

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

Puede usar el valor predeterminado TimePickerDialog y reemplazar el método onTimeChanged para actualizar el título usted 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; } } 

Sí, puedes cortar uno juntos. Es una clara posibilidad de que este código tendrá una vida útil corta aunque debido a 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 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" /> 

SetCurrent set es el índice del selector que en el caso de foo significa un valor de "$ 07". SetRange establece los valores que se mostrarán en el selector.

Buena suerte.

  • ¿Hay una manera de desactivar / editar el desvanecimiento que una vista de lista tiene en sus bordes?
  • Cómo deshacerse completamente de la GUI de una actividad (evitar una pantalla en negro)
  • Ventaja de ListFragment sobre un ListView o Fragmento normal
  • Cómo configurar el encabezado y el pie de página en android?
  • Añadir dinámicamente una vista al diseño de la actividad
  • PlacePicker.IntentBuilder se cierra inmediatamente después de abrir
  • Encabezados ListView sin separadores de elementos de lista
  • Uso de TouchScreens para el control de juegos
  • OnCreateDrawableState nunca llama
  • Android: Un buen menú de configuración (estándar)
  • Android: ¿Ajusta la pantalla cuando aparece el teclado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.