Android 应用开发环境搭建

Download Report

Transcript Android 应用开发环境搭建

基于Android的移
动应用开发
应用开发环境搭建
提纲
开发环境搭建
简单示例程序
提纲
Android应用开发环境搭建
简单示例程序
Android应用开发环境搭建
直接使用Android SDK
Eclipse + ADT + SDK
ADT Bundle
Android Studio
◦ 基于IntelliJ IDEA
注意:需要先安装JDK,并配置环境变量
http://www.oracle.com/technetwork/java/javase/down
loads/index.html
基于ADT Bundle的环境搭建
步骤1:下载ADT bundle
http://developer.android.com/sdk/index.html
步骤2:解压到某个文件夹下
包含eclipse、SDK及SDK Manager ,eclipse已经集成好了ADT。
步骤3:sdk更新
直接运行SDK Manager,或者从eclipse中启动SDK Manager
基于ADT Bundle的环境搭建
步骤3 :sdk更新(续)
基于ADT Bundle的环境搭建
步骤3 :sdk更新(续)
◦ 使用SDK Manager更新时出现问题:
Failed to fetch URL https://dl-ssl.google.com/android/repository/repository8.xml, reason: Connection to https://dl-ssl.google.com refused
◦ 解决方法:
打开C:\WINDOWS\system32\drivers\etc目录下的hosts文件,
添加以下内容:
203.208.46.146 www.google.com
74.125.113.121 developer.android.com
203.208.46.146 dl.google.com
203.208.46.146 dl-ssl.google.com
基于ADT Bundle的环境搭建
步骤4 :配置android模拟器
打开AVD管理器
基于ADT Bundle的环境搭建
步骤4 :配置android模拟器
新建AVD
基于ADT Bundle的环境搭建
步骤4 :配置android模拟器
点击start按钮运行AVD
基于ADT Bundle的环境搭建
步骤5 :真机调试
◦ 设置android手机为USB调试模式,步骤:menu—> 设
置 —> 应用程序 —> 开发,选择USB调试;
◦ USB连接电脑,安装手机驱动,如果没有相关的驱动的
话,可以安装豌豆荚进行驱动安装。
◦ 检测手机设备是否已经被识别
提纲
开发环境搭建
简单示例程序
简单示例程序-HelloWorld
步骤1:新建Android应用
简单示例程序-HelloWorld
步骤2:输入应用信息
简单示例程序-HelloWorld
步骤2:输入应用信息(续)
简单示例程序-HelloWorld
步骤2:输入应用信息(续)
简单示例程序-HelloWorld
步骤2:输入应用信息(续)
简单示例程序-HelloWorld
步骤2:输入应用信息(续)
简单示例程序-HelloWorld
运行和调试Android应用程序
◦ 选择Run->Run/Debug
运行和调试应用程序将完成以下工作:
◦
◦
◦
◦
◦
19
编译当前项目,并转换为Android可执行文件(.dex)
把可执行文件和外部资源打包为Android包(.apk)
启动所选择的虚拟设备(若选择了一个AVD,但还未运行)
安装应用程序到目标设备上
启动应用程序
简单示例程序-HelloWorld
运行结果
简单示例程序-HelloWorld
项目结构
◦ 主程序
◦ 自动生成的R类
◦ 资源文件
◦
◦
◦
◦
drawable
Layout
menu
values
◦ 程序清单
21
简单示例程序-HelloWorld
主程序 MainActivity.java
package com.example.helloworld;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
22
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
简单示例程序-HelloWorld
自动
生成的
R类,
不要手
工修改.
23
package com.example.helloworld;
public final class R {
public static final class dimen {
public static final int activity_horizontal_margin=0x7f040000;
public static final int activity_vertical_margin=0x7f040001;
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int action_settings=0x7f080000;
}
public static final class layout {
public static final int activity_main=0x7f030000;
}
public static final class menu {
public static final int main=0x7f070000;
}
public static final class string {
public static final int action_settings=0x7f050001;
public static final int app_name=0x7f050000;
public static final int hello_world=0x7f050002;
}
……
}
简单示例程序-HelloWorld
UI布局 activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
24
</RelativeLayout>
简单示例程序-HelloWorld
字符串 string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">HelloWorld</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
</resources>
25
简单示例程序-HelloWorld
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworld"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.helloworld.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
26 </application>
</manifest>
程序清单 AndroidManifest.xml
简单示例程序-ToDoList
待办事项程序,后续会对该工程进行完善
步骤1:新建Android项目
◦ 项目名称为ToDoList,包名为com.example.first.todolist
◦ 配置icon属性,选择一个Image文件,并将形状设置为
Square
◦ 活动名称设置为Main,布局名称设置为main
27
简单示例程序-ToDoList
步骤2:修改主布局
◦ 打开res/layout/main.xml
◦ 将相对布局RelativeLayout修改为LinearLayout
◦ 增加一个ListView, EditText,并赋予EditText及ListView控件
ID
28
简单示例程序-ToDoList
步骤2:修改主布局 (续)
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent“
<EditText
android:id="@+id/myEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/init_text" />
<ListView
android:id="@+id/myListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
29
/> </LinearLayout>
简单示例程序-ToDoList
步骤3:修改字符串资源
◦ 打开res/values/strings.xml
◦ 增加<string name="init_text">New to do item.</string>
(由于布局的EditText使用了android:text=“@string/init_text” )
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ToDoList</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="init_text">new to do item.</string>
</resources>
30
简单示例程序-ToDoList
步骤4:修改源文件Main.java
◦ 重写onCreate( )方法
◦ 使用setContentView方法填充UI
◦ 通过findViewById方法获得对ListView和EditText的引用
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//扩充视图
setContentView(R.layout.main);
//获取对UI控件的引用
ListView myListView = (ListView) findViewById(R.id.myListView);
Final EditText myEditText = (EditText ) findViewById(R.id.myEditText );
}
31
简单示例程序-ToDoList
步骤4:修改源文件Main.java (续)
◦ 在onCreate( )方法中,定义一个String类型的ArrayList来存储
每一个待办事项
◦ 使用ArrayAdapter把ListView绑定到ArrayList上
//创建待办事项的表ArrayList
final ArrayList<String> todoItems = new ArrayList<String>();
// 创建ArrayAdapter,以便将数组绑定到ListView
final ArrayAdapter<String> aa;
aa = new
ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,t
odoItems);
//将ArrayAdapter绑定到ListView
myListView.setAdapter(aa);
32
简单示例程序-ToDoList
步骤4:修改源文件Main.java (续)
◦ 允许用户添加新的待办事项
◦ 向EditText中添加onKeyListener来监听D-pad中间按钮点击,然后将EditText的内容
添加到todoList数组中,并通知ArrayAdapter发生了变化。
33
myEditText.setOnKeyListener(new OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event){
if(event.getAction() == KeyEvent.ACTION_DOWN)
if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
todoItems.add(0, myEditText.getText().toString());
aa.notifyDataSetChanged(); myEditText.setText(null);
return true;
}
return false;
}
});
简单示例程序-ToDoList
步骤4:修改源文件Main.java (续)
◦ 注:如果提示类型错误,包含相应的包和类即可
import java.util.ArrayList;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.view.View;
import android.view.View.OnKeyListener;
34
简单示例程序-ToDoList
Android模拟器DPAD not
enabled in avd
修改AVD的配置文件,
config.ini,
hw.Dpad=yes
(C:\Documents and
Settings\Administrator\.an
droid\avd)
35
简单示例程序-ToDoList
运行结果
36
简单示例程序
Android支持各种资源与代码分离,从简单的资源(如字符串、颜色)
到复杂的资源(如图片、动画、主题)
通过资源分离,使应用更加容易维护、更新和管理
可以根据屏幕的尺寸和方向改变布局
根据语言和国家来定制文本提示等
37
Q&A!