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

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

源代码1 项目: AndroidStudyDemo   文件: ZrcAbsListView.java
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void pruneScrapViews() {
    final int maxViews = mActiveViews.length;
    final int viewTypeCount = mViewTypeCount;
    final ArrayList<View>[] scrapViews = mScrapViews;
    for (int i = 0; i < viewTypeCount; ++i) {
        final ArrayList<View> scrapPile = scrapViews[i];
        int size = scrapPile.size();
        final int extras = size - maxViews;
        size--;
        for (int j = 0; j < extras; j++) {
            removeDetachedView(scrapPile.remove(size--), false);
        }
    }
    if (mTransientStateViews != null) {
        for (int i = 0; i < mTransientStateViews.size(); i++) {
            final View v = mTransientStateViews.valueAt(i);
            if (!v.hasTransientState()) {
                mTransientStateViews.removeAt(i);
                i--;
            }
        }
    }
}
 
源代码2 项目: ZrcListView   文件: ZrcAbsListView.java
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void pruneScrapViews() {
	final int maxViews = mActiveViews.length;
	final int viewTypeCount = mViewTypeCount;
	final ArrayList<View>[] scrapViews = mScrapViews;
	for (int i = 0; i < viewTypeCount; ++i) {
		final ArrayList<View> scrapPile = scrapViews[i];
		int size = scrapPile.size();
		final int extras = size - maxViews;
		size--;
		for (int j = 0; j < extras; j++) {
			removeDetachedView(scrapPile.remove(size--), false);
		}
	}
	if (mTransientStateViews != null) {
		for (int i = 0; i < mTransientStateViews.size(); i++) {
			final View v = mTransientStateViews.valueAt(i);
			if (!v.hasTransientState()) {
				mTransientStateViews.removeAt(i);
				i--;
			}
		}
	}
}
 
源代码3 项目: TvRecyclerView   文件: Presenter.java
/**
 * Utility method for removing all running animations on a view.
 */
protected static void cancelAnimationsRecursive(View view) {
    if (view != null && view.hasTransientState()) {
        view.animate().cancel();
        if (view instanceof ViewGroup) {
            final int count = ((ViewGroup) view).getChildCount();
            for (int i = 0; view.hasTransientState() && i < count; i++) {
                cancelAnimationsRecursive(((ViewGroup) view).getChildAt(i));
            }
        }
    }
}
 
源代码4 项目: adt-leanback-support   文件: Presenter.java
/**
 * Utility method for removing all running animations on a view.
 */
protected static void cancelAnimationsRecursive(View view) {
    if (view.hasTransientState()) {
        view.animate().cancel();
        if (view instanceof ViewGroup) {
            final int count = ((ViewGroup) view).getChildCount();
            for (int i = 0; view.hasTransientState() && i < count; i++) {
                cancelAnimationsRecursive(((ViewGroup) view).getChildAt(i));
            }
        }
    }
}
 
源代码5 项目: Klyph   文件: AbsHListView.java
/**
 * Makes sure that the size of mScrapViews does not exceed the size of mActiveViews. (This can happen if an adapter does not
 * recycle its views).
 */
@SuppressLint ( "NewApi" )
private void pruneScrapViews() {
	final int maxViews = mActiveViews.length;
	final int viewTypeCount = mViewTypeCount;
	final ArrayList<View>[] scrapViews = mScrapViews;
	for ( int i = 0; i < viewTypeCount; ++i ) {
		final ArrayList<View> scrapPile = scrapViews[i];
		int size = scrapPile.size();
		final int extras = size - maxViews;
		size--;
		for ( int j = 0; j < extras; j++ ) {
			removeDetachedView( scrapPile.remove( size-- ), false );
		}
	}

	if ( mTransientStateViews != null ) {
		for ( int i = 0; i < mTransientStateViews.size(); i++ ) {
			final View v = mTransientStateViews.valueAt( i );

			// this code is never executed on android < 16
			if ( !v.hasTransientState() ) {
				mTransientStateViews.removeAt( i );
				i--;
			}
		}
	}
}
 
源代码6 项目: letv   文件: ViewCompatJB.java
public static boolean hasTransientState(View view) {
    return view.hasTransientState();
}
 
