- 控件的id是什么?
答:控件的id用于唯一标识控件
- 注释的快捷键是什么?
答:ctrl+/用于单行注释,ctrl+shift+/用于多行注释
- Toast是什么?它也是放在布局文件中吗?makeText方法的三个参数什么含义?
答:Toast是弹出框,它不放在布局文件中,makeText方法的第一个蚕食表示该弹出框是由哪个组件弹出的,第二个参数表示弹出框上显示的文字,第三个参数表示弹出框出现的持续时间
- 什么是context?
答:表示当前所处的环境
- 如何定位toast的显示?
答:通过setGravity(int, int, int) 改变toast的位置,该方法的第一个参数是toast的对齐方式,第二个参数是在对齐的基础上再向右偏移多少,第三个参数是在对齐的基础上再向下偏移多少。
- 如何创建定制的Toast视图?inflater功能是什么?如何设置这种方式的toast中的文字?如何将定制布局应用到toast实例?通过setView方法设置视图的Toast,怎么构造toast实例?
答:首先创建Toast的布局文件,设置该布局文件的根容器的id;使用getLayoutInflater()(或者getSystemService())获取到LayoutInflater,然后使用inflate(int,ViewGroup)来得到布局对象,该方法的第一个参数是布局的ID,第二个是根view。通过该布局对象,可以找到该布局中更多的控件对象。
再通过布局对象找到ImageView和TextView元素,最后再创建一个Toast,并设置toast的属性,然后调用setView(view),参数为布局对象,现在就可以通过show()方法显示toast了。
- 什么是样式?主题是什么?同样式什么联系?
答:样式就是反映view或者window的外观和格式的属性集合。主题就是应用于整个Activity或app的样式,而不是针对某个View。当把样式当做主题的时候,Activity或应用中的每个view都会使用该样式。
- 样式文件存放在哪里?结构是怎样的?怎么在布局文件中引用样式?
答:样式文件存放在res/values目录中,它的根节点为<resource>,对于每个需创建的样式,添加一个<style>元素,该元素由name属性来标示样式。然后为样式添加<item>元素,该元素也有一个属性名为name,来定义样式的属性及它的值,<item>的值可以是关键字、字符串、十六进制颜色、其他资源类型的引用。在某个布局文件中可以以@style/xxx形式来引用
- 样式的继承是什么?如何继承系统样式?如何继承自定义样式?如果某个样式应用到某个view的时候,而这个样式中有View不能支持的属性,会怎么样?
答:可以定义某个样式源自已有的其他样式。如下样式继承自系统默认的文本表现,并修改了文本颜色:
<style name="GreenText" parent="@android:style/TextAppearance">
<item name="android:textColor">#00FF00</item>
</style>
如果你要继承你自己定义的样式,你不必使用parent属性,你只需要把需继承的样式名放在新样式名前面并加上点,如下,新样式为Red,继承CodeFont:
<style name="CodeFont.Red">
<item name="android:textColor">#FF0000</item>
</style>
只有该样式中该View支持的属性起作用,不支持的则忽略掉。
- 怎么设置样式?如果将样式设置到ViewGroup时,该group中的view会使用该样式吗?
答:有两种方式来设置样式:
对于每个单独的View,可以在布局文件中为每个View元素添加style属性。
或者为整个Activity或者app添加android:theme属性
如果把样式应用到一个ViewGroup的时候,该group中的子view不会继承这些属性。
- manifest文件起什么作用?
答:为了把样式作为主题,你必须在manifest文件中进行定义,这样该Activity或者app中的所有View都会应用其所能支持的属性。
- 如何设置主题?如何微调已有主题?
答:在AndroidManifest.xml文件中的<application>标签中加入android:theme属性,如下:
<application android:theme="@style/CustomTheme">
如果你要微调某个已有主题,只需要把该主题作为你的定制主题的parent。例如,如下:
<color name="custom_theme_color">#b0b0ff</color>
<style name="CustomTheme" parent="android:Theme.Light">
<item name="android:windowBackground">@color/custom_theme_color</item>
<item name="android:colorBackground">@color/custom_theme_color</item>
</style>
- 如何基于不同的平台由系统自动选择不同的主题?
答:在更高的android上可能有更多的主题,你可能因为兼容性需要根据平台的不同而使用不同的主题,这时你可以定义自己的主题,来根据不同的平台版本来选择不同的父主题,如下在res/values中写入XML文件(典型的如:res/values/styles.xml):
<style name="LightThemeSelector" parent="android:Theme.Light">
...
</style>
为在android 3.0以上使用新的主题,把另一个主题定义放在res/values-v11中,但是改变parent属性值,如下:
<style name="LightThemeSelector" parent="android:Theme.Holo.Light">
...
</style>
以后你只需要使用LightThemeSelector来定义样式即可,会自动根据平台的不同而只用不同的系统主题。
- 屏幕大小的分类有哪些?
答:大小的分类有:small, normal, large, xlarge;
- 密度的分类有哪些?
答:密度的分类有:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)
- 屏幕的方向有哪些?
答:屏幕的方向(landscape或者portrait,也就是纵向和横向)。
- 为什么需要根据屏幕不同来定义不同的布局文件?不同大小屏幕的布局文件怎么存放?
答:为了针对不同的屏幕大小优化你的用户的体验,你应该为每种你要支持的屏幕大小创建一个唯一的XML布局文件。每种布局存放在对应的资源目录中,目录名字以-<screen_size>作为后缀。例如大屏幕存为res/layout-large/。
- 为什么需要根据屏幕密度提供不同的bitmap资源?怎么做?
答:有助于你提高在不同屏幕密度上的图像质量。
为创建这些图像,你的原始资源应该用矢量格式,产生的图像使用下面的比例:
• xxhdpi: 3.0
• xhdpi: 2.0
• hdpi: 1.5
• mdpi: 1.0 (baseline参照)
• ldpi: 0.75
这意味着,你如果创建一个200X200的xhdpi设备上的图片,你应该为hdpi创建150X150的资源,而mdpi的为100X100的图片,ldpi设备的为75X75的图片。
然后将相应的文件放在drawable这个资源目录中:
MyProject/res/drawable-xhdpi/awesomeimage.png
drawable-hdpi/awesomeimage.png
drawable-mdpi/awesomeimage.png
drawable-ldpi/awesomeimage.png
任何时候你引用@drawable/awesomeimage的时候,系统会依据你的屏幕密度选择合适的bitmap。