YzsBaseActivity框架方法详解
半年前,使用这个框架的开发者就有许多人催促我写一个完整的使用帮助教程,我一个是懒,一个是忙,就一直没写,今天,我要来写这个框架的详细介绍了,希望能够让大家快速的上手使用这个智能的框架(也可以说是小聪明):
先给大家一个GitHub直通车
下面分别是本框架有的分类,我会为大家一一介绍
YzsBaseActivity
本框架提倡以fragment为展示页面,以activity为容器,所以就不过多介绍YzsBaseActivity,也因为该页面逻辑与YzsBaseFragment大量重复,所以会在YzsBaseFragment中进行介绍。
YzsBaseSupportFragmentActivity
该activity是作为容器使用的
- 方法
1. setFragment
设置整个架构的第一个fragment
2. onCreateFragmentAnimator
设置默认Fragment动画,默认无动画,可重写设置其他动画,具体可见源码。
YzsBaseFragment
-
标题栏
首先在页面中,我们会要求开发者进行判断,fragment是否使用状态栏,状态栏的布局方式是与布局竖向排列还是覆盖在内容区之上,使用的toolbar的布局是什么。- showToolBar
该方法使用时需要重写,默认返回false,功能为是否显示Toolbar。 - getToolBarResId
该方法使用时需要重写,返回值为toolbar布局,如果showToolbar设置为false,则不会调用该方法。 - toolbarCover
该方法使用时需要重写,返回值为toolbar与页面布局的排列方式,ture为覆盖在内容区上方,false为使用竖向排列。 - initToolBar
该方法使用时需要重写,该方法为初始化toolbar布局控件,如果使用默认toolbar布局,这里会进行初始化,如果使用自定义toolbar布局,则需重写该方法,将view重新进行初始化。 - immersionEnabled
当前页面Fragment支持沉浸式初始化。默认返回false,可设置支持沉浸式初始化 - immersionInit
状态栏初始化(immersionEnabled默认为false时不走该方法)
该功能使用的是ImmersionBar框架,该框架的具体使用请详见github
- showToolBar
-
初始化
- getLayoutRes
获取布局文件,由于此框架做的是分段式布局,所以此方法的布局只是中间部分的布局。 - initView
初始化控件,findview。 - initLogic
逻辑内容初始化,一般写各种参数赋值,控件初始化等。 - getBundleExtras
该方法使用时需要重写,重写该方法的参数能够获取bundle信息。
- getLayoutRes
-
MVP模式的使用
- setMvp
设置界面是否使用mvp模式,如果想使用mvp架构,则需要在该类中这样使用MvpDemoFragment extends YzsBaseFragment<TestPresenter, TestModel>
并重写initPresenter方法,在该方法中调用如下方法mPresenter.setVM(this, mModel);
- initPresenter
简单页面无需mvp就不用管此方法即可,完美兼容各种实际场景的变通
- setMvp
YzsBaseHomeFragment
该类可以自动识别viewpager和framlayout的使用,在创建layout的时候,需要使用指定id
CommonTabLayout 使用id为R.id.yzs_base_tabLayout
ViewPager使用id为R.id.yzs_base_tabLayout_viewPager
FrameLayout使用id为R.id.yzs_base_tabLayout_frameLayout
使用者需要在ViewPager与FrameLayout中选择一个使用,使用哪个view,在layout中进行声明指定id
-
使用方式
该类可使用YzsBaseFragment的所有方法,使用该父类的时候,需使用指定控件,并使用指定id,这样才能保证初始化的正常,至于页面布局,则由开发者自行设定- ViewPager
如果使用ViewPager则需使用@id/yzs_base_tabLayout_viewPager -
CommonTabLayout
自定义控件,使用方法请点击进入该链接,该控件为替代官方Tablayout,使用指定@id/yzs_base_tabLayout
- ViewPager
-
TAB设置
- initTab
设置TabLayout属性,所有关于TabLayout属性在这里设置 - setmFragments
初始化tab中的fragment集合,必须在initTab中调用,可使用get方法获取fragments - setmIconSelectIds与setmIconUnSelectIds
设置TAB选中与未选中图标,在initTab中调用,如果不需要显示图标则不需要调用,同样,可使用get方法获取图标 - setmTitles
设置TAB文字 - setInitChooseTab
如果使用viewpager,初始化选中必须用该方法,设置默认显示tab
- initTab
-
监听回调
- onTabSelect
tab的点击选中回调 - onTabReselect
tab的再次选中回调
- onTabSelect
YzsBaseListFragment与YzsBaseMvpListFragment
这几个列表类是也是我灵机一动想出来的,用了一些新的处理思路,使用起来就会更加便捷,在创建类时,我们需要声明该页面的类型,该页面有默认layout,如果需要自定义,则需要使用指定控件和指定id
SmartRefreshLayout使用id为yzs_base_refreshLayout,RecyclerView使用id为yzs_base_list,关于SmartRefreshLayout的使用方法,大家请自行查看原网址,同时,如果使用MVP模式,不止需要该数据类型,同时需要声明使用的BasePresenter与BaseModel,下面我就来为大家介绍下方法
- 初始化设置
1. initSetting
初始化各种状态处理,在这个方法里处理的是recyclerview的所有的初始化,包括对他的展示形式,是list或grid或瀑布流等设置
2. setListType
设置布局管理type,设置recyclerview的排列方式是list或grid或瀑布流等设置
3. setSpanCount
为grid样式和瀑布流设置横向或纵向数量,list样式无效
4. isOpenLoad
是否开启刷新和加载更多,默认不开启
5. setmPageSize
设置list每页数量,如果开启加载更多,设置该方法会调用自动加载判断,如果获取到的数据数量小于该值,则会调用到加载完成,如果等于该值,则会调用下一页。
6. initItemLayout
初始化recyclerview子布局,该类只支持同样类型list
- 智能加载方法
- refreshListener
刷新回调,如果使用者开启了刷新,则需重写该方法,已获取回调,在该方法处进行刷新请求 - loadMoreListener
加载更多回调,如果使用者开启了加载更多,则需重写该方法,已获取回调,在该方法处进行加载请求 - autoListLoad
这个方法也是整个baseList的核心方法,我们在获取数据的回调中调用该方法,内部的方法就会自动的将数据进行处理,自动分辨为允许加载更多,还是加载完成,还是刷新完成,同时,使用者需要设置空布局的文字与图片,之后我会加上View的方法,可以支持点击重新加载等支持。 - MyHolder
该方法为adapter的内部类,我们在这个方法里进行item操作,由于我们使用的是BaseRecyclerViewAdapterHelper,具体操作请自行查看。 - autoRefresh
该方法为自动加载,使用者根据需要自行调用,调用后,效果与手动刷新相同。 - changeShowType
该方法用于动态改变recyclerview的布局管理器,提供改变显示方法(该方法用于布局显示后动态改变显示方式)
- refreshListener
YzsBaseListTypeFragment与YzsBaseMvpListTypeFragment
这两个类与上方方法几乎一致,不同的是这两个类是处理多重布局的list类别,其余方法一致。
- 方法
- setRcTypeRes
设置adapter的多重布局的item的layout
- setRcTypeRes
YzsBaseWebFragment
该页面为专门处理web页面处理,调用方法简单
- 方法
- initWebView
该页面只需使用一个方法,在页面中调用该方法时,一般情况下只需放入一个url,就可以完成,其余重名方法,可以根据自己需求自行调用
- initWebView
这些方法是本框架的基本方法,还有很多方法,需要你们去看demo,才可以了解,有付出才有回报对不。
欢迎长按下图 -> 识别图中二维码或者扫一扫关注我的公众号,不会让你失望的奥,就是本人更新有时不及时,希望大家谅解