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

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

源代码1 项目: adt-leanback-support   文件: ViewCompat.java
@Override
public void dispatchStartTemporaryDetach(View view) {
    if (!mTempDetachBound) {
        bindTempDetach();
    }
    if (mDispatchStartTemporaryDetach != null) {
        try {
            mDispatchStartTemporaryDetach.invoke(view);
        } catch (Exception e) {
            Log.d(TAG, "Error calling dispatchStartTemporaryDetach", e);
        }
    } else {
        // Try this instead
        view.onStartTemporaryDetach();
    }
}
 
源代码2 项目: letv   文件: ViewCompat.java
public void dispatchStartTemporaryDetach(View view) {
    if (!this.mTempDetachBound) {
        bindTempDetach();
    }
    if (this.mDispatchStartTemporaryDetach != null) {
        try {
            this.mDispatchStartTemporaryDetach.invoke(view, new Object[0]);
            return;
        } catch (Exception e) {
            Log.d("ViewCompat", "Error calling dispatchStartTemporaryDetach", e);
            return;
        }
    }
    view.onStartTemporaryDetach();
}
 
源代码3 项目: recent-images   文件: TwoWayAbsListView.java
/**
 * Put a view into the ScapViews list. These views are unordered.
 *
 * @param scrap The view to add
 */
void addScrapView(View scrap) {
	TwoWayAbsListView.LayoutParams lp = (TwoWayAbsListView.LayoutParams) scrap.getLayoutParams();
	if (lp == null) {
		return;
	}

	// Don't put header or footer views or views that should be ignored
	// into the scrap heap
	int viewType = lp.viewType;
	if (!shouldRecycleViewType(viewType)) {
		if (viewType != ITEM_VIEW_TYPE_HEADER_OR_FOOTER) {
			removeDetachedView(scrap, false);
		}
		return;
	}

	if (mViewTypeCount == 1) {
		scrap.onStartTemporaryDetach();
		mCurrentScrap.add(scrap);
	} else {
		scrap.onStartTemporaryDetach();
		mScrapViews[viewType].add(scrap);
	}

	if (mRecyclerListener != null) {
		mRecyclerListener.onMovedToScrapHeap(scrap);
	}
}
 
源代码4 项目: AndroidStudyDemo   文件: ZrcAbsListView.java
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
void scrapActiveViews() {
    final View[] activeViews = mActiveViews;
    final boolean hasListener = mRecyclerListener != null;
    final boolean multipleScraps = mViewTypeCount > 1;
    ArrayList<View> scrapViews = mCurrentScrap;
    final int count = activeViews.length;
    for (int i = count - 1; i >= 0; i--) {
        final View victim = activeViews[i];
        if (victim != null) {
            final LayoutParams lp = (LayoutParams) victim.getLayoutParams();
            int whichScrap = lp.viewType;
            activeViews[i] = null;
            final boolean scrapHasTransientState = Build.VERSION.SDK_INT >= 16 ? victim
                    .hasTransientState() : false;
            if (!shouldRecycleViewType(whichScrap) || scrapHasTransientState) {
                if (whichScrap != ITEM_VIEW_TYPE_HEADER_OR_FOOTER &&
                        scrapHasTransientState) {
                    removeDetachedView(victim, false);
                }
                if (scrapHasTransientState) {
                    if (mAdapter != null && mAdapterHasStableIds) {
                        if (mTransientStateViewsById == null) {
                            mTransientStateViewsById = new LongSparseArray<View>();
                        }
                        long id = mAdapter.getItemId(mFirstActivePosition + i);
                        mTransientStateViewsById.put(id, victim);
                    } else {
                        if (mTransientStateViews == null) {
                            mTransientStateViews = new SparseArrayCompat<View>();
                        }
                        mTransientStateViews.put(mFirstActivePosition + i, victim);
                    }
                }
                continue;
            }
            if (multipleScraps) {
                scrapViews = mScrapViews[whichScrap];
            }
            victim.onStartTemporaryDetach();
            lp.scrappedFromPosition = mFirstActivePosition + i;
            scrapViews.add(victim);
            if (hasListener) {
                mRecyclerListener.onMovedToScrapHeap(victim);
            }
        }
    }
    pruneScrapViews();
}
 
