android.view.View#saveHierarchyState ( )源码实例Demo

下面列出了android.view.View#saveHierarchyState ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: CSipSimple   文件: MenuBuilder.java
public void saveActionViewStates(Bundle outStates) {
    SparseArray<Parcelable> viewStates = null;

    final int itemCount = size();
    for (int i = 0; i < itemCount; i++) {
        final MenuItem item = getItem(i);
        final View v = item.getActionView();
        if (v != null && v.getId() != View.NO_ID) {
            if (viewStates == null) {
                viewStates = new SparseArray<Parcelable>();
            }
            v.saveHierarchyState(viewStates);
            if (item.isActionViewExpanded()) {
                outStates.putInt(EXPANDED_ACTION_VIEW_ID, item.getItemId());
            }
        }
        if (item.hasSubMenu()) {
            final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu();
            subMenu.saveActionViewStates(outStates);
        }
    }

    if (viewStates != null) {
        outStates.putSparseParcelableArray(getActionViewStatesKey(), viewStates);
    }
}
 
源代码2 项目: simple-stack   文件: Backstack.java
/**
 * Provides the means to save the provided view's hierarchy state
 * and its optional StateBundle via {@link Bundleable} into a {@link SavedState}.
 *
 * @param view the view that belongs to a certain key
 */
public void persistViewToState(@Nullable View view) {
    if(view != null) {
        Object key = KeyContextWrapper.getKey(view.getContext());
        if(key == null) {
            throw new IllegalArgumentException("The view [" + view + "] contained no key in its context hierarchy. The view or its parent hierarchy should be inflated by a layout inflater from `stateChange.createContext(baseContext, key)`, or a KeyContextWrapper.");
        }
        SparseArray<Parcelable> viewHierarchyState = new SparseArray<>();
        view.saveHierarchyState(viewHierarchyState);
        StateBundle bundle = null;
        if(view instanceof Bundleable) {
            bundle = ((Bundleable) view).toBundle();
        }
        SavedState previousSavedState = getSavedState(key);
        previousSavedState.setViewHierarchyState(viewHierarchyState);
        previousSavedState.setViewBundle(bundle);
    }
}
 
源代码3 项目: TabStacker   文件: ViewData.java
static Bundle saveViewHierarchy(@NonNull View view) {

        Bundle bundle = new Bundle();
        SparseArray<Parcelable> savedViewHierarchy = new SparseArray<>();

        view.saveHierarchyState(savedViewHierarchy);

        int count = savedViewHierarchy.size();
        for(int i=0; i<count; ++i) {
            int key = savedViewHierarchy.keyAt(i);
            Parcelable parcelable = savedViewHierarchy.get(key);
            String bundleKey = "" + key;
            bundle.putParcelable(bundleKey, parcelable);
        }

        return bundle;
    }
 
@NonNull
public Bundle createInstanceState() {
  Bundle state = new Bundle();
  if (checkedItem != null) {
    state.putInt(STATE_CHECKED_ITEM, checkedItem.getItemId());
  }
  // Store the states of the action views.
  SparseArray<ParcelableSparseArray> actionViewStates = new SparseArray<>();
  for (int i = 0, size = items.size(); i < size; i++) {
    NavigationMenuItem navigationMenuItem = items.get(i);
    if (navigationMenuItem instanceof NavigationMenuTextItem) {
      MenuItemImpl item = ((NavigationMenuTextItem) navigationMenuItem).getMenuItem();
      View actionView = item != null ? item.getActionView() : null;
      if (actionView != null) {
        ParcelableSparseArray container = new ParcelableSparseArray();
        actionView.saveHierarchyState(container);
        actionViewStates.put(item.getItemId(), container);
      }
    }
  }
  state.putSparseParcelableArray(STATE_ACTION_VIEWS, actionViewStates);
  return state;
}
 
源代码5 项目: RearrangeableLayout   文件: RearrangeableLayout.java
@Override
protected Parcelable onSaveInstanceState() {
    for (int i=0; i<getChildCount(); i++) {
        View view = getChildAt(i);
        LayoutParams lp = (LayoutParams) view.getLayoutParams();
        view.saveHierarchyState(mContainer);

        if (view.getId() != NO_ID) {
            SavedState s = new SavedState(mContainer.get(view.getId()));
            s.left = lp.left;
            s.top = lp.top;
            s.movedFlag = lp.moved;
            mContainer.put(view.getId(), s);
        }
    }
    Parcelable p = super.onSaveInstanceState();
    SavedState ss = new SavedState(p);
    ss.container = mContainer;
    return ss;
}
 
