android.support.v4.app.Fragment#getUserVisibleHint ( )源码实例Demo

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

源代码1 项目: styT   文件: FragmentUtils.java
/**
 * 根据栈参数获取顶层可见fragment
 *
 * @param fragmentManager fragment管理器
 * @param parentFragment  父fragment
 * @param isInStack       是否是栈中的
 * @return 栈中顶层可见fragment
 */
private static Fragment getTopShowFragmentIsInStack(@NonNull final FragmentManager fragmentManager,
                                                    final Fragment parentFragment,
                                                    final boolean isInStack) {
    List<Fragment> fragments = getFragments(fragmentManager);
    if (fragments.isEmpty()) return parentFragment;
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null && fragment.isResumed() && fragment.isVisible() && fragment.getUserVisibleHint()) {
            if (isInStack) {
                if (fragment.getArguments().getBoolean(ARGS_IS_ADD_STACK)) {
                    return getTopShowFragmentIsInStack(fragment.getChildFragmentManager(), fragment, true);
                }
            } else {
                return getTopShowFragmentIsInStack(fragment.getChildFragmentManager(), fragment, false);
            }
        }
    }
    return parentFragment;
}
 
源代码2 项目: styT   文件: FragmentUtils.java
/**
 * 处理fragment回退键
 * <p>如果fragment实现了OnBackClickListener接口,返回{@code true}: 表示已消费回退键事件,反之则没消费</p>
 * <p>具体示例见FragmentActivity</p>
 *
 * @param fragmentManager fragment管理器
 * @return 是否消费回退事件
 */
public static boolean dispatchBackPress(@NonNull final FragmentManager fragmentManager) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) return false;
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null
                && fragment.isResumed()
                && fragment.isVisible()
                && fragment.getUserVisibleHint()
                && fragment instanceof OnBackClickListener
                && ((OnBackClickListener) fragment).onBackClick()) {
            return true;
        }
    }
    return false;
}
 
源代码3 项目: TikTok   文件: FragmentUtils.java
/**
 * 根据栈参数获取顶层可见fragment
 *
 * @param fragmentManager fragment管理器
 * @param parentFragment  父fragment
 * @param isInStack       是否是栈中的
 * @return 栈中顶层可见fragment
 */
private static Fragment getTopShowFragmentIsInStack(@NonNull FragmentManager fragmentManager,
                                                    Fragment parentFragment,
                                                    boolean isInStack) {
    List<Fragment> fragments = getFragments(fragmentManager);
    if (fragments.isEmpty())
        return parentFragment;
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null && fragment.isResumed() && fragment.isVisible() && fragment.getUserVisibleHint()) {
            if (isInStack) {
                if (fragment.getArguments().getBoolean(ARGS_IS_ADD_STACK)) {
                    return getTopShowFragmentIsInStack(fragment.getChildFragmentManager(), fragment, true);
                }
            } else {
                return getTopShowFragmentIsInStack(fragment.getChildFragmentManager(), fragment, false);
            }
        }
    }
    return parentFragment;
}
 
源代码4 项目: TikTok   文件: FragmentUtils.java
/**
 * 处理fragment回退键
 * <p>如果fragment实现了OnBackClickListener接口,返回{@code true}: 表示已消费回退键事件,反之则没消费</p>
 * <p>具体示例见FragmentActivity</p>
 *
 * @param fragmentManager fragment管理器
 * @return 是否消费回退事件
 */
public static boolean dispatchBackPress(@NonNull FragmentManager fragmentManager) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty())
        return false;
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null
                && fragment.isResumed()
                && fragment.isVisible()
                && fragment.getUserVisibleHint()
                && fragment instanceof OnBackClickListener
                && ((OnBackClickListener) fragment).onBackClick()) {
            return true;
        }
    }
    return false;
}
 
源代码5 项目: MyBlogDemo   文件: ShakeHelper.java
@Nullable
private Fragment getSupportTopFragment(FragmentManager manager) {
    List<Fragment> fragments = manager.getFragments();
    if (fragments == null) {
        return null;
    }
    int size = fragments.size();
    for (int i = size - 1; i >= 0; i--) {
        Fragment f = fragments.get(i);
        if (f.isAdded() && !f.isHidden() && f.getUserVisibleHint()) {
            Fragment tTopFragment = getSupportTopFragment(f.getChildFragmentManager());
            return tTopFragment == null ? f : tTopFragment;
        }
    }
    return null;
}
 
