4

在此处输入图像描述

我试图弄清楚 UI 是如何为 Android 闹钟应用程序设计的。这似乎正在使用 Holo Dark Theme。

包括的屏幕截图是创建/编辑警报Activity屏幕。它看起来类似于Android 设置。是这种情况吗?因为“打开警报”和“振动”行看起来像ChexboxPreferences。“铃声”行看起来像一个RingtonePreference. “时间”行呢?

正如@eric 在对以下答案之一的评论中提到的那样,我正在尝试重新创建与闹钟应用程序类似的界面。我不想发送从我的应用程序启动警报管理器的意图。

“标签”行呢?这很像一个EditText视图。您可以在xml 标记中包含Views和的组合吗?PreferencesPreferenceScreen

还有ActionBar一个垂直管道,我不确定它是如何创建的,但“完成”视图是一个ImageButton

我不完全相信它是首选项的组合,因为警报应用程序可以有多个警报,而不仅仅是一个警报。如果有多个警报并且您不使用多个SharedPreferences文件,那么创建一个内容提供程序来存储与多个警报相关的信息自然是有意义的。

4

3 回答 3

8

股票闹钟应用程序是开源的,因此请自行检查。

偏好布局见这里

<?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>

偏好活动见这里,请注意,我引用的链接不是来自头部修订。

一些亮点:

  • 时间是平淡无奇的android.preference.Preference,靠山TimePickerDialog
  • Ringtoneandroid.preference.RingtonePreference.
  • 重复是android.preference.ListPreference 的定制实现。
  • 警报由静态类com.android.alarmclock.Alarms管理,它使用 Content Providers 存储实际信息。
  • 从 Android 4.0 开始默认使用 Holo 主题,在其他 Android 版本上,您可能会看到不同的主题。请注意,应用程序的实现也可能因不同的 android 版本或设备供应商而有所不同。
于 2012-12-03T02:47:40.250 回答
2

时间偏好没有特定的类。只需创建一个简单的首选项,并在单击首选项时尝试打开 TimePickerDialog。更改时间时更改首选项的摘要。

于 2012-11-23T06:16:05.243 回答
0

你想把这行代码放在列表项点击(时间点击)上

startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));
于 2012-11-23T05:13:28.717 回答