系统主界面本来是4个fragment, 分别是alarm, clock, timer, stopwatch。
现在应用写不了闹钟app,我直接让他在需要闹钟的地方,跳到系统闹钟DeskClock的设置闹钟界面。
主要修改:
a. 保留一个alarm界面, 去掉clock, timer, stopwatch
b. 去掉了一些界面不和谐的地方
修改很简单,主要是裁剪调一些ui的功能。
上代码,可以根据ui追追流程:
diff --git a/packages/apps/DeskClock/res/layout/alarm_time_expanded.xml b/packages/apps/DeskClock/res/layout/alarm_time_expanded.xml
index 38d24de..7ef5d8f 100644
--- a/packages/apps/DeskClock/res/layout/alarm_time_expanded.xml
+++ b/packages/apps/DeskClock/res/layout/alarm_time_expanded.xml
@@ -80,7 +80,7 @@
android:textColor="@color/clock_white"
android:textSize="@dimen/alarm_text_font_size" />
- <CheckBox
+ <!--CheckBox
android:id="@+id/vibrate_onoff"
android:layout_width="wrap_content"
android:layout_height="@dimen/touch_target_min_size"
@@ -89,8 +89,9 @@
android:includeFontPadding="false"
android:paddingStart="@dimen/alarm_horizontal_padding"
android:text="@string/alarm_vibrate"
+ android:visibility="visible"
android:textColor="@color/white"
- android:textSize="@dimen/alarm_text_font_size" />
+ android:textSize="@dimen/alarm_text_font_size" /-->
</LinearLayout>
diff --git a/packages/apps/DeskClock/res/values/colors.xml b/packages/apps/DeskClock/res/values/colors.xml
index 1ca6960..ae0f87b 100644
--- a/packages/apps/DeskClock/res/values/colors.xml
+++ b/packages/apps/DeskClock/res/values/colors.xml
@@ -43,6 +43,8 @@
<color name="clock_white">#ffffff</color>
<color name="clock_gray">#B3ffffff</color>
+
+ <!-- qyc background color -->
<color name="default_background">#1A237E</color>
<color name="status_bar">#66000000</color>
diff --git a/packages/apps/DeskClock/src/com/android/deskclock/DeskClock.java b/packages/apps/DeskClock/src/com/android/deskclock/DeskClock.java
index f04b8d6..bd6536e 100644
--- a/packages/apps/DeskClock/src/com/android/deskclock/DeskClock.java
+++ b/packages/apps/DeskClock/src/com/android/deskclock/DeskClock.java
@@ -72,7 +72,7 @@ public class DeskClock extends BaseActivity
public static final int TIMER_TAB_INDEX = 2;
public static final int STOPWATCH_TAB_INDEX = 3;
- private final ActionBarMenuManager mActionBarMenuManager = new ActionBarMenuManager(this);
+ //private final ActionBarMenuManager mActionBarMenuManager = new ActionBarMenuManager(this);
private TabLayout mTabLayout;
private RtlViewPager mViewPager;
@@ -113,10 +113,14 @@ public class DeskClock extends BaseActivity
alarmTab.setIcon(R.drawable.ic_tab_alarm).setContentDescription(R.string.menu_alarm);
mTabsAdapter.addTab(alarmTab, AlarmClockFragment.class, ALARM_TAB_INDEX);
+/* qyc, cut 3 items, clock, timer stopwatch
+
final Tab clockTab = mTabLayout.newTab();
clockTab.setIcon(R.drawable.ic_tab_clock).setContentDescription(R.string.menu_clock);
mTabsAdapter.addTab(clockTab, ClockFragment.class, CLOCK_TAB_INDEX);
+
+
final Tab timerTab = mTabLayout.newTab();
timerTab.setIcon(R.drawable.ic_tab_timer).setContentDescription(R.string.menu_timer);
mTabsAdapter.addTab(timerTab, TimerFragment.class, TIMER_TAB_INDEX);
@@ -125,7 +129,7 @@ public class DeskClock extends BaseActivity
stopwatchTab.setIcon(R.drawable.ic_tab_stopwatch)
.setContentDescription(R.string.menu_stopwatch);
mTabsAdapter.addTab(stopwatchTab, StopwatchFragment.class, STOPWATCH_TAB_INDEX);
-
+*/
mTabLayout.getTabAt(mSelectedTab).select();
mViewPager.setCurrentItem(mSelectedTab);
mTabsAdapter.notifySelectedPage(mSelectedTab);
@@ -137,9 +141,9 @@ public class DeskClock extends BaseActivity
setVolumeControlStream(AudioManager.STREAM_ALARM);
if (icicle != null) {
- mSelectedTab = icicle.getInt(KEY_SELECTED_TAB, CLOCK_TAB_INDEX);
+ mSelectedTab = icicle.getInt(KEY_SELECTED_TAB, ALARM_TAB_INDEX);
} else {
- mSelectedTab = CLOCK_TAB_INDEX;
+ mSelectedTab = ALARM_TAB_INDEX;
// Set the background color to initially match the theme value so that we can
// smoothly transition to the dynamic color.
@@ -195,15 +199,19 @@ public class DeskClock extends BaseActivity
});
// Configure the menu item controllers.
+
+/*qyc add, cut MenuItem
+
mActionBarMenuManager
.addMenuItemController(new SettingMenuItemController(this))
.addMenuItemController(new NightModeMenuItemController(this))
.addMenuItemController(MenuItemControllerFactory.getInstance()
.buildMenuItemControllers(this));
+*/
// Inflate the menu during creation to avoid a double layout pass. Otherwise, the menu
// inflation occurs *after* the initial draw and a second layout pass adds in the menu.
- onCreateOptionsMenu(toolbar.getMenu());
+ //onCreateOptionsMenu(toolbar.getMenu());
// We need to update the system next alarm time on app startup because the
// user might have clear our data.
@@ -244,7 +252,7 @@ public class DeskClock extends BaseActivity
super.onSaveInstanceState(outState);
outState.putInt(KEY_SELECTED_TAB, mTabLayout.getSelectedTabPosition());
}
-
+/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
mActionBarMenuManager.createOptionsMenu(menu, getMenuInflater());
@@ -265,7 +273,7 @@ public class DeskClock extends BaseActivity
}
return super.onOptionsItemSelected(item);
}
-
+*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Recreate the activity if any settings have been changed
diff --git a/packages/apps/DeskClock/src/com/android/deskclock/alarms/AlarmTimeClickHandler.java b/packages/apps/DeskClock/src/com/android/deskclock/alarms/AlarmTimeClickHandler.java
index 82952eb..abc9d75 100755
--- a/packages/apps/DeskClock/src/com/android/deskclock/alarms/AlarmTimeClickHandler.java
+++ b/packages/apps/DeskClock/src/com/android/deskclock/alarms/AlarmTimeClickHandler.java
@@ -172,7 +172,10 @@ public final class AlarmTimeClickHandler {
}
public void onRingtoneClicked(Alarm alarm) {
- launchRingTonePicker(alarm);
+ //launchRingTonePicker(alarm);
+ mSelectedAlarm = alarm;
+ mSelectSource = AlarmClockFragment.SEL_SRC_RINGTONE;
+ sendPickIntent();
}
public void onEditLabelClicked(Alarm alarm) {
@@ -210,6 +213,7 @@ public final class AlarmTimeClickHandler {
private void launchRingTonePicker(Alarm alarm) {
mSelectedAlarm = alarm;
RingTonePickerDialogListener listener = new RingTonePickerDialogListener((AlarmClockFragment)mFragment);
+
new AlertDialog.Builder(mFragment.getActivity())
.setTitle(mFragment.getResources().getString(R.string.alarm_select))
.setItems(
@@ -219,6 +223,7 @@ public final class AlarmTimeClickHandler {
mFragment.getResources().getString(
R.string.alarm_select_external) },
listener).show();
+
}
private class RingTonePickerDialogListener implements DialogInterface.OnClickListener {
@@ -229,9 +234,10 @@ public final class AlarmTimeClickHandler {
}
public void onClick(DialogInterface dialog, int which) {
+ which = AlarmClockFragment.SEL_SRC_RINGTONE;
switch (which) {
case AlarmClockFragment.SEL_SRC_RINGTONE:
- case AlarmClockFragment.SEL_SRC_EXTERNAL:
+ //case AlarmClockFragment.SEL_SRC_EXTERNAL:
mSelectSource = which;
sendPickIntent();
break;
@@ -244,7 +250,8 @@ public final class AlarmTimeClickHandler {
private void sendPickIntent() {
LogUtils.d(TAG, "sendPickIntent is called, mSelectSource = " + mSelectSource);
- if (mSelectSource == AlarmClockFragment.SEL_SRC_RINGTONE) {
+ //if (mSelectSource == AlarmClockFragment.SEL_SRC_RINGTONE) {
+ if (true) {
final Uri oldRingtone = Alarm.NO_RINGTONE_URI.equals(mSelectedAlarm.alert) ? null : mSelectedAlarm.alert;
final Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, oldRingtone);
diff --git a/packages/apps/DeskClock/src/com/android/deskclock/alarms/dataadapter/ExpandedAlarmViewHolder.java b/packages/apps/DeskClock/src/com/android/deskclock/alarms/dataadapter/ExpandedAlarmViewHolder.java
index c4c9bb0..3176e89 100644
--- a/packages/apps/DeskClock/src/com/android/deskclock/alarms/dataadapter/ExpandedAlarmViewHolder.java
+++ b/packages/apps/DeskClock/src/com/android/deskclock/alarms/dataadapter/ExpandedAlarmViewHolder.java
@@ -49,7 +49,7 @@ public final class ExpandedAlarmViewHolder extends AlarmTimeViewHolder {
public final TextView editLabel;
public final LinearLayout repeatDays;
public final CompoundButton[] dayButtons = new CompoundButton[7];
- public final CheckBox vibrate;
+ //public final CheckBox vibrate;
public final TextView ringtone;
public final Button delete;
public final View preemptiveDismissContainer;
@@ -81,7 +81,7 @@ public final class ExpandedAlarmViewHolder extends AlarmTimeViewHolder {
delete = (Button) itemView.findViewById(R.id.delete);
repeat = (CheckBox) itemView.findViewById(R.id.repeat_onoff);
- vibrate = (CheckBox) itemView.findViewById(R.id.vibrate_onoff);
+ //vibrate = (CheckBox) itemView.findViewById(R.id.vibrate_onoff);
ringtone = (TextView) itemView.findViewById(R.id.choose_ringtone);
editLabel = (TextView) itemView.findViewById(R.id.edit_label);
repeatDays = (LinearLayout) itemView.findViewById(R.id.repeat_days);
@@ -129,12 +129,14 @@ public final class ExpandedAlarmViewHolder extends AlarmTimeViewHolder {
}
});
// Vibrator checkbox handler
+/*
vibrate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alarmTimeClickHandler.setAlarmVibrationEnabled(mAlarm, ((CheckBox) v).isChecked());
}
});
+*/
// Ringtone editor handler
ringtone.setOnClickListener(new View.OnClickListener() {
@Override
@@ -223,10 +225,10 @@ public final class ExpandedAlarmViewHolder extends AlarmTimeViewHolder {
private void bindVibrator(Alarm alarm) {
if (!mHasVibrator) {
- vibrate.setVisibility(View.INVISIBLE);
+ //vibrate.setVisibility(View.INVISIBLE);
} else {
- vibrate.setVisibility(View.VISIBLE);
- vibrate.setChecked(alarm.vibrate);
+ //vibrate.setVisibility(View.VISIBLE);
+ //vibrate.setChecked(alarm.vibrate);
}
}
}
diff --git a/packages/apps/DeskClock/src/com/android/deskclock/settings/DefaultAlarmToneDialog.java b/packages/apps/DeskClock/src/com/android/deskclock/settings/DefaultAlarmToneDialog.java
index 50e7bfe..c177de8 100755
--- a/packages/apps/DeskClock/src/com/android/deskclock/settings/DefaultAlarmToneDialog.java
+++ b/packages/apps/DeskClock/src/com/android/deskclock/settings/DefaultAlarmToneDialog.java
@@ -109,9 +109,9 @@ public class DefaultAlarmToneDialog extends DialogPreference {
.setItems(
new String[] {
mContext.getResources().getString(
- R.string.alarm_select_ringtone),
+ R.string.alarm_select_ringtone)/*,
mContext.getResources().getString(
- R.string.alarm_select_external) },
+ R.string.alarm_select_external) */},
new OnClickListener() {
@Override
跳转:
private void startAlarm()
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT,"com.android.deskclock.AlarmClockFragment");//要启动的fragment
// intent.putExtra(PreferenceActivity.EXTRA_NO_HEADERS,true);
intent.setComponent(new ComponentName("com.android.deskclock", "com.android.deskclock.DeskClock")); //包名,要启动fragment所依赖的Activity
getApplicationContext().startActivity(intent);
}