diff --git a/res/drawable-hdpi/ic_list_sync_anim0.png b/res/drawable-hdpi/ic_list_sync_anim0.png
deleted file mode 100755
index dc78905..0000000
--- a/res/drawable-hdpi/ic_list_sync_anim0.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_list_sync_anim1.png b/res/drawable-hdpi/ic_list_sync_anim1.png
deleted file mode 100755
index 5fe6b4f..0000000
--- a/res/drawable-hdpi/ic_list_sync_anim1.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_list_sync_anim2.png b/res/drawable-hdpi/ic_list_sync_anim2.png
deleted file mode 100755
index d9d68ed..0000000
--- a/res/drawable-hdpi/ic_list_sync_anim2.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_list_sync_anim3.png b/res/drawable-hdpi/ic_list_sync_anim3.png
deleted file mode 100755
index 7275c29..0000000
--- a/res/drawable-hdpi/ic_list_sync_anim3.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_anim_holo.png b/res/drawable-hdpi/ic_sync_anim_holo.png
new file mode 100644
index 0000000..bc8dc58
--- /dev/null
+++ b/res/drawable-hdpi/ic_sync_anim_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_error.png b/res/drawable-hdpi/ic_sync_error.png
new file mode 100644
index 0000000..914d44d
--- /dev/null
+++ b/res/drawable-hdpi/ic_sync_error.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_error_holo.png b/res/drawable-hdpi/ic_sync_error_holo.png
new file mode 100644
index 0000000..3e34bd0
--- /dev/null
+++ b/res/drawable-hdpi/ic_sync_error_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_green_holo.png b/res/drawable-hdpi/ic_sync_green_holo.png
new file mode 100644
index 0000000..2588f3d
--- /dev/null
+++ b/res/drawable-hdpi/ic_sync_green_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_grey_holo.png b/res/drawable-hdpi/ic_sync_grey_holo.png
new file mode 100644
index 0000000..4c7060d
--- /dev/null
+++ b/res/drawable-hdpi/ic_sync_grey_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_red_holo.png b/res/drawable-hdpi/ic_sync_red_holo.png
new file mode 100644
index 0000000..b65520d
--- /dev/null
+++ b/res/drawable-hdpi/ic_sync_red_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_list_sync_anim0.png b/res/drawable-mdpi/ic_list_sync_anim0.png
deleted file mode 100644
index 981a72e..0000000
--- a/res/drawable-mdpi/ic_list_sync_anim0.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_list_sync_anim1.png b/res/drawable-mdpi/ic_list_sync_anim1.png
deleted file mode 100644
index 4581ba2..0000000
--- a/res/drawable-mdpi/ic_list_sync_anim1.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_list_sync_anim2.png b/res/drawable-mdpi/ic_list_sync_anim2.png
deleted file mode 100644
index b745916..0000000
--- a/res/drawable-mdpi/ic_list_sync_anim2.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_list_sync_anim3.png b/res/drawable-mdpi/ic_list_sync_anim3.png
deleted file mode 100644
index 43e453d..0000000
--- a/res/drawable-mdpi/ic_list_sync_anim3.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_anim_holo.png b/res/drawable-mdpi/ic_sync_anim_holo.png
new file mode 100644
index 0000000..66db062
--- /dev/null
+++ b/res/drawable-mdpi/ic_sync_anim_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_error.png b/res/drawable-mdpi/ic_sync_error.png
new file mode 100644
index 0000000..2b98bca
--- /dev/null
+++ b/res/drawable-mdpi/ic_sync_error.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_error_holo.png b/res/drawable-mdpi/ic_sync_error_holo.png
new file mode 100644
index 0000000..dd3958e
--- /dev/null
+++ b/res/drawable-mdpi/ic_sync_error_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_green_holo.png b/res/drawable-mdpi/ic_sync_green_holo.png
new file mode 100644
index 0000000..1c981b66
--- /dev/null
+++ b/res/drawable-mdpi/ic_sync_green_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_grey_holo.png b/res/drawable-mdpi/ic_sync_grey_holo.png
new file mode 100644
index 0000000..bb4267f
--- /dev/null
+++ b/res/drawable-mdpi/ic_sync_grey_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_red_holo.png b/res/drawable-mdpi/ic_sync_red_holo.png
new file mode 100644
index 0000000..36fe6b8
--- /dev/null
+++ b/res/drawable-mdpi/ic_sync_red_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_list_sync_anim0.png b/res/drawable-xhdpi/ic_list_sync_anim0.png
deleted file mode 100644
index 9909f6a..0000000
--- a/res/drawable-xhdpi/ic_list_sync_anim0.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_list_sync_anim1.png b/res/drawable-xhdpi/ic_list_sync_anim1.png
deleted file mode 100644
index f751f2a..0000000
--- a/res/drawable-xhdpi/ic_list_sync_anim1.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_list_sync_anim2.png b/res/drawable-xhdpi/ic_list_sync_anim2.png
deleted file mode 100644
index 374db6a..0000000
--- a/res/drawable-xhdpi/ic_list_sync_anim2.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_list_sync_anim3.png b/res/drawable-xhdpi/ic_list_sync_anim3.png
deleted file mode 100644
index ec3fde6..0000000
--- a/res/drawable-xhdpi/ic_list_sync_anim3.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sync_anim_holo.png b/res/drawable-xhdpi/ic_sync_anim_holo.png
new file mode 100644
index 0000000..d315e95
--- /dev/null
+++ b/res/drawable-xhdpi/ic_sync_anim_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sync_error.png b/res/drawable-xhdpi/ic_sync_error.png
new file mode 100644
index 0000000..b9a5357
--- /dev/null
+++ b/res/drawable-xhdpi/ic_sync_error.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sync_error_holo.png b/res/drawable-xhdpi/ic_sync_error_holo.png
new file mode 100644
index 0000000..85f19bf
--- /dev/null
+++ b/res/drawable-xhdpi/ic_sync_error_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sync_green_holo.png b/res/drawable-xhdpi/ic_sync_green_holo.png
new file mode 100644
index 0000000..95e2d7d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_sync_green_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sync_grey_holo.png b/res/drawable-xhdpi/ic_sync_grey_holo.png
new file mode 100644
index 0000000..10cc48a
--- /dev/null
+++ b/res/drawable-xhdpi/ic_sync_grey_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sync_red_holo.png b/res/drawable-xhdpi/ic_sync_red_holo.png
new file mode 100644
index 0000000..c4b9136
--- /dev/null
+++ b/res/drawable-xhdpi/ic_sync_red_holo.png
Binary files differ
diff --git a/res/drawable/ic_list_sync_anim.xml b/res/drawable/ic_list_sync_anim.xml
index b6965c5..e70c300 100644
--- a/res/drawable/ic_list_sync_anim.xml
+++ b/res/drawable/ic_list_sync_anim.xml
@@ -17,12 +17,8 @@
 ** limitations under the License.
 */
 -->
