一、样式和主题
- 样式:
- 定义样式的作用是什么?
当我们的多个控件有多个相同的属性时,为了提高编写代码的效率,我们可以将这些相同的属性抽取到样式中,然后在控件中直接声明样式即可 - 定义样式的意义是什么?
方便开发人员开发,提高开发效率 - 样式如何定义、如何使用 ?
- 样式的定义:
- 进入values/style.xml中
- 在style.xml中去创建一个<style>节点
- 其中name为自定义样式的名字,我们在控件上需要通过这个属性去访问自定义的样式
- 其中每个<item>中,name为控件的属性名,<item>与<item>之间为该属性名对应的值
- 进入values/style.xml中
- 样式的使用 :
- 样式的定义:
- 样式使用的范围是什么?
样式一般使用在控件上,作用范围比较窄
- 定义样式的作用是什么?
- 主题
- 定义主题的作用是什么?
当我们开发的APP不想使用Android自带的主题样式时,就可以自己定义主题 - 主题如何定义、如何使用?
- 主题的定义:
- 进入values/style.xml中
- 在style.xml中去创建一个<style>节点
- 其中name为自定义主题的名字,我们在activity和application节点上是通过name去访问的
- 其中每个<item>中,name为不同部位的属性名,<item>与<item>之间为该属性名对应的值
- 每个部位的属性名如图:
- 进入values/style.xml中
- 主题的定义:
- 主题使用的范围是什么?
主题一般使用在activity、application节点上,作用范围比较宽
- 定义主题的作用是什么?
二、国际化(i18n)
- 国际化是什么?
国际化是指在不同的语言环境下,app中的语言随着语言环境的改变而改变 - 如何实现国际化?
- 在res下创建不同的values文件夹,其命名的格式为:values-国家名缩写
- 将values/strings.xml文件中的字符串用不同的语言进行翻译
- 在res下创建不同的values文件夹,其命名的格式为:values-国家名缩写
三、上下文对象
- 获取上下文对象的两种方式
- this
- getApplicationContext()
- this与getApplicationContext()获取上下文对象的区别:
- this
- 最终继承于Context,它是Context的子类。
- 它获取的是Activity级别的对象
- getApplicationContext()
- 用于获取一个Context对象,它是Context本类。
- 它获取的是应用程序级别的对象
- this
- 问题:为什么在构造对话框的时候,使用getApplicationContext()会报错“java.lang.IllegalStateException”,而使用this就不报错呢?
- 我们使用getApplicationContext()去获取的上下文对象是一个应用级别的上下文对象,这个应用中包含了很多的Activity。因此在使用这个方法去创建一个对话框时,会导致dvm不知道应该将对话框挂载到哪个Activity上。
- 使用this获取的上下文对象是一个Activity级别的上下文对象,很直接、了当的告诉了dvm,对话框应该挂到哪个Activity上,因此不会报错。
- 什么时候使用this,什么时候使用getApplicationContext()?
目前为止只有在对话框中必须使用this,其他地方两种方式都可以使用