Android移动应用开发 Toast,样式和主题

  1. 控件的id是什么?

答:控件的id用于唯一标识控件

  1. 注释的快捷键是什么?

答:ctrl+/用于单行注释,ctrl+shift+/用于多行注释

  1. Toast是什么?它也是放在布局文件中吗?makeText方法的三个参数什么含义?

答:Toast是弹出框,它不放在布局文件中,makeText方法的第一个蚕食表示该弹出框是由哪个组件弹出的,第二个参数表示弹出框上显示的文字,第三个参数表示弹出框出现的持续时间

  1. 什么是context?

答:表示当前所处的环境

  1. 如何定位toast的显示?

答:通过setGravity(int, int, int) 改变toast的位置,该方法的第一个参数是toast的对齐方式,第二个参数是在对齐的基础上再向右偏移多少,第三个参数是在对齐的基础上再向下偏移多少。

  1. 如何创建定制的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了。

  1. 什么是样式?主题是什么?同样式什么联系?

答:样式就是反映view或者window的外观和格式的属性集合。主题就是应用于整个Activity或app的样式,而不是针对某个View。当把样式当做主题的时候,Activity或应用中的每个view都会使用该样式。

  1. 样式文件存放在哪里?结构是怎样的?怎么在布局文件中引用样式?

答:样式文件存放在res/values目录中,它的根节点为<resource>,对于每个需创建的样式,添加一个<style>元素,该元素由name属性来标示样式。然后为样式添加<item>元素,该元素也有一个属性名为name,来定义样式的属性及它的值,<item>的值可以是关键字、字符串、十六进制颜色、其他资源类型的引用。在某个布局文件中可以以@style/xxx形式来引用

  1. 样式的继承是什么?如何继承系统样式?如何继承自定义样式?如果某个样式应用到某个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支持的属性起作用,不支持的则忽略掉。

  1. 怎么设置样式?如果将样式设置到ViewGroup时,该group中的view会使用该样式吗?

答:有两种方式来设置样式:

    对于每个单独的View,可以在布局文件中为每个View元素添加style属性。

    或者为整个Activity或者app添加android:theme属性

如果把样式应用到一个ViewGroup的时候,该group中的子view不会继承这些属性。

  1. manifest文件起什么作用?

答:为了把样式作为主题,你必须在manifest文件中进行定义,这样该Activity或者app中的所有View都会应用其所能支持的属性。

  1. 如何设置主题?如何微调已有主题?

答:在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>

  1. 如何基于不同的平台由系统自动选择不同的主题?

答:在更高的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来定义样式即可,会自动根据平台的不同而只用不同的系统主题。

  1. 屏幕大小的分类有哪些?

答:大小的分类有:small, normal, large, xlarge;

  1. 密度的分类有哪些?

答:密度的分类有:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)

  1. 屏幕的方向有哪些?

答:屏幕的方向(landscape或者portrait,也就是纵向和横向)。

  1. 为什么需要根据屏幕不同来定义不同的布局文件?不同大小屏幕的布局文件怎么存放?

答:为了针对不同的屏幕大小优化你的用户的体验,你应该为每种你要支持的屏幕大小创建一个唯一的XML布局文件。每种布局存放在对应的资源目录中,目录名字以-<screen_size>作为后缀。例如大屏幕存为res/layout-large/。

  1. 为什么需要根据屏幕密度提供不同的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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值