文章目录

  • 组件属性
    • 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 level
Log.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 traceLog.e(TAG,"Index was out of bounds", ex);
}

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

Android日记01相关推荐

  1. python爬虫日记01

    PYTHON爬虫日记01 记录自己的学习爬虫日记 选用python作为编程语言 1.环境准备 python3.6+ mysql pycharm 2.思路 以爬取猫眼top100为目标 ​ 1.分析ur ...

  2. 《教我兄弟学Android逆向01 编写第一个Android程序》

    前言 之所以准备写这一系列逆向的教程是因为有一些同学私信我说自己想学习Android逆向但是不知道怎么去学习 包括自己身边的一些计算机专业的同学 在大学里面老师讲的那些东西要么是自己不感兴趣 要么是自 ...

  3. CodeLab:Android fundamentals 01.3:Text and scrolling views

    Android fundamentals 01.3:Text and scrolling views Tutorial source : Google CodeLab Date : 2021/04/0 ...

  4. [ VRTK ] --- 学习日记01

    [ VRTK ] --- 学习日记01 一.简介 1.VR Toolkit 虚拟现实工具包(是什么) 2.VRTK 的导入(从哪来) 3.VRTK 的配置(怎么用) VR游戏不仅能给人强烈的沉浸感还能 ...

  5. 【Android】 01. APP 进程启动和 ActivityThread 的关系

    2019独角兽企业重金招聘Python工程师标准>>> 首先我们应该知道2个概念: 我们应该知道在Android中一个app就是一个进程: 我们在普通的Java程序中一个程序的入口是 ...

  6. Android复习01(内部存储、外部存储、SD卡存储、XML解析、Json解析、保存登录密码)

    2020年 3月19日 星期四 [第5周]Android录播回放 笔记 https://gitee.com/wang_zhiguo/Course0501 老师把上课用的案例源码,放在了Gitee仓库中 ...

  7. (转)android技巧01:Preferencescreen中利用intent跳转activity

    原文连接:http://blog.csdn.net/xianming01/article/details/7543464 设置中的Preferencescreen不仅可以作为设置界面显示,而且还能够启 ...

  8. android官方文档中文版_Now in Android:01 - 如何掌握最新的 Android 技术?

    每隔几天我都会通过 Android Developers 的油管官方频道,来了解一下最近 Android 发布了哪些有趣的新技术,最近发现官方推出了一个新的系列视频叫做:Now in Android, ...

  9. 写一个Android输入法01——最简步骤

    本文演示用Android Studio写一个最简单的输入法.界面和交互都很简陋,只为剔肉留骨,彰显写一个Android输入法的要点. 1.打开Android Studio创建项目,该项目和普通APP的 ...

最新文章

  1. android tombstone发生过程,Android Tombstone 分析
  2. 愚人节“整人”小心被病毒“整”
  3. 如何用python最快的获取大文件的最后几行
  4. 12如何隐藏dock栏_iPhone边框“变色”壁纸,隐藏Dock栏
  5. python pp模块_Python模块--Pexpect
  6. mysql变量string_mysql sql语句有变量 time_t变量转换为string
  7. 黑马程序员——java语言基础——面向对象
  8. 连接linux工具Mtr,Linux常用网络工具:路由扫描之mtr
  9. 源码 状态机_阿里中间件seata源码剖析七:saga模式实现
  10. 二叉树两节点距离java,求二叉树中两个节点的最远距离
  11. 最小生成树之迪杰斯特拉算法(Dijkstra算法)之单源最短路径
  12. 22.实例 --- nginx 虚拟主机
  13. js判断ie 火狐 还是chrome浏览器
  14. cdr怎么抠图轮廓线条_cdr怎么快速抠图呢 需要技巧
  15. html 隐藏广告代码,Javascript实现关闭广告实现删除广告的效果
  16. 软骨鱼是WordPress构建SaaS平台的最优解决方案
  17. 微信小程序实现水果转盘游戏
  18. 【1011】甲流疫情死亡率
  19. springboot异步和切面_SpringBoot强化篇(八)-- Spring AOP
  20. esp32 + DHT11温湿度传感器+阿里云物联网平台实时数据显示 实现设备上云

热门文章

  1. Android实战开发-Kotlin教程(语法篇 1.2)
  2. Java并发原理抽丝剥茧,读写锁ReadWriteLock实现深入剖析
  3. “魔鬼交易员”不过是赌徒
  4. 利用抓包下载钉钉直播回放
  5. 权限管理SpringSecurity Oauth2整合JWT实战总结(三)
  6. 使用quercus在tomcat环境中运行php程序
  7. 轮胎翻新硫化机液压系统比例阀放大器
  8. 机器学习、模式识别、知识发现、数据挖掘等的书评
  9. CorelDRAW X7 17.1.0.572 (64位)
  10. 解决【找不到模块“./index.module.scss”或其相应的类型声明。ts(2307)】