源代码5 项目: recent-images   文件: TwoWayAbsListView.java
/**
 * Move all views remaining in mActiveViews to mScrapViews.
 */
void scrapActiveViews() {
	final View[] activeViews = mActiveViews;
	final boolean hasListener = mRecyclerListener != null;
	final boolean multipleScraps = mViewTypeCount > 1;

	ArrayList<View> scrapViews = mCurrentScrap;
	final int count = activeViews.length;
	for (int i = count - 1; i >= 0; i--) {
		final View victim = activeViews[i];
		if (victim != null) {
			int whichScrap = ((TwoWayAbsListView.LayoutParams) victim.getLayoutParams()).viewType;

			activeViews[i] = null;

			if (!shouldRecycleViewType(whichScrap)) {
				// Do not move views that should be ignored
				if (whichScrap != ITEM_VIEW_TYPE_HEADER_OR_FOOTER) {
					removeDetachedView(victim, false);
				}
				continue;
			}

			if (multipleScraps) {
				scrapViews = mScrapViews[whichScrap];
			}
			victim.onStartTemporaryDetach();
			scrapViews.add(victim);

			if (hasListener) {
				mRecyclerListener.onMovedToScrapHeap(victim);
			}

			if (ViewDebug.TRACE_RECYCLER) {
				ViewDebug.trace(victim,
						ViewDebug.RecyclerTraceType.MOVE_FROM_ACTIVE_TO_SCRAP_HEAP,
						mFirstActivePosition + i, -1);
			}
		}
	}

	pruneScrapViews();
}
 
源代码6 项目: Klyph   文件: AbsHListView.java
/**
 * Put a view into the ScrapViews list. These views are unordered.
 * 
 * @param scrap
 *           The view to add
 */
@SuppressLint ( "NewApi" )
public void addScrapView( View scrap, int position ) {
	AbsHListView.LayoutParams lp = (AbsHListView.LayoutParams) scrap.getLayoutParams();
	if ( lp == null ) {
		return;
	}

	lp.scrappedFromPosition = position;

	// Don't put header or footer views or views that should be ignored
	// into the scrap heap
	int viewType = lp.viewType;

	final boolean scrapHasTransientState = android.os.Build.VERSION.SDK_INT >= 16 ? scrap.hasTransientState() : false;

	if ( !shouldRecycleViewType( viewType ) || scrapHasTransientState ) {
		if ( viewType != ITEM_VIEW_TYPE_HEADER_OR_FOOTER || scrapHasTransientState ) {
			if ( mSkippedScrap == null ) {
				mSkippedScrap = new ArrayList<View>();
			}
			mSkippedScrap.add( scrap );
		}
		if ( scrapHasTransientState ) {
			if ( mTransientStateViews == null ) {
				mTransientStateViews = new SparseArrayCompat<View>();
			}
			scrap.onStartTemporaryDetach();
			mTransientStateViews.put( position, scrap );
		}
		return;
	}

	scrap.onStartTemporaryDetach();
	if ( mViewTypeCount == 1 ) {
		mCurrentScrap.add( scrap );
	} else {
		mScrapViews[viewType].add( scrap );
	}

	if ( android.os.Build.VERSION.SDK_INT >= 14 ) {
		scrap.setAccessibilityDelegate( null );
	}

	if ( mRecyclerListener != null ) {
		mRecyclerListener.onMovedToScrapHeap( scrap );
	}
}
 
源代码7 项目: Klyph   文件: AbsHListView.java
/**
 * Move all views remaining in mActiveViews to mScrapViews.
 */