源代码6 项目: android-apps   文件: MenuBuilder.java
public void saveActionViewStates(Bundle outStates) {
    SparseArray<Parcelable> viewStates = null;

    final int itemCount = size();
    for (int i = 0; i < itemCount; i++) {
        final MenuItem item = getItem(i);
        final View v = item.getActionView();
        if (v != null && v.getId() != View.NO_ID) {
            if (viewStates == null) {
                viewStates = new SparseArray<Parcelable>();
            }
            v.saveHierarchyState(viewStates);
            if (item.isActionViewExpanded()) {
                outStates.putInt(EXPANDED_ACTION_VIEW_ID, item.getItemId());
            }
        }
        if (item.hasSubMenu()) {
            final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu();
            subMenu.saveActionViewStates(outStates);
        }
    }

    if (viewStates != null) {
        outStates.putSparseParcelableArray(getActionViewStatesKey(), viewStates);
    }
}
 
源代码7 项目: zen4android   文件: MenuBuilder.java
public void saveActionViewStates(Bundle outStates) {
    SparseArray<Parcelable> viewStates = null;

    final int itemCount = size();
    for (int i = 0; i < itemCount; i++) {
        final MenuItem item = getItem(i);
        final View v = item.getActionView();
        if (v != null && v.getId() != View.NO_ID) {
            if (viewStates == null) {
                viewStates = new SparseArray<Parcelable>();
            }
            v.saveHierarchyState(viewStates);
            if (item.isActionViewExpanded()) {
                outStates.putInt(EXPANDED_ACTION_VIEW_ID, item.getItemId());
            }
        }
        if (item.hasSubMenu()) {
            final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu();
            subMenu.saveActionViewStates(outStates);
        }
    }

    if (viewStates != null) {
        outStates.putSparseParcelableArray(getActionViewStatesKey(), viewStates);
    }
}
 
源代码8 项目: zhangshangwuda   文件: MenuBuilder.java
public void saveActionViewStates(Bundle outStates) {
    SparseArray<Parcelable> viewStates = null;

    final int itemCount = size();
    for (int i = 0; i < itemCount; i++) {
        final MenuItem item = getItem(i);
        final View v = item.getActionView();
        if (v != null && v.getId() != View.NO_ID) {
            if (viewStates == null) {
                viewStates = new SparseArray<Parcelable>();
            }
            v.saveHierarchyState(viewStates);
            if (item.isActionViewExpanded()) {
                outStates.putInt(EXPANDED_ACTION_VIEW_ID, item.getItemId());
            }
        }
        if (item.hasSubMenu()) {
            final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu();
            subMenu.saveActionViewStates(outStates);
        }
    }

    if (viewStates != null) {
        outStates.putSparseParcelableArray(getActionViewStatesKey(), viewStates);
    }
}
 
public void saveActionViewStates(Bundle outStates) {
    SparseArray<Parcelable> viewStates = null;

    final int itemCount = size();
    for (int i = 0; i < itemCount; i++) {
        final MenuItem item = getItem(i);
        final View v = item.getActionView();
        if (v != null && v.getId() != View.NO_ID) {
            if (viewStates == null) {
                viewStates = new SparseArray<Parcelable>();
            }
            v.saveHierarchyState(viewStates);
            if (item.isActionViewExpanded()) {
                outStates.putInt(EXPANDED_ACTION_VIEW_ID, item.getItemId());
            }
        }
        if (item.hasSubMenu()) {
            final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu();
            subMenu.saveActionViewStates(outStates);
        }
    }

    if (viewStates != null) {
        outStates.putSparseParcelableArray(getActionViewStatesKey(), viewStates);
    }
}
 