源代码6 项目: Android-UtilCode   文件: FragmentUtils.java
/**
 * 根据栈参数获取顶层可见fragment
 *
 * @param fragmentManager fragment管理器
 * @param parentFragment  父fragment
 * @param isInStack       是否是栈中的
 * @return 栈中顶层可见fragment
 */
private static Fragment getTopShowFragmentIsInStack(@NonNull FragmentManager fragmentManager,
                                                    Fragment parentFragment,
                                                    boolean isInStack) {
    List<Fragment> fragments = getFragments(fragmentManager);
    if (fragments.isEmpty()) return parentFragment;
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null && fragment.isResumed() && fragment.isVisible() && fragment.getUserVisibleHint()) {
            if (isInStack) {
                if (fragment.getArguments().getBoolean(ARGS_IS_ADD_STACK)) {
                    return getTopShowFragmentIsInStack(fragment.getChildFragmentManager(), fragment, true);
                }
            } else {
                return getTopShowFragmentIsInStack(fragment.getChildFragmentManager(), fragment, false);
            }
        }
    }
    return parentFragment;
}
 
源代码7 项目: Android-UtilCode   文件: FragmentUtils.java
/**
 * 处理fragment回退键
 * <p>如果fragment实现了OnBackClickListener接口,返回{@code true}: 表示已消费回退键事件,反之则没消费</p>
 * <p>具体示例见FragmentActivity</p>
 *
 * @param fragmentManager fragment管理器
 * @return 是否消费回退事件
 */
public static boolean dispatchBackPress(@NonNull FragmentManager fragmentManager) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) return false;
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null
                && fragment.isResumed()
                && fragment.isVisible()
                && fragment.getUserVisibleHint()
                && fragment instanceof OnBackClickListener
                && ((OnBackClickListener) fragment).onBackClick()) {
            return true;
        }
    }
    return false;
}
 
源代码8 项目: MVVMArms   文件: FragmentUtils.java
/**
 * 处理fragment回退键
 * <p>如果fragment实现了OnBackClickListener接口,返回{@code true}: 表示已消费回退键事件,反之则没消费</p>
 * <p>具体示例见FragmentActivity</p>
 *
 * @param fragmentManager fragment管理器
 * @return 是否消费回退事件
 */
public static boolean dispatchBackPress(@NonNull FragmentManager fragmentManager) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) {
        return false;
    }
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null
                && fragment.isResumed()
                && fragment.isVisible()
                && fragment.getUserVisibleHint()
                && fragment instanceof OnBackClickListener
                && ((OnBackClickListener) fragment).onBackClick()) {
            return true;
        }
    }
    return false;
}
 
源代码9 项目: AndroidUtilCode   文件: FragmentUtils.java
private static Fragment getTopShowIsInStack(@NonNull final FragmentManager fm,
                                            Fragment parentFragment,
                                            final boolean isInStack) {
    List<Fragment> fragments = getFragments(fm);
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null
                && fragment.isResumed()
                && fragment.isVisible()
                && fragment.getUserVisibleHint()) {
            if (isInStack) {
                Bundle args = fragment.getArguments();
                if (args != null && args.getBoolean(ARGS_IS_ADD_STACK)) {
                    return getTopShowIsInStack(fragment.getChildFragmentManager(), fragment, true);
                }
            } else {
                return getTopShowIsInStack(fragment.getChildFragmentManager(), fragment, false);
            }
        }
    }
    return parentFragment;
}
 
源代码10 项目: MyBlogDemo   文件: ShakeHelper.java
@Nullable
private List<Fragment> getSupportTopFragments() {
    if (manager == null) {
        return null;
    }
    List<Fragment> fragments = manager.getFragments();
    List<Fragment> topFragments = new ArrayList<>();
    if (fragments == null) {
        return null;
    }
    int size = fragments.size();
    for (int i = size - 1; i >= 0; i--) {
        Fragment f = fragments.get(i);
        if (f.isAdded() && !f.isHidden() && f.getUserVisibleHint()) {
            Fragment t = getSupportTopFragment(f.getChildFragmentManager());//递归
            if (t != null) {
                topFragments.add(t);
            } else {
                topFragments.add(f);
            }
        }

    }
    return topFragments;
}
 
public void activityCreated() {
    if (DEBUG) {
        Log.d(TAG, fragmentName + ": activityCreated, userVisibleHint=" + fragment.getUserVisibleHint());
    }
    if (fragment.getUserVisibleHint()) {
        Fragment parentFragment = fragment.getParentFragment();
        if (parentFragment != null && !parentFragment.getUserVisibleHint()) {
            if (DEBUG) {
                Log.d(TAG, fragmentName + ": activityCreated, parent " + parentFragment.getClass().getSimpleName() + " is hidden, therefore hidden self");
            }
            userVisibleCallback.setWaitingShowToUser(true);
            userVisibleCallback.callSuperSetUserVisibleHint(false);
        }
    }
}
 
