package cn.lonsun.adapter.lazyfragment import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment /** * @Copyright © 2005-2019 安徽龙讯信息科技有限公司 * @ClassName: BaseFragment * @Description: ${DESCRIPTION} * @Author: berlin * @Date: 2019/8/1 0001 15:54 */ abstract class BaseFragment : Fragment() { private var rootView: View? = null private var isViewCreated = false private var isFirstVisible = true private var isCurrentVisible = false /** * 布局文件 */ protected abstract fun layoutResId(): Int override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { if (!isViewCreated) { rootView = inflater.inflate(layoutResId(), container, false) isViewCreated = true initViews(rootView!!) } if (!isHidden && userVisibleHint) { //可见的时候 dispatchUserVisibleHint(true) } return rootView } private fun dispatchUserVisibleHint(visible: Boolean) { if (isViewCreated) { if (isFirstVisible && visible) { isFirstVisible = false onFirstVisibleLoad() } else if (isCurrentVisible != visible) onFragmentVisibleChanged(visible) } } override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) dispatchUserVisibleHint(isVisibleToUser) isCurrentVisible = isVisibleToUser } override fun onHiddenChanged(hidden: Boolean) { super.onHiddenChanged(hidden) dispatchUserVisibleHint(hidden) isCurrentVisible = hidden } override fun onPause() { super.onPause() if(isHidden&&userVisibleHint)onFragmentVisibleChanged(false) } override fun onResume() { super.onResume() if (!isHidden && userVisibleHint) { onFragmentVisibleChanged(true) } } protected abstract fun onFragmentVisibleChanged(isVisible: Boolean) protected abstract fun onFirstVisibleLoad() protected abstract fun initViews(rootView: View) }
ViewPager+fragment懒加载
最新推荐文章于 2022-04-25 22:55:06 发布