@SuppressLint ( "NewApi" )
public void scrapActiveViews() {
	final View[] activeViews = mActiveViews;
	final boolean hasListener = mRecyclerListener != null;
	final boolean multipleScraps = mViewTypeCount > 1;

	ArrayList<View> scrapViews = mCurrentScrap;
	final int count = activeViews.length;
	for ( int i = count - 1; i >= 0; i-- ) {
		final View victim = activeViews[i];
		if ( victim != null ) {
			final AbsHListView.LayoutParams lp = (AbsHListView.LayoutParams) victim.getLayoutParams();
			int whichScrap = lp.viewType;

			activeViews[i] = null;

			final boolean scrapHasTransientState = android.os.Build.VERSION.SDK_INT >= 16 ? victim.hasTransientState() : false;
			if ( !shouldRecycleViewType( whichScrap ) || scrapHasTransientState ) {
				// Do not move views that should be ignored
				if ( whichScrap != ITEM_VIEW_TYPE_HEADER_OR_FOOTER ||
						scrapHasTransientState ) {
					removeDetachedView( victim, false );
				}
				if ( scrapHasTransientState ) {
					if ( mTransientStateViews == null ) {
						mTransientStateViews = new SparseArrayCompat<View>();
					}
					mTransientStateViews.put( mFirstActivePosition + i, victim );
				}
				continue;
			}

			if ( multipleScraps ) {
				scrapViews = mScrapViews[whichScrap];
			}
			victim.onStartTemporaryDetach();
			lp.scrappedFromPosition = mFirstActivePosition + i;
			scrapViews.add( victim );

			if ( android.os.Build.VERSION.SDK_INT >= 14 ) {
				victim.setAccessibilityDelegate( null );
			}

			if ( hasListener ) {
				mRecyclerListener.onMovedToScrapHeap( victim );
			}
		}
	}

	pruneScrapViews();
}
 
源代码8 项目: ZrcListView   文件: ZrcAbsListView.java
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
void scrapActiveViews() {
	final View[] activeViews = mActiveViews;
	final boolean hasListener = mRecyclerListener != null;
	final boolean multipleScraps = mViewTypeCount > 1;
	ArrayList<View> scrapViews = mCurrentScrap;
	final int count = activeViews.length;
	for (int i = count - 1; i >= 0; i--) {
		final View victim = activeViews[i];
		if (victim != null) {
			final LayoutParams lp = (LayoutParams) victim
					.getLayoutParams();
			int whichScrap = lp.viewType;
			activeViews[i] = null;
			final boolean scrapHasTransientState = Build.VERSION.SDK_INT >= 16 ? victim
					.hasTransientState() : false;
			if (!shouldRecycleViewType(whichScrap)
					|| scrapHasTransientState) {
				if (whichScrap != ITEM_VIEW_TYPE_HEADER_OR_FOOTER
						&& scrapHasTransientState) {
					removeDetachedView(victim, false);
				}
				if (scrapHasTransientState) {
					if (mAdapter != null && mAdapterHasStableIds) {
						if (mTransientStateViewsById == null) {
							mTransientStateViewsById = new LongSparseArray<View>();
						}
						long id = mAdapter
								.getItemId(mFirstActivePosition + i);
						mTransientStateViewsById.put(id, victim);
					} else {
						if (mTransientStateViews == null) {
							mTransientStateViews = new SparseArrayCompat<View>();
						}
						mTransientStateViews.put(mFirstActivePosition
								+ i, victim);
					}
				}
				continue;
			}
			if (multipleScraps) {
				scrapViews = mScrapViews[whichScrap];
			}
			victim.onStartTemporaryDetach();
			lp.scrappedFromPosition = mFirstActivePosition + i;
			scrapViews.add(victim);
			if (hasListener) {
				mRecyclerListener.onMovedToScrapHeap(victim);
			}
		}
	}
	pruneScrapViews();
}
 
 方法所在类
 同类方法