Loading core/java/android/appwidget/AppWidgetHostView.java +53 −2 Original line number Diff line number Diff line Loading @@ -24,16 +24,17 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.SystemClock; import android.os.Parcelable; import android.os.Parcel; import android.util.AttributeSet; import android.util.Log; import android.util.SparseArray; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.RemoteViews; import android.widget.TextView; import android.widget.FrameLayout.LayoutParams; /** * Provides the glue to show AppWidget views. This class offers automatic animation Loading Loading @@ -108,6 +109,24 @@ public class AppWidgetHostView extends FrameLayout { return mInfo; } @Override protected void dispatchSaveInstanceState(SparseArray<Parcelable> container) { final ParcelableSparseArray jail = new ParcelableSparseArray(); super.dispatchSaveInstanceState(jail); container.put(generateId(), jail); } private int generateId() { final int id = getId(); return id == View.NO_ID ? mAppWidgetId : id; } @Override protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) { final ParcelableSparseArray jail = (ParcelableSparseArray) container.get(generateId()); super.dispatchRestoreInstanceState(jail); } /** {@inheritDoc} */ @Override public LayoutParams generateLayoutParams(AttributeSet attrs) { Loading Loading @@ -339,4 +358,36 @@ public class AppWidgetHostView extends FrameLayout { tv.setBackgroundColor(Color.argb(127, 0, 0, 0)); return tv; } private static class ParcelableSparseArray extends SparseArray<Parcelable> implements Parcelable { public int describeContents() { return 0; } public void writeToParcel(Parcel dest, int flags) { final int count = size(); dest.writeInt(count); for (int i = 0; i < count; i++) { dest.writeInt(keyAt(i)); dest.writeParcelable(valueAt(i), 0); } } public static final Parcelable.Creator<ParcelableSparseArray> CREATOR = new Parcelable.Creator<ParcelableSparseArray>() { public ParcelableSparseArray createFromParcel(Parcel source) { final ParcelableSparseArray array = new ParcelableSparseArray(); final ClassLoader loader = array.getClass().getClassLoader(); final int count = source.readInt(); for (int i = 0; i < count; i++) { array.put(source.readInt(), source.readParcelable(loader)); } return array; } public ParcelableSparseArray[] newArray(int size) { return new ParcelableSparseArray[size]; } }; } } Loading
core/java/android/appwidget/AppWidgetHostView.java +53 −2 Original line number Diff line number Diff line Loading @@ -24,16 +24,17 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.SystemClock; import android.os.Parcelable; import android.os.Parcel; import android.util.AttributeSet; import android.util.Log; import android.util.SparseArray; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.RemoteViews; import android.widget.TextView; import android.widget.FrameLayout.LayoutParams; /** * Provides the glue to show AppWidget views. This class offers automatic animation Loading Loading @@ -108,6 +109,24 @@ public class AppWidgetHostView extends FrameLayout { return mInfo; } @Override protected void dispatchSaveInstanceState(SparseArray<Parcelable> container) { final ParcelableSparseArray jail = new ParcelableSparseArray(); super.dispatchSaveInstanceState(jail); container.put(generateId(), jail); } private int generateId() { final int id = getId(); return id == View.NO_ID ? mAppWidgetId : id; } @Override protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) { final ParcelableSparseArray jail = (ParcelableSparseArray) container.get(generateId()); super.dispatchRestoreInstanceState(jail); } /** {@inheritDoc} */ @Override public LayoutParams generateLayoutParams(AttributeSet attrs) { Loading Loading @@ -339,4 +358,36 @@ public class AppWidgetHostView extends FrameLayout { tv.setBackgroundColor(Color.argb(127, 0, 0, 0)); return tv; } private static class ParcelableSparseArray extends SparseArray<Parcelable> implements Parcelable { public int describeContents() { return 0; } public void writeToParcel(Parcel dest, int flags) { final int count = size(); dest.writeInt(count); for (int i = 0; i < count; i++) { dest.writeInt(keyAt(i)); dest.writeParcelable(valueAt(i), 0); } } public static final Parcelable.Creator<ParcelableSparseArray> CREATOR = new Parcelable.Creator<ParcelableSparseArray>() { public ParcelableSparseArray createFromParcel(Parcel source) { final ParcelableSparseArray array = new ParcelableSparseArray(); final ClassLoader loader = array.getClass().getClassLoader(); final int count = source.readInt(); for (int i = 0; i < count; i++) { array.put(source.readInt(), source.readParcelable(loader)); } return array; } public ParcelableSparseArray[] newArray(int size) { return new ParcelableSparseArray[size]; } }; } }