源代码12 项目: RecyclerPager   文件: FragmentRecyclerAdapter.java
/**
 * Attach Fragment
 */
@Override public void onViewAttachedToWindow(@NonNull FragmentViewHolder holder) {

    String name = makeFragmentName(holder.itemView.getId(), holder.getAdapterPosition());
    Fragment fragment = mFragmentManager.findFragmentByTag(name);

    if (fragment != null && fragment == holder.currentFragment) {
        // Nothing Changed
    } else {
        FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();

        if (fragment != null) {
            fragmentTransaction.attach(fragment);
        } else {
            fragment = getItem(holder.getAdapterPosition());
            fragmentTransaction.add(holder.itemView.getId(), fragment, name);
        }
        fragmentTransaction.commitNowAllowingStateLoss();

        if (holder.currentFragment != null && holder.currentFragment.getUserVisibleHint()) {
            holder.currentFragment.setMenuVisibility(false);
            holder.currentFragment.setUserVisibleHint(false);
        }

        holder.currentFragment = fragment;
        if (!fragment.getUserVisibleHint()) {
            fragment.setMenuVisibility(true);
            fragment.setUserVisibleHint(true);
        }
    }
}
 
源代码13 项目: AlbumCameraRecorder   文件: HandleBackUtil.java
/**
 * 判断Fragment是否处理了Back键
 *
 * @return 如果处理了back键则返回 <b>true</b>
 */
public static boolean isFragmentBackHandled(Fragment fragment) {
    return fragment != null
            && fragment.isVisible()
            && fragment.getUserVisibleHint() //for ViewPager
            && fragment instanceof HandleBackInterface
            && ((HandleBackInterface) fragment).onBackPressed();
}
 
源代码14 项目: Tracker   文件: FragmentLifecycleListener.java
@Override
public void onFragmentResumed(@NonNull FragmentManager fm, @NonNull Fragment f) {
	super.onFragmentResumed(fm, f);
	if (!f.isHidden() && f.getUserVisibleHint()) {
		onVisibleChanged(f, true);
	}
	LogUtil.i(f.getClass().getSimpleName() + " onFragmentResumed");
}
 
源代码15 项目: FragmentBackHandler   文件: BackHandlerHelper.java
/**
 * 判断Fragment是否处理了Back键
 *
 * @return 如果处理了back键则返回 <b>true</b>
 */
public static boolean isFragmentBackHandled(Fragment fragment) {
    return fragment != null
            && fragment.isVisible()
            && fragment.getUserVisibleHint() //for ViewPager
            && fragment instanceof FragmentBackHandler
            && ((FragmentBackHandler) fragment).onBackPressed();
}
 
源代码16 项目: AndroidUtilCode   文件: FragmentUtils.java
/**
 * Dispatch the back press for fragment.
 *
 * @param fragment The fragment.
 * @return {@code true}: the fragment consumes the back press<br>{@code false}: otherwise
 */
public static boolean dispatchBackPress(@NonNull final Fragment fragment) {
    return fragment.isResumed()
            && fragment.isVisible()
            && fragment.getUserVisibleHint()
            && fragment instanceof OnBackClickListener
            && ((OnBackClickListener) fragment).onBackClick();
}
 
源代码17 项目: Yuan-WanAndroid   文件: AbstractLazyLoadFragment.java
/**
 * 当前Fragment是否可见
 */
private boolean isFragmentVisible(Fragment fragment) {
    return !fragment.isHidden() && fragment.getUserVisibleHint();
}
 
源代码18 项目: Yuan-SxMusic   文件: BaseLazyFragment.java
private boolean isFragmentVisible(Fragment fragment){
    return fragment.getUserVisibleHint()&&!fragment.isHidden();
}
 
源代码19 项目: BlueBoard   文件: OkUtils.java
/**
 * 检查fragment是否还存在
 */
public static boolean isFragmentLive(Activity activity, Fragment fragment) {
    return fragment.getUserVisibleHint() && OkUtils.isActivityLive(activity);
}
 
源代码20 项目: RxGcm   文件: GetGcmReceiversUIForeground.java
boolean isVisible(Fragment fragment) {
    if (mock) return true;
    return fragment.getUserVisibleHint();
}