源代码7 项目: AndroidStudyDemo   文件: ZrcAbsListView.java
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
void addScrapView(View scrap, int position) {
    final LayoutParams lp = (LayoutParams) scrap.getLayoutParams();
    if (lp == null) {
        return;
    }
    lp.scrappedFromPosition = position;
    final int viewType = lp.viewType;
    if (!shouldRecycleViewType(viewType)) {
        return;
    }
    final boolean scrapHasTransientState =
            Build.VERSION.SDK_INT >= 16 ? scrap.hasTransientState()
                    : false;
    if (scrapHasTransientState) {
        if (mAdapter != null && mAdapterHasStableIds) {
            if (mTransientStateViewsById == null) {
                mTransientStateViewsById = new LongSparseArray<View>();
            }
            mTransientStateViewsById.put(lp.itemId, scrap);
        } else if (!mDataChanged) {
            if (mTransientStateViews == null) {
                mTransientStateViews = new SparseArrayCompat<View>();
            }
            mTransientStateViews.put(position, scrap);
        } else {
            if (mSkippedScrap == null) {
                mSkippedScrap = new ArrayList<View>();
            }
            mSkippedScrap.add(scrap);
        }
    } else {
        if (mViewTypeCount == 1) {
            mCurrentScrap.add(scrap);
        } else {
            mScrapViews[viewType].add(scrap);
        }
        if (mRecyclerListener != null) {
            mRecyclerListener.onMovedToScrapHeap(scrap);
        }
    }
}
 
源代码8 项目: 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();
}
 
源代码9 项目: MiBandDecompiled   文件: am.java
public static boolean a(View view)
{
    return view.hasTransientState();
}
 
源代码10 项目: CodenameOne   文件: ViewCompatJB.java
public static boolean hasTransientState(View view) {
    return view.hasTransientState();
}
 
源代码11 项目: adt-leanback-support   文件: ViewCompatJB.java
public static boolean hasTransientState(View view) {
    return view.hasTransientState();
}
 
源代码12 项目: 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 );
	}
}
 
源代码13 项目: 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();
}
 
源代码14 项目: V.FlyoutTest   文件: ViewCompatJB.java
public static boolean hasTransientState(View view) {
    return view.hasTransientState();
}
 
源代码15 项目: guideshow   文件: ViewCompatJB.java
public static boolean hasTransientState(View view) {
    return view.hasTransientState();
}
 
源代码16 项目: Transitions-Everywhere   文件: ViewUtils.java
@Override
public boolean hasTransientState(@NonNull View view) {
    return view.hasTransientState();
}
 
源代码17 项目: ZrcListView   文件: ZrcAbsListView.java
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
void addScrapView(View scrap, int position) {
	final LayoutParams lp = (LayoutParams) scrap.getLayoutParams();
	if (lp == null) {
		return;
	}
	lp.scrappedFromPosition = position;
	final int viewType = lp.viewType;
	if (!shouldRecycleViewType(viewType)) {
		return;
	}
	final boolean scrapHasTransientState = Build.VERSION.SDK_INT >= 16 ? scrap
			.hasTransientState() : false;
	if (scrapHasTransientState) {
		if (mAdapter != null && mAdapterHasStableIds) {
			if (mTransientStateViewsById == null) {
				mTransientStateViewsById = new LongSparseArray<View>();
			}
			mTransientStateViewsById.put(lp.itemId, scrap);
		} else if (!mDataChanged) {
			if (mTransientStateViews == null) {
				mTransientStateViews = new SparseArrayCompat<View>();
			}
			mTransientStateViews.put(position, scrap);
		} else {
			if (mSkippedScrap == null) {
				mSkippedScrap = new ArrayList<View>();
			}
			mSkippedScrap.add(scrap);
		}
	} else {
		if (mViewTypeCount == 1) {
			mCurrentScrap.add(scrap);
		} else {
			mScrapViews[viewType].add(scrap);
		}
		if (mRecyclerListener != null) {
			mRecyclerListener.onMovedToScrapHeap(scrap);
		}
	}
}
 
源代码18 项目: 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();
}
 
 方法所在类
 同类方法