Merge "Use main looper to post start animation commands This is a workaround till we find a better solution. Posting start() on mail looper will make sure the animation starts but animation can stop randomly when the list gets refreshed which happens for example any time the user interacts with the list by check/uncheking boxes. This is because the list rebuilds itself and views gets detached/attached which binds to a new view."

This commit is contained in:
Alon Albert
2011-02-08 10:14:01 -08:00
committed by Android (Google) Code Review

View File

@@ -20,6 +20,7 @@ import com.android.settings.R;
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;
@@ -40,7 +41,7 @@ public class SyncStateCheckBoxPreference extends CheckBoxPreference {
* toggling whether the provider will do autosync.
*/
private boolean mOneTimeSyncMode = false;
public SyncStateCheckBoxPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setWidgetLayoutResource(R.layout.preference_widget_sync_toggle);
@@ -67,7 +68,7 @@ public class SyncStateCheckBoxPreference extends CheckBoxPreference {
boolean showError;
boolean showPending;
if (mIsActive) {
syncActiveView.post(new Runnable() {
new Handler(getContext().getMainLooper()).post(new Runnable() {
public void run() {
anim.start();
}
@@ -87,11 +88,11 @@ public class SyncStateCheckBoxPreference extends CheckBoxPreference {
syncFailedView.setVisibility(showError ? View.VISIBLE : View.GONE);
syncPendingView.setVisibility((showPending && !mIsActive) ? View.VISIBLE : View.GONE);
View checkBox = view.findViewById(android.R.id.checkbox);
if (mOneTimeSyncMode) {
checkBox.setVisibility(View.GONE);
/*
* Override the summary. Fill in the %1$s with the existing summary
* (what ends up happening is the old summary is shown on the next
@@ -138,7 +139,7 @@ public class SyncStateCheckBoxPreference extends CheckBoxPreference {
mOneTimeSyncMode = oneTimeSyncMode;
notifyChanged();
}
/**
* Gets whether the preference is in one-time sync mode.
*/
@@ -152,7 +153,7 @@ public class SyncStateCheckBoxPreference extends CheckBoxPreference {
// checkbox state
if (!mOneTimeSyncMode) {
super.onClick();
}
}
}
public Account getAccount() {