-<animation-list
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:oneshot="false">
-    <item android:drawable="@drawable/ic_list_sync_anim0" android:duration="150" />
-    <item android:drawable="@drawable/ic_list_sync_anim1" android:duration="150" />
-    <item android:drawable="@drawable/ic_list_sync_anim2" android:duration="150" />
-    <item android:drawable="@drawable/ic_list_sync_anim3" android:duration="150" />
-</animation-list>
 
+<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
+    android:drawable="@drawable/ic_sync_anim_holo"
+    android:pivotX="50%"
+    android:pivotY="50%" />
diff --git a/res/layout/account_sync_screen.xml b/res/layout/account_sync_screen.xml
index 5a4bc59..d54d750 100644
--- a/res/layout/account_sync_screen.xml
+++ b/res/layout/account_sync_screen.xml
@@ -37,7 +37,10 @@
     <TextView android:id="@+id/sync_settings_error_info"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:text="@string/sync_is_failing" />
+        android:layout_margin="8dip"
+        android:text="@string/sync_is_failing"
+        android:drawablePadding="8dip"
+        android:drawableLeft="@drawable/ic_sync_error_holo" />
 
     <!--
     <LinearLayout android:id="@+id/remove_account_area"
diff --git a/res/layout/manage_accounts_screen.xml b/res/layout/manage_accounts_screen.xml
index ce86920..2717805 100644
--- a/res/layout/manage_accounts_screen.xml
+++ b/res/layout/manage_accounts_screen.xml
@@ -34,6 +34,9 @@
     <TextView android:id="@+id/sync_settings_error_info"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:text="@string/sync_is_failing" />
+        android:layout_margin="8dip"
+        android:text="@string/sync_is_failing"
+        android:drawablePadding="8dip"
+        android:drawableLeft="@drawable/ic_sync_error_holo" />
 
 </LinearLayout>
diff --git a/res/layout/preference_widget_sync_toggle.xml b/res/layout/preference_widget_sync_toggle.xml
index 6eaa86e..5057aab 100644
--- a/res/layout/preference_widget_sync_toggle.xml
+++ b/res/layout/preference_widget_sync_toggle.xml
@@ -23,34 +23,23 @@
     android:gravity="center_vertical|right">
 
     <ImageView
