380 likes | 614 Views
基于 Android 的移动应用开发. 应用开发环境搭建. 提纲. 开发环境搭建 简单示例程序. 提纲. Android 应用开发环境搭建 简单示例程序. Android 应用开发环境搭建. 直接使用 Android SDK Eclipse + ADT + SDK ADT Bundle Android Studio 基于 IntelliJ IDEA 注意:需要先安装 JDK ,并配置环境变量 http://www.oracle.com/technetwork/java/javase/downloads/index.html.
E N D
基于Android的移动应用开发 应用开发环境搭建
提纲 • 开发环境搭建 • 简单示例程序
提纲 • Android应用开发环境搭建 • 简单示例程序
Android应用开发环境搭建 • 直接使用Android SDK • Eclipse + ADT + SDK • ADT Bundle • Android Studio • 基于IntelliJ IDEA 注意:需要先安装JDK,并配置环境变量 http://www.oracle.com/technetwork/java/javase/downloads/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/repository-8.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 • 运行和调试应用程序将完成以下工作: • 编译当前项目,并转换为Android可执行文件(.dex) • 把可执行文件和外部资源打包为Android包(.apk) • 启动所选择的虚拟设备(若选择了一个AVD,但还未运行) • 安装应用程序到目标设备上 • 启动应用程序
简单示例程序-HelloWorld • 运行结果
简单示例程序-HelloWorld • 项目结构 • 主程序 • 自动生成的R类 • 资源文件 • drawable • Layout • menu • values • 程序清单
简单示例程序-HelloWorld • 主程序 MainActivity.java • package com.example.helloworld; • import android.os.Bundle; • import android.app.Activity; • import android.view.Menu; • 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 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; } …… } • 自动生成的R类,不要手工修改.
简单示例程序-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" /> </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>
简单示例程序-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> </application> </manifest> • 程序清单 AndroidManifest.xml
简单示例程序-ToDoList • 待办事项程序,后续会对该工程进行完善 • 步骤1:新建Android项目 • 项目名称为ToDoList,包名为com.example.first.todolist • 配置icon属性,选择一个Image文件,并将形状设置为Square • 活动名称设置为Main,布局名称设置为main
简单示例程序-ToDoList • 步骤2:修改主布局 • 打开res/layout/main.xml • 将相对布局RelativeLayout修改为LinearLayout • 增加一个ListView, EditText,并赋予EditText及ListView控件ID
简单示例程序-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" /></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>
简单示例程序-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 ); }
简单示例程序-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,todoItems); //将ArrayAdapter绑定到ListView myListView.setAdapter(aa);
简单示例程序-ToDoList • 步骤4:修改源文件Main.java (续) • 允许用户添加新的待办事项 • 向EditText中添加onKeyListener来监听D-pad中间按钮点击,然后将EditText的内容添加到todoList数组中,并通知ArrayAdapter发生了变化。 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;
简单示例程序-ToDoList • Android模拟器DPAD not enabled in avd • 修改AVD的配置文件,config.ini, hw.Dpad=yes (C:\Documents and Settings\Administrator\.android\avd)
简单示例程序-ToDoList • 运行结果
简单示例程序 • Android支持各种资源与代码分离,从简单的资源(如字符串、颜色)到复杂的资源(如图片、动画、主题) • 通过资源分离,使应用更加容易维护、更新和管理 • 可以根据屏幕的尺寸和方向改变布局 • 根据语言和国家来定制文本提示等