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);
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>