Solution 1:

The stock alarm clock app is open source, so check it out by yourself.

Preference Layout see here:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:title="@string/set_alarm">
    <CheckBoxPreference android:key="on" 
        android:title="@string/enable"/>
    <Preference android:key="time" 
        android:title="@string/time"/>
    <com.android.alarmclock.AlarmPreference
        android:key="alarm" 
        android:title="@string/alert"
        android:ringtoneType="alarm"
        android:showDefault="false"
        android:showSilent="false" />
    <CheckBoxPreference android:key="vibrate" 
        android:title="@string/alarm_vibrate"/>
    <com.android.alarmclock.RepeatPreference
        android:key="setRepeat" 
        android:title="@string/alarm_repeat" />
    <EditTextPreference android:key="label"
        android:title="@string/label"
        android:dialogTitle="@string/label" />
</PreferenceScreen>

Preference activity see here, note that, the links I referenced are not from the head revision.

Some highlights:

  • Time is a plain android.preference.Preference, backed by TimePickerDialog.
  • Ringtone is a customized implementation of android.preference.RingtonePreference.
  • Repeat is a customized implementation of android.preference.ListPreference.
  • Alarms are managed by a static class com.android.alarmclock.Alarms which use Content Providers store the actual information.
  • Holo theme is used by default since Android 4.0, on other Android version, you may see different theme. Note that the app implementation may also changed by different android version or device vendor.

Solution 2:

There is not a particular class for the time preference. Just create a simple Preference, and try to open a TimePickerDialog when the preference is clicked. Change the summary of the preference when time is changed.