Android四大组件之一:Activity
2015-07-15 20:33
597 查看
1.Android的介绍
是一种基于Linux的自由及开放源码的操作系统
主要使用于移动设备,如智能手机和平板电脑
由Google公司和开放手机联盟领导和开发
Android逐渐扩展到平板电脑和其它领域上,如电视,数码相机,游戏机等。
2.Android历史
[1]Android操作系统最初Andy Rubin开发,主要支持手机。2005年由Google注资收购。
[2]第一部Android手机发布于2008年10月。生产厂商HTC。
[3]2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
[4]2013第四季度,Android平台手机的全球市场份额已经达到78.1%
[5]2013年09月24日谷歌开发的操作系统Android迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
3.编程语言
C/C++ (Android底层开发)
java (Android应用层开发)
4.创建Android工程
创建工程 File --> new --> AndroidProject --> 填写工程名(命名规则) --> 包名(必须小写)com.exp.myapplication
src -------存放源码
res -------存放资源(例如图片,音频,布局文件,字符串等资源)
drawable-------存放图片,由高中低三种分辨率的文件夹组成
layout -------存放布局文件
values --------存放文字,颜色值,单位等字符串内容
raw --------存放体积较小的音频,视频文件
gen -------存放资源的索引文件(res中的每一个资源都有一个对应的索引静态常量)
注意:gen中的文件由系统生成,不允许程序员手动修改
索引名是资源名,所以资源一定要符合java标示符的命名规则
bin -------存放编译后的源码和资源,以及apk包
assets ----外部资源文件夹,存放资源,且不会在R文件中生成资源的索引。
AndroidManifest.xml------清单文件,在android程序安装的时候,载入清单文件。
清单文件用来描述应用程序的信息
5.标签语言(描述语言)
<开始标签 标签属性01 = "属性值"
标签属性02 = "属性值">
标签内容
<标签名 属性 = "属性值" />
</结束标签>
6.Android应用程序安装运行过程描述
1.安装apk包,载入清单文件AndroidManifest.xml
2.通过清单文件,得到默认启动的第一个屏幕
3.调用入口屏幕类中的onCreate方法
4.执行onCreate中的代码,载入布局文件并解析,生成控件对象,显示到屏幕上。
7.Android四大组件之一:Activity
[1]Activity(活动类)是应用程序的一个component(组件),它提供一个屏幕,用户可以用来交互完成某项任务。例如打电话,发邮件,玩游戏等等等。
[2]Activity四种状态
1.Running 显示在屏幕的最前端
2.Killed 系统将Activity对象从内存中删除
3.Paused 屏幕可见,但是失去焦点,无法和用户进行交互
4.Stoped 不可见
用户启动应用程序,入口activity处于running状态
用户按home按钮时,入口activity处于stoped状态
用户按back按钮时,入口activity处于killed状态
[3]Activity屏幕的切换
1.创建Activity的子类
2.在清单文件中注册该类
3.制作显示在Activity上的布局文件 new --> Android XML --> 选择Layout --> 注意布局文件名小写
4.调用setContentView 绑定布局文件
5.切换屏幕
Intent intent = new Intent();
intent.setClass(this, MyActivity.class);
startActivity(intent);
[4]Activity生命周期
1.Activity组件
[1]Activity之间的数据传输,使用意图对象。
保存数据 key数据的标记。 value存放的数据
intent.putExtra(key, value);
取数据
Intent intent = this.getIntent();
value = intent.getStringExtra(key);
2.Intent意图
a.指定要跳转的Acitivity屏幕。
b.传递数据,将当前Activity中的数据传递到将要跳转的Activity中。
3.Activity任务栈
内存中的所有activity对象全部存放在任务栈(Task)中
应用程序显示的是栈顶的activity对象
当启动新的activity时,入栈
当销毁activity时,出栈
4.Activity启动模式
设置:在清单文件activity标签中lauchMode属性。默认属性standard。
1.standard模式:在切换屏幕时,创建activity对象
2.singleTop模式:在切换屏幕之前,系统检测栈顶元素是否为新切换的屏幕类型,如果是,不再创建activity对象。
3.singleTast模式:在切换屏幕之前,系统检测到任务栈中有和它类型一致的屏幕,那么activity对象上所有对象出栈。
4.singleInstance模式:在android系统的所有任务栈中只有一个activity对象。
是一种基于Linux的自由及开放源码的操作系统
主要使用于移动设备,如智能手机和平板电脑
由Google公司和开放手机联盟领导和开发
Android逐渐扩展到平板电脑和其它领域上,如电视,数码相机,游戏机等。
2.Android历史
[1]Android操作系统最初Andy Rubin开发,主要支持手机。2005年由Google注资收购。
[2]第一部Android手机发布于2008年10月。生产厂商HTC。
[3]2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
[4]2013第四季度,Android平台手机的全球市场份额已经达到78.1%
[5]2013年09月24日谷歌开发的操作系统Android迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
3.编程语言
C/C++ (Android底层开发)
java (Android应用层开发)
4.创建Android工程
创建工程 File --> new --> AndroidProject --> 填写工程名(命名规则) --> 包名(必须小写)com.exp.myapplication
src -------存放源码
res -------存放资源(例如图片,音频,布局文件,字符串等资源)
drawable-------存放图片,由高中低三种分辨率的文件夹组成
layout -------存放布局文件
values --------存放文字,颜色值,单位等字符串内容
raw --------存放体积较小的音频,视频文件
gen -------存放资源的索引文件(res中的每一个资源都有一个对应的索引静态常量)
注意:gen中的文件由系统生成,不允许程序员手动修改
索引名是资源名,所以资源一定要符合java标示符的命名规则
bin -------存放编译后的源码和资源,以及apk包
assets ----外部资源文件夹,存放资源,且不会在R文件中生成资源的索引。
AndroidManifest.xml------清单文件,在android程序安装的时候,载入清单文件。
清单文件用来描述应用程序的信息
package com.farsight.hello; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; /** * @author salkk123 * * * 用户开启入口activity时,调用的生命周期方法 onCreate --> onStart --> onResume --> running * * 用户点击back按钮时,调用的生命周期方法 onPause --> onStop --> onDestroy --> killed * * 用户点击home按钮时,调用的生命周期方法 onPause --> onStop --> stopped * * 用户点击应用程序,activity回到前台,调用生命周期方法 onRestart --> onStart --> onResume --> running * * ctrl + Alt + 方向键下 向下复制一行 * * ctrl + d 删除一行 * * ctrl + shift + f 格式化代码 * * Alt + ? 自动提示 * */ public class Android_01_HelloActivity extends Activity { // 创建 // 在framework层被android系统自动调用 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置当前屏幕上显示的视图 // 解析布局文件,生成控件对象 setContentView(R.layout.main); // //创建一个文本控件对象 // TextView tv = new TextView(this); // tv.setText("hello android"); // // setContentView(tv); // //输出异常信息 // Log.e("Test", "onCreate"); // 输出调试信息 Log.d("Test", "onCreate"); } // 得到画面 @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.d("Test", "onStart"); } // 得到焦点 @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.d("Test", "onResume"); } // 失去焦点 @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.d("Test", "onPause"); } // 失去画面 @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.d("Test", "onStop"); } // 销毁 @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.d("Test", "onDestroy"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.d("Test", "onRestart"); } }
5.标签语言(描述语言)
<开始标签 标签属性01 = "属性值"
标签属性02 = "属性值">
标签内容
<标签名 属性 = "属性值" />
</结束标签>
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.farsight.hello" android:versionCode="1" android:versionName="1.0" > <!-- 注释语句 --> <uses-sdk android:minSdkVersion="14" /> <!-- 描述应用程序基本信息 --> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <!-- 描述应用程序由一个屏幕组成 --> <activity android:label="@string/app_name" android:name=".Android_01_HelloActivity" > <!-- 表示该应用程序的入口屏幕为Android_01_HelloActivity --> <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
6.Android应用程序安装运行过程描述
1.安装apk包,载入清单文件AndroidManifest.xml
2.通过清单文件,得到默认启动的第一个屏幕
3.调用入口屏幕类中的onCreate方法
4.执行onCreate中的代码,载入布局文件并解析,生成控件对象,显示到屏幕上。
7.Android四大组件之一:Activity
[1]Activity(活动类)是应用程序的一个component(组件),它提供一个屏幕,用户可以用来交互完成某项任务。例如打电话,发邮件,玩游戏等等等。
[2]Activity四种状态
1.Running 显示在屏幕的最前端
2.Killed 系统将Activity对象从内存中删除
3.Paused 屏幕可见,但是失去焦点,无法和用户进行交互
4.Stoped 不可见
用户启动应用程序,入口activity处于running状态
用户按home按钮时,入口activity处于stoped状态
用户按back按钮时,入口activity处于killed状态
[3]Activity屏幕的切换
1.创建Activity的子类
2.在清单文件中注册该类
3.制作显示在Activity上的布局文件 new --> Android XML --> 选择Layout --> 注意布局文件名小写
4.调用setContentView 绑定布局文件
5.切换屏幕
Intent intent = new Intent();
intent.setClass(this, MyActivity.class);
startActivity(intent);
[4]Activity生命周期
package com.farsight.activities; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; //Android是一个以事件驱动的操作系统 public class MainActivity extends Activity implements OnClickListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //通过按钮资源的索引,取出按钮对象的引用(地址) Button btn = (Button) findViewById(R.id.button1); Button btnNew = (Button) findViewById(R.id.button2); //修改按钮对象的文字属性 // btn.setText("....."); // //给按钮添加一个监听功能,监听用户点击按钮 // btn.setOnClickListener(new OnClickListener() { // // //当用户点击按钮时,系统自动调用该方法 // public void onClick(View v) { // // TODO Auto-generated method stub // Log.e("Test", "onClick"); // } // }); btn.setOnClickListener(this); btnNew.setOnClickListener(this); } //用户点击按钮,系统自动调用onClick方法 //系统传入的参数v,是用户点击的按钮对象的引用 public void onClick(View v) { // TODO Auto-generated method stub if(v.getId() == R.id.button1) { Log.e("Test", "onClick ..."); //切换屏幕 //意图对象(intent) 描述切换屏幕的动作 Intent intent = new Intent(); //指定了切换的目标屏幕 //Context 上下文 是 Activity的父类 intent.setClass(this, SecondActivity.class); //执行意图,启动SecondActivity startActivity(intent); } else if(v.getId() == R.id.button2) Log.e("Test", "onClick button"); } }
package com.farsight.activities; import android.app.Activity; import android.os.Bundle; public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.farsight.activities" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name="MainActivity" > <!-- 包含该标签的activity为入口activity --> <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="SecondActivity" > </activity> </application> </manifest>
1.Activity组件
[1]Activity之间的数据传输,使用意图对象。
保存数据 key数据的标记。 value存放的数据
intent.putExtra(key, value);
取数据
Intent intent = this.getIntent();
value = intent.getStringExtra(key);
package com.farsight.intent; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; public class Android_04_IntentActivity extends Activity { EditText etUser; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); etUser = (EditText) findViewById(R.id.editText1); final EditText etPass = (EditText) findViewById(R.id.editText2); findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(Android_04_IntentActivity.this, InfoActivity.class); //在内部类中,只能引用局部常量。 String number1 = etUser.getText().toString(); String number2 = etPass.getText().toString(); intent.putExtra("number1", number1); intent.putExtra("number2", number2); startActivity(intent); } }); } }
2.Intent意图
a.指定要跳转的Acitivity屏幕。
b.传递数据,将当前Activity中的数据传递到将要跳转的Activity中。
package com.farsight.intent; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class InfoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_info); Intent intent = this.getIntent(); String number1 = intent.getStringExtra("number1"); String number2 = intent.getStringExtra("number2"); int n1 = Integer.parseInt(number1); int n2 = Integer.parseInt(number2); TextView tv = (TextView) findViewById(R.id.textView1); tv.setText(number1 + "+" + number2 + "=" + (n1 + n2)); } }
3.Activity任务栈
内存中的所有activity对象全部存放在任务栈(Task)中
应用程序显示的是栈顶的activity对象
当启动新的activity时,入栈
当销毁activity时,出栈
package com.farsight.back; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Toast; public class Android_05_BackActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Android_05_BackActivity.this.finish(); } }); } //用户按物理键时,系统调用该方法 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub Toast.makeText(this, "按键", Toast.LENGTH_SHORT).show(); if(keyCode == KeyEvent.KEYCODE_BACK){ this.finish(); //可以关闭activity return true; } return super.onKeyDown(keyCode, event); } }
4.Activity启动模式
设置:在清单文件activity标签中lauchMode属性。默认属性standard。
1.standard模式:在切换屏幕时,创建activity对象
2.singleTop模式:在切换屏幕之前,系统检测栈顶元素是否为新切换的屏幕类型,如果是,不再创建activity对象。
3.singleTast模式:在切换屏幕之前,系统检测到任务栈中有和它类型一致的屏幕,那么activity对象上所有对象出栈。
4.singleInstance模式:在android系统的所有任务栈中只有一个activity对象。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.farsight.lauchmode" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".MainActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="SecondActivity" android:launchMode="singleTop"></activity> <activity android:name="ThirdActivity"></activity> </application> </manifest>
相关文章推荐
- android—socket-udp出现EADDRNOTAVAIL
- Android音乐播放器 -- 实现框架
- Android中如何使用ViewPager
- Android AIDL Service 跨进程传递复杂数据
- android按Menu出现菜单的动画
- Android WebDAV 客户端实现
- android产生8位16进制的随机数
- android按两次返回键退出程序
- Intent组件
- Android 使用MD5对SharedPreferences密码进行加密
- Android图片浏览器之图片删除
- android菜鸟学习笔记26----Android广播消息及BroadcastReceiver
- android 视图getParent,getChildAt
- android studio 更新 Gradle错误解决方法
- ArrayAdapter中的android.R.id.text1是什么
- 辗转到了Android
- Android Intents with Chrome
- Android 录音
- Android 你应该知道的学习资源 进阶之路贵在坚持
- android MediaRecorder 与 AudioRecord 差异