Android初识
2017-11-23 22:14
127 查看
写在前面的话:
这些材料均来自与《Android权威指南》,最近要进行考试,故对书中的知识点进行罗列,方便查阅。感谢大学老师的教诲,希望各位在学海苦作舟的同志,能给予指正。
Android初识:
用户界面设计
应用activity的默认布局定义了两个组件(widget): RelativeLayout和TextView。Android SDK内置了多种组件,通过配置各种组件可获得所需的用户界面及行为。每一个组
件都是View类或其子类(如TextView或Button)的一个具体实例。
视图层级结构
组件包含在视图对象的层级结构中,这种结构称作视图层级结构(view hierarchy)
LinearLayout组件继承自View子类的ViewGroup组件。 ViewGroup组件是个包含并配置其
他组件的特殊组件。
其他ViewGroup子类还包括FrameLayout、 TableLayout和RelativeLayout
组件属性
1. android:layout_width和android:layout_height属性
2. android:orientation属性
3. android:text属性
创建字符串资源
每个项目均有strings.xml的默认字符串文件
从布局XML 到视图对象
activity子类的实例创建后, onCreate(Bundle)方法会被调用。 activity创建后,它需要获取
并管理属于自己的用户界面。获取activity的用户界面,可调用以下Activity方法:
public void setContentView(intlayoutResID)
根据传入的布局资源ID参数,该方法生成指定布局的视图并将其放置在屏幕上。布局视图生
成后,布局文件包含的组件也随之以各自的属性定义完成实例化。
资源与资源ID
布局是一种资源。 资源是应用非代码形式的内容
修改资源后,资源文件不会实时刷新。 Android Studio另外还存有一份代码编译用的R.java隐
藏文件。当前编辑区打开的R.java文件仅在应用安装至设备或模拟器前产生,因此只有在Android
Studio中点击运行应用时,它才会得到更新。
Android为整个布局文件以及各个字符串生成资源ID,但activity_quiz.xml布局文件中的组件
除外,因为不是所有的组件都需要资源ID。
组件的实际应用
编码使用按钮组件,这需要以下两个步骤:
1、引用生成的视图对象
2、为对象设置监听器,以响应用户操作。
引用组件
通过以下Activity方法引用已生成的组件:
public View findViewById(intid)
方法以组件的资源ID作为参数,返回一个视图对象。
设置监听器
Android应用属于典型的事件驱动类型,事件驱动型应用启动后,即开始等待行为事件的发生。
为响应某个事件而创建的对象叫作监听器(listener)。 监听器是实现特定监听器接口的对象,用来监听某类事件的发生
例. 为TRUE按钮设置监听器 (使用匿名内部类)
mTrueButton.setOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View v) {
// Does nothing yet, but soon!
}
});
创建提示消息
调用来自Toast类的以下方法,可创建一个toast:
public static ToastmakeText(Context context, int resId, int duration)
该方法的Context参数通常是Activity的一个实例(Activity本身就是Context的子类)
创建toast后,可调用Toast.show()方法在屏幕上显示toast消息
Eg.
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(QuizActivity.this,
R.string.incorrect_toast,
Toast.LENGTH_SHORT).show();
// Does nothing yet, but soon!
}
});
Android 编译过程
应用的activity_quiz.xml布局文件的内容该如何转变为View对象呢?
作为编译过程的一部分, aapt(Android Asset Packaging Tool)将布局文件资源编译压缩紧凑后,打包到.apk文件
中。然后,在QuizActivity类的onCreate(...)方法调用setContentView(...)方法时,
QuizActivity使用LayoutInflater类实例化布局文件中定义的每一个View对象
生成获取方法与设置方法
如果我们需要对新增的两个变量需要获取方法与设置方法。为避免手工输入,可设置由Android Studio自动生成。
1、首先,配置Android Studio识别成员变量的m前缀。
2、回到Question.java中,右击构造方法后方区域,选择Generate... → Getter And Setter菜单项。
选择mTextResId和mAnswerTrue,为每个变量都生成获取方法与设置方法
Android 与 MVC 设计模式
应用对象按模型、控制器和视图的类别分为三部分。 Android应用基于模型-
控制器-视图(Model-View-Controller, MVC)的架构模式进行设计。
1、模型对象存储着应用的数据和业务逻辑。模型类通常用来映射与应用相关的一些事物,如
用户、商店里的商品、服务器上的图片或者一段电视节目;模型对象不关心用户界面,它存在的唯一目的就是存储和管理应用数据。
2、 视图对象知道如何在屏幕上绘制自己以及如何响应用户的输入,如用户的触摸等。一个
简单的经验法则是,凡是能够在屏幕上看见的对象,就是视图对象。
3、 控制对象含有应用的逻辑单元,是视图与模型对象的联系纽带。控制对象响应视图对象
触发的各类事件,此外还管理着模型对象与视图间的数据流动。
在 XML文件中引用资源
通过资源类型和资源名称,可引用其他资源。以@string/开头的定义
是引用字符串资源。以@drawable/开头的定义是引用drawable资源
Activity的生命周期(处理旋转问题时)
activity在运行、暂停和停止三种可能的状态间进行转换。每次状态发生转换时,都有对应的Activity方法将状态改变的消息通知给activity。
完整的生命周期:
两者的区别就是完整的生命周期加入了 暂存状态。因为在日常使用中,不仅仅处理设备旋转问题,还有用户用户离开当前activity管理的用户界面,或Android需要回收内存时, activity也会被销毁。基于用户体验考虑, Android从不会为了回收内存,而去销毁正在运行的activity。 activity在暂停或停止状态下才可能会被销毁。此时,会调用onSaveInstanceState(...)方法来存储数据,也就是暂存状态。
activity通过覆盖onCreate(...)方法来准备以下用户界面相关的工作:
1、实例化组件并将组件放置在屏幕上(调用setContentView(int)方法) ;
2、引用已实例化的组件;
3、为组件设置监听器以处理用户交互;
4、访问外部模型数据。
设备旋转与Activity 生命周期
设备旋转时,系统会销毁当前QuizActivity实例,然后创建一个新的QuizActivity实例。
Actitity销毁的两种情况
用户离开当前activity管理的用户界面,或Android需要回收内存时, activity也会被销毁
设备配置与备选资源
旋转设备会改变设备配置 设备配置是用来描述设备当前状态的一系列特征。这些特征包括:屏幕的方向、屏幕的密度、屏幕的尺寸、键盘类型、底座模式以及语言,等等。
Android可自动完成最佳匹配资源的调用,但前提是它必须通过新建一个activity来实现。
QuizActivity要显示一个新布局,需再次调用setContentView(R.layout.activity_quiz)
方法。而调用setContentView(R.layout.activity_quiz)方法又必须先调用QuizActivity.
onCreate(...)方法。因此,设备一经旋转, Android需要销毁当前的QuizActivity,然后新建
一个QuizActivity来完成QuizActivity.onCreate(...)方法的调用,从而实现使用最佳资源
匹配新的设备配置。
注意:在应用运行中,只要设备配置发生了改变, Android就会销毁当前activity,然后再
创建新的activity。
设备旋转前保存数据
在设备运行中发生配置变更时,如设备旋转,需采用某种方式保存以前的数据。覆盖以下
Activity方法就是一种实现方式:
protected void onSaveInstanceState(Bundle outState)
关键:该方法通常在onPause()、 onStop()以及onDestroy()方法之前由系统调用
该方法默认实现要求所有activity视图将自身状态数据保存在Bundle对象中。 Bundle是存储字符串键与限定类型值之间映射关系(键值对)的一种结构。
局限:在Bundle中存储和恢复的数据类型只能是基本数据类型(primitivetype)以及可以实
现Serializable或Parcelable接口的对象。在Bundle中保存定制类对象不是个好主意,因为
你取回的对象可能已经过时了。
这些材料均来自与《Android权威指南》,最近要进行考试,故对书中的知识点进行罗列,方便查阅。感谢大学老师的教诲,希望各位在学海苦作舟的同志,能给予指正。
Android初识:
用户界面设计
应用activity的默认布局定义了两个组件(widget): RelativeLayout和TextView。Android SDK内置了多种组件,通过配置各种组件可获得所需的用户界面及行为。每一个组
件都是View类或其子类(如TextView或Button)的一个具体实例。
视图层级结构
组件包含在视图对象的层级结构中,这种结构称作视图层级结构(view hierarchy)
LinearLayout组件继承自View子类的ViewGroup组件。 ViewGroup组件是个包含并配置其
他组件的特殊组件。
其他ViewGroup子类还包括FrameLayout、 TableLayout和RelativeLayout
组件属性
1. android:layout_width和android:layout_height属性
2. android:orientation属性
3. android:text属性
创建字符串资源
每个项目均有strings.xml的默认字符串文件
从布局XML 到视图对象
activity子类的实例创建后, onCreate(Bundle)方法会被调用。 activity创建后,它需要获取
并管理属于自己的用户界面。获取activity的用户界面,可调用以下Activity方法:
public void setContentView(intlayoutResID)
根据传入的布局资源ID参数,该方法生成指定布局的视图并将其放置在屏幕上。布局视图生
成后,布局文件包含的组件也随之以各自的属性定义完成实例化。
资源与资源ID
布局是一种资源。 资源是应用非代码形式的内容
修改资源后,资源文件不会实时刷新。 Android Studio另外还存有一份代码编译用的R.java隐
藏文件。当前编辑区打开的R.java文件仅在应用安装至设备或模拟器前产生,因此只有在Android
Studio中点击运行应用时,它才会得到更新。
Android为整个布局文件以及各个字符串生成资源ID,但activity_quiz.xml布局文件中的组件
除外,因为不是所有的组件都需要资源ID。
组件的实际应用
编码使用按钮组件,这需要以下两个步骤:
1、引用生成的视图对象
2、为对象设置监听器,以响应用户操作。
引用组件
通过以下Activity方法引用已生成的组件:
public View findViewById(intid)
方法以组件的资源ID作为参数,返回一个视图对象。
设置监听器
Android应用属于典型的事件驱动类型,事件驱动型应用启动后,即开始等待行为事件的发生。
为响应某个事件而创建的对象叫作监听器(listener)。 监听器是实现特定监听器接口的对象,用来监听某类事件的发生
例. 为TRUE按钮设置监听器 (使用匿名内部类)
mTrueButton.setOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View v) {
// Does nothing yet, but soon!
}
});
创建提示消息
调用来自Toast类的以下方法,可创建一个toast:
public static ToastmakeText(Context context, int resId, int duration)
该方法的Context参数通常是Activity的一个实例(Activity本身就是Context的子类)
创建toast后,可调用Toast.show()方法在屏幕上显示toast消息
Eg.
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(QuizActivity.this,
R.string.incorrect_toast,
Toast.LENGTH_SHORT).show();
// Does nothing yet, but soon!
}
});
Android 编译过程
应用的activity_quiz.xml布局文件的内容该如何转变为View对象呢?
作为编译过程的一部分, aapt(Android Asset Packaging Tool)将布局文件资源编译压缩紧凑后,打包到.apk文件
中。然后,在QuizActivity类的onCreate(...)方法调用setContentView(...)方法时,
QuizActivity使用LayoutInflater类实例化布局文件中定义的每一个View对象
生成获取方法与设置方法
如果我们需要对新增的两个变量需要获取方法与设置方法。为避免手工输入,可设置由Android Studio自动生成。
1、首先,配置Android Studio识别成员变量的m前缀。
2、回到Question.java中,右击构造方法后方区域,选择Generate... → Getter And Setter菜单项。
选择mTextResId和mAnswerTrue,为每个变量都生成获取方法与设置方法
Android 与 MVC 设计模式
应用对象按模型、控制器和视图的类别分为三部分。 Android应用基于模型-
控制器-视图(Model-View-Controller, MVC)的架构模式进行设计。
1、模型对象存储着应用的数据和业务逻辑。模型类通常用来映射与应用相关的一些事物,如
用户、商店里的商品、服务器上的图片或者一段电视节目;模型对象不关心用户界面,它存在的唯一目的就是存储和管理应用数据。
2、 视图对象知道如何在屏幕上绘制自己以及如何响应用户的输入,如用户的触摸等。一个
简单的经验法则是,凡是能够在屏幕上看见的对象,就是视图对象。
3、 控制对象含有应用的逻辑单元,是视图与模型对象的联系纽带。控制对象响应视图对象
触发的各类事件,此外还管理着模型对象与视图间的数据流动。
在 XML文件中引用资源
通过资源类型和资源名称,可引用其他资源。以@string/开头的定义
是引用字符串资源。以@drawable/开头的定义是引用drawable资源
Activity的生命周期(处理旋转问题时)
activity在运行、暂停和停止三种可能的状态间进行转换。每次状态发生转换时,都有对应的Activity方法将状态改变的消息通知给activity。
完整的生命周期:
两者的区别就是完整的生命周期加入了 暂存状态。因为在日常使用中,不仅仅处理设备旋转问题,还有用户用户离开当前activity管理的用户界面,或Android需要回收内存时, activity也会被销毁。基于用户体验考虑, Android从不会为了回收内存,而去销毁正在运行的activity。 activity在暂停或停止状态下才可能会被销毁。此时,会调用onSaveInstanceState(...)方法来存储数据,也就是暂存状态。
activity通过覆盖onCreate(...)方法来准备以下用户界面相关的工作:
1、实例化组件并将组件放置在屏幕上(调用setContentView(int)方法) ;
2、引用已实例化的组件;
3、为组件设置监听器以处理用户交互;
4、访问外部模型数据。
设备旋转与Activity 生命周期
设备旋转时,系统会销毁当前QuizActivity实例,然后创建一个新的QuizActivity实例。
Actitity销毁的两种情况
用户离开当前activity管理的用户界面,或Android需要回收内存时, activity也会被销毁
设备配置与备选资源
旋转设备会改变设备配置 设备配置是用来描述设备当前状态的一系列特征。这些特征包括:屏幕的方向、屏幕的密度、屏幕的尺寸、键盘类型、底座模式以及语言,等等。
Android可自动完成最佳匹配资源的调用,但前提是它必须通过新建一个activity来实现。
QuizActivity要显示一个新布局,需再次调用setContentView(R.layout.activity_quiz)
方法。而调用setContentView(R.layout.activity_quiz)方法又必须先调用QuizActivity.
onCreate(...)方法。因此,设备一经旋转, Android需要销毁当前的QuizActivity,然后新建
一个QuizActivity来完成QuizActivity.onCreate(...)方法的调用,从而实现使用最佳资源
匹配新的设备配置。
注意:在应用运行中,只要设备配置发生了改变, Android就会销毁当前activity,然后再
创建新的activity。
设备旋转前保存数据
在设备运行中发生配置变更时,如设备旋转,需采用某种方式保存以前的数据。覆盖以下
Activity方法就是一种实现方式:
protected void onSaveInstanceState(Bundle outState)
关键:该方法通常在onPause()、 onStop()以及onDestroy()方法之前由系统调用
该方法默认实现要求所有activity视图将自身状态数据保存在Bundle对象中。 Bundle是存储字符串键与限定类型值之间映射关系(键值对)的一种结构。
局限:在Bundle中存储和恢复的数据类型只能是基本数据类型(primitivetype)以及可以实
现Serializable或Parcelable接口的对象。在Bundle中保存定制类对象不是个好主意,因为
你取回的对象可能已经过时了。
相关文章推荐
- Android Parcel初识
- 初识Android
- 1.2……初识Android开发
- Android Volley完全解析(一),初识Volley的基本用法【转】
- Android ObjectAnimator动画初识、模仿
- 初识Android平台
- Android MVP模式的初识
- Android属性动画完全解析(上),初识属性动画的基本用法
- Android自定义控件——初识
- Android Activity 初识(二)
- Android零基础入门第37节:初识ListView
- Android 7.0 Gallery图库源码分析1 - 初识Gallery源码
- Android Volley完全解析(一),初识Volley的基本用法
- android网络框架OkHttp之get请求(源码初识)
- Android软件安全与逆向分析入门-壹-初识反编译
- Android进阶——ViewPager详解之初识ViewPager(一)
- Android属性动画完全解析(上),初识属性动画的基本用法
- Android Volley完全解析(一),初识Volley的基本用法
- Android Volley完全解析(一),初识Volley的基本用法(转)
- 初识Android自定义控件之圆形百分比图表的制作