首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android开发简略例子

2012-09-11 
Android开发简单例子通过Eclipse的Android插件(ADT)可以很轻松的新增一个Android工程。工程结构目录及主要

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>

热点排行
Bad Request.