通过Eclipse的Android插件(ADT)可以很轻松的新增一个Android工程。
工程结构目录及主要目录的作用如下:
(1) Src:存放程序源代码,没什么可说的。
(2) Gen:存放编译器自动生成的java代码,一般不需要我们操作。默认会有个R.java, 此文件与layout/main.xml有一定的关联, 当我们更改main.xml的时候, R.java也会随之做对应更新(Eclipse插件会自动帮我们完成)。
(3) Res/drawable-hdpi:存放高像素图片。
(4) Res/drawable-mdpi:存放中等像素图片。
(5) Res/drawable-ldpi:存放低像素图片。目前感觉以上三者没什么好区分的,无论放在哪个里面(drawable-hdpi、drawable-mdpi、drawable-ldpi)图片,程序都能加载到。
(6) Layout: main.xml主要完成页面布局。(这个常打交道),声明各种控件(如:Button、EditText等)、对控件进行布局。
(7) AndroidManifest.xml: 功能后面会说到。
(8) Values/strings.xml:存放声明的字符串。
注:我们也可以不借助Eclipse进行工程开发及启动,而是直接使用命令行,简单实例如下:
(1)
(2)
(3)
Android开发的一个简单例子:
应用情景:文本框内输入电话号码,通过按钮拨打电话。(次要:修改下应用的背景)
MainActivity.java
package com.cpx;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
/**
* 拨打EditText中输入的手机号码
*
* @author CPX
* @version 1.0
* @date Dec 23, 2010 7:24:37 PM
*/
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// R类是Eclipse帮我们自动构建的, 无需我们操作。其内容和res/layout/main.xml对应,
// 当我们在mail.xml中增加/删除内容时, R会随之更新。
// 本行代码的意思设置Android屏内控件布局,本次采用的是vertical
setContentView(R.layout.main);
/*
* 获取res/layout/main.xml中定义的EditText和Button句柄
*/
final EditText phoneNumber = (EditText)findViewById(R.id.phoneNumber);
final Button callButton = (Button)findViewById(R.id.callButton);
// 为button注册事件
callButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
// 拨打电话,电话号码来自EditText中输入的内容
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber.getText()));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(callIntent);
}
});
}
}
① MainActivity实现Activity,程序启动入口。
② 当程序启动的时候会先调用public void onCreate(Bundle savedInstanceState)方法。
③ super.onCreate(savedInstanceState); 同J2SE开发时的AWT事件(子类方法运行前先调用父类方法执行)。
④setContentView(R.layout.main); setContentView方法用于设置页面布局(Android提供了多种页面布局方式,自己去看,应该不难。)
⑤finalEditText phoneNumber = (EditText)findViewById(R.id.phoneNumber);
final Button callButton = (Button)findViewById(R.id.callButton);
通过id获取两个组件。
R.layout.main、R.id.phoneNumber、R.id.callButton稍后做说明。
⑥ callButton.setOnClickListener 为button注册一个事件,当单击按钮时执行某个动作,参照java里的事件机制。此处调用的是Android内部提供的拨打电话api。关于Intent的介绍部分提供如下链接
http://wenku.baidu.com/view/174c12284b73f242336c5f34.html
R.java
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.cpx;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int bg=0x7f020000;
public static final int icon=0x7f020001;
}
public static final class id {
public static final int callButton=0x7f050002;
public static final int phoneNumber=0x7f050001;
public static final int textLabel=0x7f050000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
Layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
>
<TextView android:id="@+id/textLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请输入您的电话号码"
/>
<EditText android:id="@+id/phoneNumber"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button android:id="@+id/callButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="呼叫"
/>
</LinearLayout>
values/string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">android</string>
</resources>
通过上面3段代码,很容易得出R.java里面的值和main.xml、string.xml存在一定的关联,实际上R.java内各字段的值是依据main.xml和string.xml得出的,并且当main.xml、string.xml更改时R.java各字段的值会随之更新, Eclipse插件会帮助我们完成这个更新动作,不需要我们干预。
还记得上面(MainAvtivity.java)说过的R.layout.main、R.id.phoneNumber、R.id.callButton的吗,现在明白值是从哪里得来的吧, 并且知道各值的含义了吧。
Bg.jpg
作为应用的背景。
这样一个简单的应用就完成了, 启动(关于启动, 参考Android环境配置.docx)后, 得到如下窗口。
电话打不出去。。^_^
注:如果需要授权的话,请按如下提示修改:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cpx"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".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>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.CALL_PHONE">
</uses-permission>
</manifest>
分享到:
相关推荐
《Android开发实例大全》是王东华先生撰写的一本深入浅出的Android应用程序开发指南,旨在帮助开发者通过实例学习和掌握Android平台上的编程技术。这本书覆盖了从基础到高级的各种主题,包括用户界面设计、数据存储...
本教程"最详细的Android开发教程实例"旨在提供一个全面的学习路径,帮助新手和有经验的开发者深入理解Android开发的核心概念和技术。 【Android开发入门】: Android开发入门是学习Android编程的第一步。"101- ...
在Android开发领域,Android Studio是官方推荐的集成开发环境(IDE),它提供了强大的功能和便捷的工具,使得开发者能够...本实例提供的只是一个起点,希望它能激发你对Android开发的兴趣,助你在这一领域更进一步。
在Android开发领域,初学者经常会面临许多挑战,如理解Android应用程序的基本架构、学习XML布局、掌握Java或Kotlin编程语言,以及如何与设备硬件交互等。"Android开发入门60个小案例+源代码"这个资源提供了丰富的...
在Android开发中,Service是四大组件之一,它在后台运行,不与用户界面直接交互,常用于执行长时间的任务,如播放音乐、网络通信等。本篇文章将深入解析"android service 简单实例源代码",帮助你理解如何在Android...
这个“android actionbar简单实例”是针对Android新手或者开发者想要了解和掌握ActionBar基本用法的一个实践项目。在这个项目中,我们将探讨如何在Android应用中添加并自定义ActionBar,包括设置返回按钮。 首先,...
这本书的随书源码提供了丰富的实例,涵盖了从入门到进阶的各种主题,旨在帮助初学者建立扎实的Android开发基础。 首先,"Android软件开发"是核心概念,它涉及到使用Java或Kotlin编程语言,以及Android Studio集成...
"android开发实例源码"这个主题提供了多个实例,涵盖了Android应用开发的基础到进阶知识。这些实例可以帮助初学者理解并实践Android编程的核心概念。 1. **LISTVIEW1** 和 **LISTVIEW2**、**LISTVIEW3**: 这些...
最后,本教程中的实例将涵盖从简单的Hello World应用到复杂的多模块项目,让你逐步从Kotlin新手成长为熟练的Android开发者。通过阅读《Kotlin从零到精通Android开发.pdf》,你将能够全面掌握Kotlin语言在Android平台...
Android NFC(Near Field Communication)开发实例是针对移动设备上近距离无线通信技术的应用实践。NFC是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输,通常在十厘米(约四英寸)范围...
在Android开发领域,实例是学习和理解概念的关键。"18个Android开发实例"这个压缩包文件很可能是针对初学者和中级开发者设计的,旨在通过实际操作帮助他们掌握Android应用开发的基本技能。以下是对这些实例可能涉及...
本文将深入探讨这个入门实例,带您逐步走进Android开发的世界。 首先,Android是Google主导的开源移动操作系统,主要应用于智能手机和平板电脑,但它也支持智能手表、电视、汽车等设备。Android开发主要使用Java或...
通过这个简单的例子,你已经掌握了Android蓝牙开发的基础。在实际项目中,可能还需要处理更多细节,如连接失败的重试机制、设备连接状态的监控、多线程下的并发问题等。不断实践和优化,才能更好地应对复杂的蓝牙...
在Android平台上,开发一个简单的计算器应用是一个非常典型的入门级项目,可以帮助开发者理解基本的界面布局、事件监听...通过这个案例,初学者可以全面了解Android应用开发的基本流程,对Android开发有更深入的理解。
本书以Android应用程序的开发为主题,并结合真实的案例向读者详细介绍了Android的基本组件的使用及应用程序开发的整个流程。本书的讲述由浅入深,实例全面并典型,几乎囊括了所有和Android应用相关的项目。全书分为...
本示例“Android开发的列表例子”旨在为初学者提供一个基础的ListView使用教程。 首先,理解ListView的基本概念。ListView是Android SDK中的一个视图容器,用于显示一列可滚动的项目列表。每个项目(item)通常包含...
在Android开发中,帧动画(Frame Animation)是一种常见的动画效果,它通过连续播放一系列静态图像来创造出动态的视觉效果,类似于传统的电影制作原理。在这个"android 简单的帧动画例子"中,我们将探讨如何在...
在Android开发中,你可以通过这些示例了解如何配置PhoneGap项目、如何创建基本的布局、如何调用PhoneGap API以及如何处理各种事件。例如,一个简单的PhoneGap应用可能包含一个index.html页面,其中包含HTML结构和...
在开始Android开发之前,首先需要建立一个新的Android工程。工程的建立涉及到选择合适的API版本,设置项目名称和保存位置,以及工程的结构,例如源代码文件、资源文件和配置文件的组织。Android Studio是官方推荐的...
Android 小项目开发示例大全--20个通用具体应用程序实例源码