下面列出了android.view.View#getTransitionName ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public FragmentTransaction addSharedElement(View sharedElement, String name) {
String transitionName = sharedElement.getTransitionName();
if (transitionName == null) {
throw new IllegalArgumentException("Unique transitionNames are required for all" +
" sharedElements");
}
if (mSharedElementSourceNames == null) {
mSharedElementSourceNames = new ArrayList<String>();
mSharedElementTargetNames = new ArrayList<String>();
} else if (mSharedElementTargetNames.contains(name)) {
throw new IllegalArgumentException("A shared element with the target name '"
+ name + "' has already been added to the transaction.");
} else if (mSharedElementSourceNames.contains(transitionName)) {
throw new IllegalArgumentException("A shared element with the source name '"
+ transitionName + " has already been added to the transaction.");
}
mSharedElementSourceNames.add(transitionName);
mSharedElementTargetNames.add(name);
return this;
}
public static void findNamedViews(Map<String, View> namedViews, View view) {
if (view.getVisibility() == View.VISIBLE) {
String transitionName = view.getTransitionName();
if (transitionName != null) {
namedViews.put(transitionName, view);
}
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
int count = viewGroup.getChildCount();
for (int i = 0; i < count; i++) {
View child = viewGroup.getChildAt(i);
findNamedViews(namedViews, child);
}
}
}
}
static void addViewValues(TransitionValuesMaps transitionValuesMaps,
View view, TransitionValues transitionValues) {
transitionValuesMaps.viewValues.put(view, transitionValues);
int id = view.getId();
if (id >= 0) {
if (transitionValuesMaps.idValues.indexOfKey(id) >= 0) {
// Duplicate IDs cannot match by ID.
transitionValuesMaps.idValues.put(id, null);
} else {
transitionValuesMaps.idValues.put(id, view);
}
}
String name = view.getTransitionName();
if (name != null) {
if (transitionValuesMaps.nameValues.containsKey(name)) {
// Duplicate transitionNames: cannot match by transitionName.
transitionValuesMaps.nameValues.put(name, null);
} else {
transitionValuesMaps.nameValues.put(name, view);
}
}
if (view.getParent() instanceof ListView) {
ListView listview = (ListView) view.getParent();
if (listview.getAdapter().hasStableIds()) {
int position = listview.getPositionForView(view);
long itemId = listview.getItemIdAtPosition(position);
if (transitionValuesMaps.itemIdValues.indexOfKey(itemId) >= 0) {
// Duplicate item IDs: cannot match by item ID.
View alreadyMatched = transitionValuesMaps.itemIdValues.get(itemId);
if (alreadyMatched != null) {
alreadyMatched.setHasTransientState(false);
transitionValuesMaps.itemIdValues.put(itemId, null);
}
} else {
view.setHasTransientState(true);
transitionValuesMaps.itemIdValues.put(itemId, view);
}
}
}
}
/**
* Internal utility method for checking whether a given view/id
* is valid for this transition, where "valid" means that either
* the Transition has no target/targetId list (the default, in which
* cause the transition should act on all views in the hiearchy), or
* the given view is in the target list or the view id is in the
* targetId list. If the target parameter is null, then the target list
* is not checked (this is in the case of ListView items, where the
* views are ignored and only the ids are used).
*
* @hide
*/
public boolean isValidTarget(View target) {
if (target == null) {
return false;
}
int targetId = target.getId();
if (mTargetIdExcludes != null && mTargetIdExcludes.contains(targetId)) {
return false;
}
if (mTargetExcludes != null && mTargetExcludes.contains(target)) {
return false;
}
if (mTargetTypeExcludes != null && target != null) {
int numTypes = mTargetTypeExcludes.size();
for (int i = 0; i < numTypes; ++i) {
Class type = mTargetTypeExcludes.get(i);
if (type.isInstance(target)) {
return false;
}
}
}
if (mTargetNameExcludes != null && target != null && target.getTransitionName() != null) {
if (mTargetNameExcludes.contains(target.getTransitionName())) {
return false;
}
}
if (mTargetIds.size() == 0 && mTargets.size() == 0 &&
(mTargetTypes == null || mTargetTypes.isEmpty()) &&
(mTargetNames == null || mTargetNames.isEmpty())) {
return true;
}
if (mTargetIds.contains(targetId) || mTargets.contains(target)) {
return true;
}
if (mTargetNames != null && mTargetNames.contains(target.getTransitionName())) {
return true;
}
if (mTargetTypes != null) {
for (int i = 0; i < mTargetTypes.size(); ++i) {
if (mTargetTypes.get(i).isInstance(target)) {
return true;
}
}
}
return false;
}
@SuppressWarnings("WeakerAccess") @Nullable
public static String getTransitionName(@NonNull View view) {
return !InputHelper.isEmpty(view.getTransitionName()) ? view.getTransitionName() : null;
}
public static String getTransitionName(View view) {
return view.getTransitionName();
}
@SuppressWarnings("WeakerAccess") @Nullable public static String getTransitionName(@NonNull View view) {
return !InputHelper.isEmpty(view.getTransitionName()) ? view.getTransitionName() : null;
}
public static String getTransitionName(View view) {
return view.getTransitionName();
}
public static String getTransitionName(View view) {
return view.getTransitionName();
}
@Override
@Nullable
public String getTransitionName(@NonNull View v) {
return v.getTransitionName();
}
/**
* Puts a shared element to transitions and names.
*
* @param names The names for this transition.
* @param sharedElements The elements for this transition.
* @param view The view to add.
*/
private void mapSharedElement(List<String> names, Map<String, View> sharedElements, View view) {
String transitionName = view.getTransitionName();
names.add(transitionName);
sharedElements.put(transitionName, view);
}
/**
* Puts a shared element to transitions and names.
*
* @param names The names for this transition.
* @param sharedElements The elements for this transition.
* @param view The view to add.
*/
private void mapSharedElement(List<String> names, Map<String, View> sharedElements, View view) {
String transitionName = view.getTransitionName();
names.add(transitionName);
sharedElements.put(transitionName, view);
}
/**
* Puts a shared element to transitions and names.
*
* @param names The names for this transition.
* @param sharedElements The elements for this transition.
* @param view The view to add.
*/
private void mapSharedElement(List<String> names, Map<String, View> sharedElements, View view) {
String transitionName = view.getTransitionName();
names.add(transitionName);
sharedElements.put(transitionName, view);
}