源代码10 项目: flowless   文件: FlowlessPagerAdapter.java
private void saveStateForView(View view, Bundle savedState) {
    if(view instanceof FlowLifecycles.PreSaveViewStateListener) {
        ((FlowLifecycles.PreSaveViewStateListener) view).preSaveViewState();
    }
    SparseArray<Parcelable> viewState = new SparseArray<>();
    view.saveHierarchyState(viewState);
    savedState.putSparseParcelableArray("viewState", viewState);
    if(view instanceof Bundleable) {
        savedState.putBundle("bundle", ((Bundleable) view).toBundle());
    }
}
 
源代码11 项目: epoxy   文件: ViewHolderState.java
public void save(View view) {
  int originalId = view.getId();
  setIdIfNoneExists(view);

  view.saveHierarchyState(this);
  view.setId(originalId);
}
 
源代码12 项目: adt-leanback-support   文件: ViewsStateBundle.java
/**
 * Save views regardless what's the current policy is.
 *
 * @param view view to save
 * @param id unique id for the view within this ViewsStateBundle
 */
protected final void saveViewUnchecked(View view, int id) {
    if (mChildStates != null) {
        String key = getSaveStatesKey(id);
        SparseArray<Parcelable> container = new SparseArray<Parcelable>();
        view.saveHierarchyState(container);
        mChildStates.put(key, container);
    }
}
 
源代码13 项目: flow   文件: State.java
/**
 * Save view hierarchy state so it can be restored later from {@link #restore(View)}.  The view
 * must have a non-zero id.
 */
public void save(@NonNull View view) {
  int viewId = view.getId();
  Preconditions.checkArgument(viewId != 0,
      "Cannot save state for View with no id " + view.getClass().getSimpleName());
  SparseArray<Parcelable> state = new SparseArray<>();
  view.saveHierarchyState(state);
  viewStateById.put(viewId, state);
}
 
源代码14 项目: Defrag   文件: ViewStack.java
void saveState(@NonNull View view) {
	final SparseArray<Parcelable> parcelableSparseArray = new SparseArray<>();
	view.saveHierarchyState(parcelableSparseArray);
	viewState = parcelableSparseArray;
}
 
private void putInDetached(int position, View view) {
  SparseArray<Parcelable> viewState = new SparseArray<>();
  view.saveHierarchyState(viewState);
  detached.put(position, viewState);
}
 
源代码16 项目: flowless   文件: State.java
public void save(@NonNull View view) {
    SparseArray<Parcelable> state = new SparseArray<>();
    view.saveHierarchyState(state);
    viewState = state;
}
 
源代码17 项目: fragnums   文件: BackstackFrame.java
public BackstackFrame(Screen screen, View view) {
  this.screen = screen;
  viewState = new SparseArray<>();
  view.saveHierarchyState(viewState);
}
 
源代码18 项目: scoop   文件: Screen.java
public void saveViewState(View view) {
    SparseArray<Parcelable> viewState = new SparseArray<Parcelable>();
    view.saveHierarchyState(viewState);
    this.viewState = viewState;
}
 
/**
 * The method, which is invoked by a {@link TabSwitcher} to save the current state of a tab. It
 * initializes the view holder pattern, which is provided by the decorator and then delegates
 * the method call to the decorator's custom implementation of the method
 * <code>onSaveInstanceState(...):void</code>.
 *
 * @param view
 *         The view, which is used to visualize the tab, as an instance of the class {@link
 *         View}
 * @param tab
 *         The tab, whose state should be saved, as an instance of the class {@link Tab}. The
 *         tab may not be null
 * @param index
 *         The index of the tab, whose state should be saved, as an {@link Integer} value
 * @return The bundle, which has been used to save the state, as an instance of the class {@link
 * Bundle}. The bundle may not be null
 */
@NonNull
public final Bundle saveInstanceState(@NonNull final View view, @NonNull final Tab tab,
                                      final int index) {
    setCurrentParentView(view);
    int viewType = getViewType(tab, index);
    Bundle outState = new Bundle();
    SparseArray<Parcelable> viewStates = new SparseArray<>();
    view.saveHierarchyState(viewStates);
    outState.putSparseParcelableArray(VIEW_HIERARCHY_STATE_EXTRA, viewStates);
    onSaveInstanceState(view, tab, index, viewType, outState);
    return outState;
}
 
 方法所在类
 同类方法