学习福利
【Android 详细知识点思维脑图(技能树)】
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
* 注意:* 这种技巧仅适用于将你自己定义的资源链接起来。你不能用这种方式继承Android内建的style。要引用一个诸如TextAppearance的内建style,你必须使用parent 属性。
样式属性 - Style Properties
到目前,你已明白了一个style是如何定义的,你需要学习由 元素定义的哪些属性是可用的。你很可能已经熟悉了某些,比如layout_width和textColor。当然,有更多的style属性供你使用。
找到适用于某个特定View的属性的最佳方法是相应的类的参考,其中列出了所有支持的XML属性。例如,在表格TextView XML attributes中列出的所有属性可以用在TextView元素(或它的一个子类)的style定义中。其中列出的一个属性是android:inputType,那么你通常可能将android:inputType属性放置在 元素中,像这样:
你也可以为包含这个属性的EditText元素创建一个style:
number
…
所以你的布局XML现在可以这样实现这个style:
这个简单的例子看起来增加了工作量,但当你添加越来越多的style属性并考虑到此style在不同地方的可重用性时,你会发现获益是巨大的。
关于所有可用的style属性,请参见R.attr。记住所有的View对象并不接受相同的style属性,所以你通常应该参考特定的View类,查看其所支持的style属性。但是,如果你对一个View应用了style,而其并不支持此style中某些属性,那么此View将应用那些它支持的属性,并简单忽略那些不支持的。
然而一些style属性只能被当作一个theme来应用,而不支持任何View元素。这些style属性应用到整个窗口,而不是任何类型的View。例如那些用于隐藏应用标题、隐藏状态栏或改变窗口背景的style属性。这些style属性不属于任何View对象。探究这些仅应用作theme的style属性,参见R.attr中那些以windowNoTitle 和windowBackground 是仅当style作为theme应用于一个Activity或应用时才有效的style属性。参阅下一节,获得关于style应用作theme的信息。
* 注意:* 不要忘记对每个android: 命名空间前缀。例如: 。
样式和主题应用到UI - Applying Styles and Themes to the UI
=================================================
有两种方式来设置style:
* 对一个独立的View,添加style 属性到你的布局XML中的View元素中。
* 或者,对一个Activity或应用添加 或 元素中。
当你应用一个style到布局中一个单独的View上,由此style定义的属性会仅应用于那个View。如果一个style应用到一个ViewGroup上,那么子View元素并不会继承应用此style属性——只有你直接应用了style的元素才会应用其属性。然而,你可以通过将其作为theme来应用的方式应用一个style到所有View元素上。
将一个style作为一个theme来应用,你必须在Android manifest中将其应用到一个Activity或应用中。当你这样做,此Activity或应用中的每个View都将应用其所支持的属性。例如,如果你应用前面示例中的CodeFont style到一个Activity,那么支持此文本style属性的所有View元素都将应用它们。所有View所不支持的属性都会被忽略。如果一个View仅支持某些属性,那么它就只应用那些属性。
为视图套用样式 - Apply a style to a View
下面是如何在XML布局中为View设置style的方法:
现在这个TextView将应用名为CodeFont 的style所定义的属性。(参阅前面在Defining Styles中的示例)。
* 注意:* style属性不能使用android: 命名空间前缀。
在Activity或应用程序中应用主题 - Apply a theme to an Activity or application
对你的应用程序中所有activity设置一个theme,打开 标签,使之包含android:theme 属性和style名称。例如:
如果你希望theme仅应用到你的应用程序中的某个Activity中,那么就将 标签里。
正如Android提供的其他内建资源一样,有许多你可以使用的预定义theme,而不用自己编写它们。例如,你可以使用Dialog theme使你的Activity看起来像一个对话框:
或者你想让背景变成透明的,那就使用透明theme:
如果你喜欢一个theme,但又想调整它,那么你可以将其作为你的自定义theme的parent 。例如,你可以像这样修改传统的light theme来使用你自己定义的颜色:
#b0b0ff
@color/custom_theme_color
@color/custom_theme_color
(注意,这里颜色需要作为单独的资源提供,因为android:colorBackground ,它不能得到一种文本颜色。)
然后在Android Manifest中使用Theme.Light :
选择基于平台版本的主题 - Select a theme based on platform version
新版本的Android应用程序提供额外的theme,你可能想使用它们在这些平台上运行,同时与旧版本兼容。你可以通过使用自定义theme资源选择不同的parent theme,根据平台版本之间切换完成。
例如,这里声明一个自定义theme,相当于是标准平台上默认的light theme。它将在XML文件的res/values/styles.xml ):
…
当程序运行在Android3.0(API等级11)或更高的版本时使用新的holographic theme,你可以在res/values-v11 的XML文件中放置另一个声明theme,但holographic theme的parent theme像这样设置:
…
现在可以如其他的theme那样使用这个theme,如果你的应用程序运行在Android3.0或更高的版本时,将自动切换到holographic theme。
你可以在R.styleable.Theme中找到你能够使用的theme的标准属性列表。
获得更多关于如theme和layout提供替代资源,基础平台版本或其他设备配置的详细信息,请参阅Providing Resources文档。
使用平台的样式和主题 - Using Platform Styles and Themes
=============================================
Android平台提供了大量的style和theme供你在应用程序中使用。你可以在R.style类中找到所有可用的style。要使用这些style,用句点替换style名称中的下划线。例如,你可以通过"@android:style/Theme.NoTitleBar"应用Theme_NoTitleBar theme。
然而,R.style没有好的文档,没有详细叙述这些style,所以查看这些style和theme的实际源代码将使你更好理解每个style属性提供了什么功能。为更好参考Android的style和theme,请参阅下列源代码:
这些文件将通过例子帮助你学习。举个例子,在Android theme源代码中,你将会找到一个声明。在这个定义中,你将看到所有由Android框架使用的用于对话框的style属性。
为获得更多关于在XML中创建style的语法,参阅Available Resource Types:Style and Themes。
关于你可以用来定义style或theme的可用style属性(例如,“windowBackground” 或 “textAppearance”),参阅R.attr或者对应于你正在为其创建一个style的View类。
←返回User Interface | 用户界面 - User Interface
[
最后说一下我的学习路线
其实很简单就下面这张图,含概了Android所有需要学的知识点,一共8大板块:
- 架构师筑基必备技能
- Android框架体系架构(高级UI+FrameWork源码)
- 360°Androidapp全方位性能调优
- 设计思想解读开源框架
- NDK模块开发
- 移动架构师专题项目实战环节
- 移动架构师不可不学习微信小程序
- 混合开发的flutter
Android学习的资料
我呢,把上面八大板块的分支都系统的做了一份学习系统的资料和视频,大概就下面这些,我就不全部写出来了,不然太长了影响大家的阅读。
330页PDF Android学习核心笔记(内含上面8大板块)
Android学习的系统对应视频
总结
我希望通过我自己的学习方法来帮助大家去提升技术:
-
1、多看书、看源码和做项目,平时多种总结
-
2、不能停留在一些基本api的使用上,应该往更深层次的方向去研究,比如activity、view的内部运行机制,比如Android内存优化,比如aidl,比如JNI等,并不仅仅停留在会用,而要通过阅读源码,理解其实现原理
-
3、同时对架构是有一定要求的,架构是抽象的,但是设计模式是具体的,所以一定要加强下设计模式的学习
-
4、android的方向也很多,高级UI,移动架构师,数据结构与算法和音视频FFMpeg解码,如果你对其中一项比较感兴趣,就大胆的进阶吧!
希望大家多多点赞,转发,评论加关注,你们的支持就是我继续下去的动力!加油!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
胆的进阶吧!
希望大家多多点赞,转发,评论加关注,你们的支持就是我继续下去的动力!加油!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!