-        android:id="@+android:id/sync_failed"
-        android:src="@drawable/ic_list_syncerror"
+        android:id="@+id/sync_failed"
+        android:src="@drawable/ic_sync_error_holo"
         android:layout_width="wrap_content"
-        android:layout_marginLeft="6sp"
-        android:layout_marginBottom="2sp"
+        android:layout_marginRight="8dip"
         android:layout_height="wrap_content" />
 
-    <ImageView
-        android:id="@+android:id/sync_active"
+    <com.android.settings.widget.AnimatedImageView
+        android:id="@+id/sync_active"
         android:src="@drawable/ic_list_sync_anim"
         android:layout_width="wrap_content"
-        android:layout_marginLeft="6sp"
-        android:layout_marginBottom="2sp"
-        android:layout_height="wrap_content" />
-
-    <ImageView
-        android:id="@+android:id/sync_pending"
-        android:src="@drawable/ic_list_sync_anim0"
-        android:layout_width="wrap_content"
-        android:layout_marginLeft="6sp"
-        android:layout_marginBottom="2sp"
-        android:layout_height="wrap_content" />
+        android:layout_height="wrap_content"
+        android:layout_marginRight="8dip" />
 
     <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+android:id/checkbox"
+        android:id="@android:id/checkbox"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginRight="4sp"
         android:layout_gravity="center_vertical"
         android:focusable="false"
         android:clickable="false" />
diff --git a/src/com/android/settings/AccountPreference.java b/src/com/android/settings/AccountPreference.java
index f76d5cb..824420d 100644
--- a/src/com/android/settings/AccountPreference.java
+++ b/src/com/android/settings/AccountPreference.java
@@ -112,16 +112,16 @@
         int res;
         switch (status) {
             case SYNC_ENABLED:
-                res = R.drawable.ic_sync_green;
+                res = R.drawable.ic_sync_green_holo;
                 break;
             case SYNC_DISABLED:
-                res = R.drawable.ic_sync_grey;
+                res = R.drawable.ic_sync_grey_holo;
                 break;
             case SYNC_ERROR:
-                res = R.drawable.ic_sync_red;
+                res = R.drawable.ic_sync_red_holo;
                 break;
             default:
-                res = R.drawable.ic_sync_red;
+                res = R.drawable.ic_sync_red_holo;
                 Log.e(TAG, "Unknown sync status: " + status);
         }
         return res;
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index e70cbad..82f9844 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -158,8 +158,6 @@
 
         mErrorInfoView = (TextView) rootView.findViewById(R.id.sync_settings_error_info);
         mErrorInfoView.setVisibility(View.GONE);
-        mErrorInfoView.setCompoundDrawablesWithIntrinsicBounds(
-                getResources().getDrawable(R.drawable.ic_list_syncerror), null, null, null);
 
         mUserId = (TextView) rootView.findViewById(R.id.user_id);
         mProviderId = (TextView) rootView.findViewById(R.id.provider_id);
diff --git a/src/com/android/settings/accounts/ManageAccountsSettings.java b/src/com/android/settings/accounts/ManageAccountsSettings.java
index 05f74dd..4902d8a 100644
--- a/src/com/android/settings/accounts/ManageAccountsSettings.java
+++ b/src/com/android/settings/accounts/ManageAccountsSettings.java
@@ -110,9 +110,6 @@
 
         mErrorInfoView = (TextView)view.findViewById(R.id.sync_settings_error_info);
         mErrorInfoView.setVisibility(View.GONE);
-        mErrorInfoView.setCompoundDrawablesWithIntrinsicBounds(
-                activity.getResources().getDrawable(R.drawable.ic_list_syncerror),
-                null, null, null);
 
         mAutoSyncCheckbox = (CheckBoxPreference) findPreference(AUTO_SYNC_CHECKBOX_KEY);
 
diff --git a/src/com/android/settings/accounts/SyncStateCheckBoxPreference.java b/src/com/android/settings/accounts/SyncStateCheckBoxPreference.java
index 4b9ca81..13081dd 100644
--- a/src/com/android/settings/accounts/SyncStateCheckBoxPreference.java
+++ b/src/com/android/settings/accounts/SyncStateCheckBoxPreference.java
@@ -16,17 +16,15 @@
 
 package com.android.settings.accounts;
 
-import com.android.settings.R;
-
+import android.accounts.Account;
 import android.content.Context;
