(这里做一下总结)
慕课地址:ViewPager+Tab特效实现微信主界面
代码地址:github
正文
使用ViewPager和FragmentPagerAdapter实现多页面滑动效果,底部Tab的指示器动画特效
(还将扩展ViewPager实现透明度渐变、旋转等特效。)
Tab变色:
通过viewpager的(addOnPageChangeListener–>onPageScrolled)0–>1这里下手
自定义控件
绘制式:效率会高一些
组合式控件:使用系统的控件,稳定一些【这里使用这种方法,易于实现】
Activity与Fragment通信
Activity->fragment 直接获取fragment
fragment->Activity 不是fragment调用Mainactivity的方法,而是fragment对外提供自己的回调,activity自己选择是否监听(因为fragment是单一的 可复用单元)
屏幕旋转后,onCreate执行,getItem没有重新执行?
因为FragmentPagerAdapter管理fragment的比较好,直接重用了(所以这里用instance,通过argument来恢复重要数据)
FragmentStatePagerAdapter与FragmentPagerAdapter
- FragmentPagerAdapter
onCreateView
onDestroyView - FragmentStatePagerAdapter
onCreate
onCreateView
onDestroyView
onDestroy
说明FragmentPagerAdapter并没有销毁fragment。
那么在使用的时候:
若只有4个主tab,为了提高用户体验,当然使用FragmentPagerAdapter
若有上千个tab,图片预览,特别占用内存,那么使用FragmentStatePagerAdapter
(记得使用setOffscreenPageLimit方法来设置缓存的fragment)
附加
viewpager切换动画
关键类:setPageTransformer 通过view position发现规律