书接上文,感谢感谢大佬启立豆的整理:
https://blog.csdn.net/huangqili1314/article/details/79824830
有个大神自己封装了Fragment,YoKey大佬的文章:
https://www.jianshu.com/p/d9143a92ad94
了解自定义view,感谢huachao1001大佬:
https://www.jianshu.com/p/c84693096e41
这部分主要内容是Fragment和View(+RecycleView)
(2.1)什么是Fragment
Fragment是碎片,用于嵌套在Activity之中,是更加轻量化的Activity
(2.2)为什么要用Fragment
为了能够让UI加载的时间更短,反应速度快,占用的资源更少,在一个Activity中嵌套多个不同功能的Fragment比调用多个Activity更有效率
(2.3)Fragment与Activity的通信方式
Activity可以使用Intent来进行与Fragment的交互,Intent的本质是使用Bundle
Fragment与Activity的通信则需要使用接口回调的方式,通过调用接口定义的内容来实现通信传递。当然Activity也能用接口与Fragment进行交互
(2.4)Fragment各种情况下的生命周期
Fragment的生命周期与Activity相似,因为是嵌套在Activity中的所以Activity的暂停停止等生命周期方法都会影响到Fragement。唯一区别的是onCreate与onDestory的方法中
Fragment的onCreate:onAttach--onCreate--onViewCreate--onActivityCreated
Fragment的onDestory:onViewDestory--onDestory--onDeatch
(2.5)Fragment之间传递数据的方式?
Fragment之前可以用接口的方式进行数据传递
也可以使用Fragment.Argument,其内核是使用Bundle进行数据交互
(2.6)Fragment的add与replace的区别
Fragment的replace是把要跳转的Fragment初始化一遍,当加入到返回栈时返回Fragment会重新加载这个Fragment
Fragment的add则可以通过hide与show解决这个问题,但是如果是单纯的add的话会覆盖当前Fragment
(2.7)用Fragment有遇过什么坑吗,怎么解决
(2.8)getFragmentManager,getSupportFragmentManager ,getChildFragmentManager三者之间的区别
getFragmentManager与getSupportFragmentManager是调用父容器的管理器,区别在于getSupprotFragmentManager是用于安卓3.0以下的版本
(2.9)FragmentPagerAdapter与FragmentStatePagerAdapter的区别与使用场景
FragmentPagerAdapter用于页面少,但是需要重复使用的情况,因为它能保存Fragment的页面,每次调用不需要重新创建,但是一旦页面变多内存消耗就会非常严重,可能会导致闪退。
FragmentStatePagerAdapter用于页面多,需要多次重新使用的情况,保存了状态但是需要重新的加载内容。
3.自定义组件、动画
(3.1)描述一下View的绘制流程
View有三个生命周期,onMeasure用于测量元件,onLayout用于排列位置,onDraw用于渲染元件
(3.2)说说自定义view的几个构造函数
view有四个构造函数,分别有不同的用途:
Context,Attributset,Int DefaultStyleAttr和DefaultStyleResource
(3.3)View 里面的 onSavedInstanceState和onRestoreInstanceState的作用
onSavedInstancedState与onRestoreInstanceState是用于保存页面状态并重新读取记载,比如说横屏竖屏切换就可以用这个保存当前页面状态以至于不用重新加载而丢失进度。
(3.4)onLayout() 和Layout()的区别
onLayout是view的一个绘制流程,用于排列元件的位置,Layout是onLayout的一个子方法,用于实现子view排列的位置。
(3.5)描述一下getX、getRawX、getTranslationX
getX是获取view的x轴位置,getRawX是获取view到屏幕左边距的距离,getTranslationX是获取view与X轴的偏移量。
X=getX+getTranslationX
(3.6)Android中的动画有哪几类,它们的特点和区别是什么
安卓中的动画分为视图动画和属性动画,视图动画又分为补间动画和帧动画。
视图动画与属性动画最大的区别就是同样的动画,视图动画只改变视图展示给人的内容,而实际上属性不会发生变化;属性动画是通过改变view的属性而发生视图的变化。
(3.7)Interpolator和TypeEvaluator的作用
Interpolator是插值器,用于决定动画开始到结束时一段时间的运动形式,比如是先快后慢,还是圆周运动等,有9中模式,且可以根据需求自定义。LinearInterpolator就是其中一个模式
TypeEvaluator是估值器,用于运动之间具体的数值内容,比如说这个时间点的数值是怎么样的,那个时间点的数值是怎么样的,通过估值器来自定义复杂的运动
TypeEvaluator是属性动画才有的内容。
(3.8)请描述一下View事件传递分发机制
dispatchTouchEvent是事件分发机制入口,从dispatchTouchEvent到onTouchEvent.
dispatchTouchEvent是从activity发到viewgroup再发到view,而onTouchEvent则相反。
当一个事件return ture时,不会向下分发,属于已消费状态。处于false时才会向下分发。
(3.9)事件分发中的onTouch 和onTouchEvent 有什么区别,又该如何使用?
onTouch是监听器的子方法,onTouchEvent是callback的方法,在事件分发中会从监听器分发事件到onTouchEvent。如果在onTouch中return ture,则onTouchEvent则不会收到分发的事件
(3.10)View和ViewGroup分别有哪些事件分发相关的回调方法
View与ViewGroup的分发回调方法都很相似,都有depatchTouchEvent和onTouchEvent。
区别的是viewgroup有一个拦截器方法InterceptTouchEvent,用于拦截事件然后发给view。
(3.11)View刷新机制
view的父控件来刷新,显示子控件,当子控件需要刷新时,由父控件进行刷新
建立父子关系则是用view继承viewgroup或者通过DecorView来建立关系。
(3.12)RecycleView
参考下面的xhu_ww大佬写的内容:
https://blog.csdn.net/ww897532167/article/details/85868622
还有鸿洋_大佬写的内容:
https://blog.csdn.net/lmj623565791/article/details/45059587
更多的资料全在原地址中,请多查看原文大佬的总结及前人的经验
另外如果我说的地方有什么不对的请大家留言,本人非常的菜,大家的指点能够让我更加理解开发的知识点。请不要含蓄,谢谢
安卓面试的准备一:https://www.jianshu.com/p/0a12b61a8f6d
安卓面试的准备二:https://www.jianshu.com/p/4459a9b6bba3