文章目录

  • 组件属性
    • android:layout _width和android:layout_height属性
    • android :orientation属性
    • android:text属性
  • Android与MVC设计模式
  • 日志记录的级别与方法

组件属性

配置组件时常用的一些属性。

android:layout _width和android:layout_height属性

几乎每类组件都需要android:layout_width和android:layout_height属性。以下是它们的两个常见属性值(二选一)。

match_parent:视图与其父视图大小相同。

wrap_content:视图将根据其显示内容自动调整大小。

(以前还使用fill_parent属性值,等同于match_parent,现已废弃不用。)

根LinearLayout组件的高度与宽度属性值均为match parent。LinearLayout虽然是根元素,但它也有父视图——Android提供该父视图来容纳应用的整个视图层级结构。

其他包含在界面布局中的组件,其高度与宽度属性值均被设置为wrap_content。

TextView组件比其包含的文字内容区域稍大一些,这主要是android: padding="24dp"属性的作用。该属性告诉组件在决定大小时,除内容本身外,还需增加额外指定量的空间。这样屏幕上显示的问题与按钮之间便会留有一定的空间,使整体显得更为美观。

android :orientation属性

android:orientation属性是两个LinearLayout组件都具有的属性,它决定两者的子组件是水平放置还是垂直放置。根LinearLayout是垂直的,子LinearLayout是水平的。

子组件的定义顺序决定其在屏幕上显示的顺序。在垂直的LinearLayout中,第一个定义的子组件出现在屏幕的最上端:而在水平的LinearLayout中,第一个定义的子组件出现在屏幕的最左端。(如果设备文字从右至左显示,如阿拉伯语或者希伯来语,第一个定义的子组件则出现在屏幕的最右端。)

android:text属性

TextView与Button组件具有android:text属性。该属性指定组件要显示的文字内容。

注意,android:text属性值不是字符串值,而是对字符串资源( string resource)的引用。

字符串资源包含在一个独立的名叫strings的XML文件中( strings.xml ),虽然可以硬编码设置组件的文本属性值,如android:text=“True”。

实际开发中,一般会将文字内容放置在独立的字符串资源XML文件中,然后引用它们。这样会方便应用的本地化(支持多国语言)。

Android与MVC设计模式

应用对象分为模型(实体类)、视图(布局xml文件)和控制器(Activity)三类。
Android应用基于模型-视图-控制器( Model-View-Controller,MVC)的架构模式进行设计。MVC设计模式表明,应用的任何对象,归根结底都属于模型对象、视图对象以及控制器对象中的一种。

  • 模型对象存储着应用的数据和业务逻辑。模型类通常用来映射与应用相关的一些事物,如用户、商店里的商品、服务器上的图片或者一段电视节目抑或GeoQuiz应用里的地理知识问题。模型对象不关心用户界面,它为存储和管理应用数据而生。

    Android应用里,模型类通常就是我们创建的定制类。应用的全部模型对象组成了模型层。GeoQuiz应用的模型层由实体类组成。

  • 视图对象知道如何在屏幕上绘制自己以及加何响应用户的输入,如触摸动作等。一个简单的经验法则是,凡是能够在屏幕上看见的对象,就是视图对象。

    Android自带很多可配置的视图类。当然,也可以定制开发其他视图类。应用的全部视图对象组成了视图层

  • 控制器对象含有应用的逻辑单元,是视图对象与模型对象的联系纽带。控制器对象响应视图对象触发的各类事件,此外还管理着模型对象与视图层间的数据流动。

    在Android的世界里,控制器通常是Activity、Fragment或Service的子类

随着应用功能的持续扩展,应用往往会变得过于复杂而让人难以理解。以Java类组织代码有助于从整体视角设计和理解应用。这样,我们就可以按类而不是按变量和方法思考设计开发问题。
同样,把Java类以模型层、视图层和控制器层进行分类组织,也有助于我们设计和理解Android应用。这样,我们就可以按层而非一个个类来考虑设计开发了。
MVC设计模式还便于复用类。相比功能多而全的类,功能单一的专用类更有利于代码复用。举例来说,模型类Question与用作显示问题的组件毫无代码逻辑关联。这样,就很容易在应用里按需使用Question类。假设现在想显示包含所有地理知识问题的列表,很简单,直接利用Question对象逐条显示就可以了。

日志记录的级别与方法

使用android.util.Log类记录日志,不仅可以控制日志的内容,还可以控制用来区分信息重要程度的日志级别。Android支持五种日志级别。每一个级别对应一个Log类方法。要输出什么级别的日志,调用对应的Log类方法就可以了。

日志级别与方法

日志级别 方法 方法
ERROR Log.e( … .) 错误
WARNING Log.w( … .) 警告
INFO Log.i( … .) 信息型消息
DEBUG Log.d( … .) 调试输出(可能被过滤掉)
VERBOSE Log.v( … .) 仅用于开发

需要说明的是,所有的日志记录方法都有两种参数签名: string类型的tag参数和msg参数;除tag和msg参数外再加上Throwable实例参数。附加的Throwable实例参数为应用抛出异常时记录异常信息提供了方便。

两种方法不同参数签名的使用实例。对于输出的日志信息,可使用常用的Java字符串连接操作拼接出需要的信息,或者使用String.format对输出日志信息进行格式化操作,以满足个性化的使用要求。

Android的各种日志记录方式

//Log a message at "debug" log levelLog.d(TAG,"Current question index: " + mCurrentIndex);//实体类对象Question question;try {     question = mQuestionBank[ mCurrentIndex];} catch (ArrayIndexOutOfBoundsException ex) {     // Log a message at "error" log level,along with an exception stack trace    Log.e(TAG,"Index was out of bounds", ex);}

参考:《Android编程权威指南》(第3版)

更多相关文章

  1. Android:EditText 多行显示及所有属性
  2. Android(安卓)textAppearance的属性设置及TextView属性详解
  3. android:inputType属性
  4. Android(安卓)textAppearance的属性设置及TextView属性详解
  5. Android(安卓)textview 跑马灯 要加的属性
  6. android android:layout_weight (比重)
  7. Android:EditText 多行显示及所有属性
  8. listview android:cacheColorHint,android:listSelector属性作用
  9. Android(安卓)Shape属性

随机推荐

  1. android之碎片fragment的使用
  2. Android(安卓)Studio快捷键大全
  3. Android监测手机网络状态变化的广播
  4. 今晚没看完的几个网页,主要是alarm和一个U
  5. 关于Android中Dialog点击屏幕外失去焦点
  6. --Android引用so文件引发的血案
  7. android 拖拉控件
  8. Android仿QQ复制昵称效果
  9. 【android】消息传递利器EventBus的使用
  10. 懒人搭建OpenGrok for Android(安卓)N on