Android开发简单例子

通过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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值