From 79edc4680fcfb37cf73cc50220f16d77cc3aa718 Mon Sep 17 00:00:00 2001 From: Michael Chan Date: Mon, 28 Sep 2009 16:50:46 -0700 Subject: [PATCH] b/2113463 Fixed Flickering of screen when we move from month view to day view and vice versa Change-Id: I2f96578f2697225182f85c49efe499337151a039 --- res/layout/contact_item.xml | 2 +- src/com/android/calendar/AgendaActivity.java | 8 ++++---- src/com/android/calendar/CalendarActivity.java | 21 +++++++++++---------- src/com/android/calendar/MonthActivity.java | 22 ++++++++++++---------- src/com/android/calendar/MonthView.java | 4 ++-- src/com/android/calendar/Navigator.java | 3 ++- src/com/android/calendar/WeekActivity.java | 2 +- 7 files changed, 33 insertions(+), 29 deletions(-) diff --git a/res/layout/contact_item.xml b/res/layout/contact_item.xml index 5aa76f6..b1b55b0 100644 --- a/res/layout/contact_item.xml +++ b/res/layout/contact_item.xml @@ -59,7 +59,7 @@ diff --git a/src/com/android/calendar/AgendaActivity.java b/src/com/android/calendar/AgendaActivity.java index 82ec55b..b414033 100644 --- a/src/com/android/calendar/AgendaActivity.java +++ b/src/com/android/calendar/AgendaActivity.java @@ -81,7 +81,7 @@ public class AgendaActivity extends Activity implements Navigator { @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); - + // Eliminate extra GCs during startup by setting the initial heap size to 4MB. // TODO: We should restore the old heap size once the activity reaches the idle state VMRuntime.getRuntime().setMinimumHeapSize(INITIAL_HEAP_SIZE); @@ -127,7 +127,7 @@ public class AgendaActivity extends Activity implements Navigator { long time = Utils.timeFromIntentInMillis(intent); if (time > 0) { mTime.set(time); - goTo(mTime); + goTo(mTime, false); } } @@ -216,10 +216,10 @@ public class AgendaActivity extends Activity implements Navigator { public void goToToday() { Time now = new Time(); now.set(System.currentTimeMillis()); - goTo(now); + goTo(now, true); } - public void goTo(Time time) { + public void goTo(Time time, boolean animate) { mAgendaListView.goTo(time, false); } diff --git a/src/com/android/calendar/CalendarActivity.java b/src/com/android/calendar/CalendarActivity.java index f5b1743..b44d519 100644 --- a/src/com/android/calendar/CalendarActivity.java +++ b/src/com/android/calendar/CalendarActivity.java @@ -130,7 +130,7 @@ public class CalendarActivity extends Activity implements Navigator { if (timeMillis > 0) { Time time = new Time(); time.set(timeMillis); - goTo(time); + goTo(time, false); } } @@ -183,15 +183,16 @@ public class CalendarActivity extends Activity implements Navigator { } /* Navigator interface methods */ - public void goTo(Time time) { - CalendarView current = (CalendarView) mViewSwitcher.getCurrentView(); - - if (current.getSelectedTime().before(time)) { - mViewSwitcher.setInAnimation(mInAnimationForward); - mViewSwitcher.setOutAnimation(mOutAnimationForward); - } else { - mViewSwitcher.setInAnimation(mInAnimationBackward); - mViewSwitcher.setOutAnimation(mOutAnimationBackward); + public void goTo(Time time, boolean animate) { + if (animate) { + CalendarView current = (CalendarView) mViewSwitcher.getCurrentView(); + if (current.getSelectedTime().before(time)) { + mViewSwitcher.setInAnimation(mInAnimationForward); + mViewSwitcher.setOutAnimation(mOutAnimationForward); + } else { + mViewSwitcher.setInAnimation(mInAnimationBackward); + mViewSwitcher.setOutAnimation(mOutAnimationBackward); + } } CalendarView next = (CalendarView) mViewSwitcher.getNextView(); diff --git a/src/com/android/calendar/MonthActivity.java b/src/com/android/calendar/MonthActivity.java index e186875..7bb80c4 100644 --- a/src/com/android/calendar/MonthActivity.java +++ b/src/com/android/calendar/MonthActivity.java @@ -84,7 +84,7 @@ public class MonthActivity extends Activity implements ViewSwitcher.ViewFactory, } /* Navigator interface methods */ - public void goTo(Time time) { + public void goTo(Time time, boolean animate) { TextView title = (TextView) findViewById(R.id.title); title.setText(Utils.formatMonthYear(time)); @@ -97,14 +97,16 @@ public class MonthActivity extends Activity implements ViewSwitcher.ViewFactory, // two adjacent months. // This is faster than calling getSelectedTime() because we avoid // a call to Time#normalize(). - int currentMonth = currentTime.month + currentTime.year * 12; - int nextMonth = time.month + time.year * 12; - if (nextMonth < currentMonth) { - mSwitcher.setInAnimation(mInAnimationPast); - mSwitcher.setOutAnimation(mOutAnimationPast); - } else { - mSwitcher.setInAnimation(mInAnimationFuture); - mSwitcher.setOutAnimation(mOutAnimationFuture); + if (animate) { + int currentMonth = currentTime.month + currentTime.year * 12; + int nextMonth = time.month + time.year * 12; + if (nextMonth < currentMonth) { + mSwitcher.setInAnimation(mInAnimationPast); + mSwitcher.setOutAnimation(mOutAnimationPast); + } else { + mSwitcher.setInAnimation(mInAnimationFuture); + mSwitcher.setOutAnimation(mOutAnimationFuture); + } } MonthView next = (MonthView) mSwitcher.getNextView(); @@ -264,7 +266,7 @@ public class MonthActivity extends Activity implements ViewSwitcher.ViewFactory, if (timeMillis > 0) { Time time = new Time(); time.set(timeMillis); - goTo(time); + goTo(time, false); } } diff --git a/src/com/android/calendar/MonthView.java b/src/com/android/calendar/MonthView.java index 311dcfe..13f6abc 100644 --- a/src/com/android/calendar/MonthView.java +++ b/src/com/android/calendar/MonthView.java @@ -302,7 +302,7 @@ public class MonthView extends View implements View.OnCreateContextMenuListener time.month -= 1; } time.normalize(true); - mParentActivity.goTo(time); + mParentActivity.goTo(time, true); return true; } @@ -1346,7 +1346,7 @@ public class MonthView extends View implements View.OnCreateContextMenuListener if (other != null) { other.normalize(true /* ignore DST */); - mNavigator.goTo(other); + mNavigator.goTo(other, true); } else if (redraw) { mRedrawScreen = true; invalidate(); diff --git a/src/com/android/calendar/Navigator.java b/src/com/android/calendar/Navigator.java index e05a603..c8de34b 100644 --- a/src/com/android/calendar/Navigator.java +++ b/src/com/android/calendar/Navigator.java @@ -28,8 +28,9 @@ public interface Navigator { /** * Changes the view to include the given time. * @param time the desired time to view. + * @animate enable animation */ - void goTo(Time time); + void goTo(Time time, boolean animate); /** * Changes the view to include today's date. diff --git a/src/com/android/calendar/WeekActivity.java b/src/com/android/calendar/WeekActivity.java index 54bee5d..43015f6 100644 --- a/src/com/android/calendar/WeekActivity.java +++ b/src/com/android/calendar/WeekActivity.java @@ -62,7 +62,7 @@ public class WeekActivity extends CalendarActivity implements ViewSwitcher.ViewF if (timeMillis > 0) { Time time = new Time(); time.set(timeMillis); - goTo(time); + goTo(time, false); } } -- 2.11.0