在view中如何保存自定義view的狀態

O(∩_∩)O哈哈~,今天看別人代碼時發現有好東西就順便弄上來了,其實很簡單也很實用,先記錄下來。

package com.huangxj.androidall;


import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import android.view.View;

public class TestMyView extends View {
	
	
	private int mCurrentPage = 0;

	public TestMyView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}
	
	@Override
	protected Parcelable onSaveInstanceState() {
		
		Parcelable pl = super.onSaveInstanceState();
		SaveState st = new SaveState(pl);
		st.currentPage = mCurrentPage;
		return st;
	}
	
	@Override
	protected void onRestoreInstanceState(Parcelable state) {
		SaveState st = (SaveState) state;
		super.onRestoreInstanceState(st.getSuperState());
		mCurrentPage = st.currentPage;
		
		requestLayout();
	}
	
	protected static class SaveState extends BaseSavedState{
		
		int currentPage = 0;

		public SaveState(Parcelable pl) {
			super(pl);
			
		}
		
		public SaveState(Parcel in) {
			super(in);
			currentPage = in.readInt();
		}

		@Override
		public void writeToParcel(Parcel dest, int flags) {
			super.writeToParcel(dest, flags);
			dest.writeInt(currentPage);
		}

		@SuppressWarnings("UnusedDeclaration")
		public static final Parcelable.Creator<SaveState> CREATOR = new Parcelable.Creator<SaveState>() {
			@Override
			public SaveState createFromParcel(Parcel in) {
				return new SaveState(in);
			}

			@Override
			public SaveState[] newArray(int size) {
				return new SaveState[size];
			}
		};
		
	}

}


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章