-import android.graphics.drawable.AnimationDrawable;
-import android.os.Handler;
 import android.preference.CheckBoxPreference;
 import android.util.AttributeSet;
 import android.view.View;
-import android.widget.ImageView;
 import android.widget.TextView;
-import android.accounts.Account;
+
+import com.android.settings.R;
+import com.android.settings.widget.AnimatedImageView;
 
 public class SyncStateCheckBoxPreference extends CheckBoxPreference {
 
@@ -59,35 +57,16 @@
     @Override
     public void onBindView(View view) {
         super.onBindView(view);
-        ImageView syncActiveView = (ImageView) view.findViewById(R.id.sync_active);
-        View syncPendingView = view.findViewById(R.id.sync_pending);
-        View syncFailedView = view.findViewById(R.id.sync_failed);
+        final AnimatedImageView syncActiveView = (AnimatedImageView) view.findViewById(
+                R.id.sync_active);
+        final View syncFailedView = view.findViewById(R.id.sync_failed);
 
-        syncActiveView.setVisibility(mIsActive ? View.VISIBLE : View.GONE);
-        final AnimationDrawable anim = (AnimationDrawable) syncActiveView.getDrawable();
-        boolean showError;
-        boolean showPending;
-        if (mIsActive) {
-            new Handler(getContext().getMainLooper()).post(new Runnable() {
-                public void run() {
-                    anim.start();
-                }
-            });
-            showPending = false;
-            showError = false;
-        } else {
-            anim.stop();
-            if (mIsPending) {
-                showPending = true;
-                showError = false;
-            } else {
-                showPending = false;
-                showError = mFailed;
-            }
-        }
+        final boolean activeVisible = mIsActive || mIsPending;
+        syncActiveView.setVisibility(activeVisible ? View.VISIBLE : View.GONE);
+        syncActiveView.setAnimating(mIsActive);
 
-        syncFailedView.setVisibility(showError ? View.VISIBLE : View.GONE);
-        syncPendingView.setVisibility((showPending && !mIsActive) ? View.VISIBLE : View.GONE);
+        final boolean failedVisible = mFailed && !activeVisible;
+        syncFailedView.setVisibility(failedVisible ? View.VISIBLE : View.GONE);
 
         View checkBox = view.findViewById(android.R.id.checkbox);
         if (mOneTimeSyncMode) {
diff --git a/src/com/android/settings/widget/AnimatedImageView.java b/src/com/android/settings/widget/AnimatedImageView.java
new file mode 100644
index 0000000..671d718
--- /dev/null
+++ b/src/com/android/settings/widget/AnimatedImageView.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.widget;
+
+import android.content.Context;
+import android.graphics.drawable.AnimatedRotateDrawable;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageView;
+
+public class AnimatedImageView extends ImageView {
+    private AnimatedRotateDrawable mDrawable;
+    private boolean mAnimating;
+
+    public AnimatedImageView(Context context) {
+        super(context);
+    }
+
+    public AnimatedImageView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    private void updateDrawable() {
+        if (isShown() && mDrawable != null) {
+            mDrawable.stop();
+        }
+        final Drawable drawable = getDrawable();
+        if (drawable instanceof AnimatedRotateDrawable) {
+            mDrawable = (AnimatedRotateDrawable) drawable;
+            // TODO: define in drawable xml once we have public attrs.
+            mDrawable.setFramesCount(56);
+            mDrawable.setFramesDuration(32);
+            if (isShown() && mAnimating) {
+                mDrawable.start();
+            }
+        } else {
+            mDrawable = null;
+        }
+    }
+
+    private void updateAnimating() {
+        if (mDrawable != null) {
+            if (isShown() && mAnimating) {
+                mDrawable.start();
+            } else {
+                mDrawable.stop();
+            }
+        }
+    }
+
+    @Override
+    public void setImageDrawable(Drawable drawable) {
+        super.setImageDrawable(drawable);
+        updateDrawable();
+    }
+
+    @Override
+    public void setImageResource(int resid) {
+        super.setImageResource(resid);
+        updateDrawable();
+    }
+
+    @Override
+    public void onAttachedToWindow() {
+        super.onAttachedToWindow();
+        updateAnimating();
+    }
+
+    @Override
+    public void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        updateAnimating();
+    }
+
+    public void setAnimating(boolean animating) {
+        mAnimating = animating;
+        updateAnimating();
+    }
+
+    @Override
+    protected void onVisibilityChanged(View changedView, int vis) {
+        super.onVisibilityChanged(changedView, vis);
+        updateAnimating();
+    }
+}
