Android入门(4) 开发第一个Android程序

1. 创建Android程序

Android入门(4) 开发第一个Android程序_第1张图片


Android入门(4) 开发第一个Android程序_第2张图片

Android入门(4) 开发第一个Android程序_第3张图片

1.1创建Android Project

 Project name:项目名

 Build TargetAndroid版本

 Application name:程序名,显示在程序列表中,以及程序启动后的标题栏

 Package name:包名,程序的唯一标识

 Create Activity:选择程序启动时是否创建一个窗体,设置主窗体名字

 Min SDK Version:设置运行该程序所需的最低版本

2. 安装、卸载程序

2.1Eclipse安装

右键点击工程 – Run as – Android Application

2.2虚拟机卸载

设置 – 应用程序 – 管理应用程序 – 选中要卸载的程序 – 卸载

3. 了解项目目录结构

Android入门(4) 开发第一个Android程序_第4张图片

3.1 src:源代码

3.2 gen:系统自动生成的文件

R.java 中记录了项目中各种资源ID(包括图片、各种ViewID等等

3.3 res:系统资源,所有文件都会在R文件生成资源ID

drawable:图片

layout:界面布局 main.xml、各种自定义的layoutxml文件

values:数据 strings.xml文件,存放各种国际化的字符串ID

anim:定义动画的XML

raw:原生文件

3.4 assets:资源路径,不会在R文件注册

3.5 libs外部的jar(此文件夹根据需要手工创建)

3.6 project.properties:供Eclipse使用,读取该项目使用Android版本号。早期版本名为:default.properties

3.7 AndroidManifest.xml:清单文件,在软件安装的时候被读取

Android中的四大组件(ActivityContentProviderBroadcastReceiverService)都需要在该文件中注册

程序所需的权限也需要在此文件中声明,例如:电话、短信、互联网、访问SD

3.8 bin:二进制文件,包括class、资源文件、dexapk

3.9 proguard.cfg:用来混淆代码的配置文件,防止别人反编译

3.2.1 HelloWorldActivity类的介绍

package com.test.app1;

import android.app.Activity;

import android.os.Bundle;

/**

 * eclipse自动创建出来的activity,实现了Activity类。

 * @author chen

 *

 */

public class HelloWorldActivity extends Activity {

/**

 * onCreate方法,在Activity开启时自动调用onCreate方法。重写此方法,

 * 即可让android虚拟机在开启此程序的activity时自动调用此方法。

 */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);//开启窗口相关设置信息

        /**

         * 将res文件夹下的layout文件夹中的main.xml设置的相关控件设置到

         * 窗口对象的内容中去,即便于显示出来。

         */

        setContentView(R.layout.main);

    }

}

3.2.2 Res文件夹下layout文件夹中的main.xml的介绍

<?xml version="1.0" encoding="utf-8"?>

<!-- 布局文件,Linear layout为线性的布局。可以横排或竖排 -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

 <!-- 五大布局:LinearLayout线性、RelativeLayout相对、FrameLayout针式、TableLayout表格、AbsoluteLayout绝对布局

     都是可以嵌套的。比如LinearLayout布局,还可以指定orientation排列方向的值为vertical垂直式或horizontal水平式

     当layout_width的值可以选择:

     wrap_content 根据内容大小填满宽度

     fill_parent  根据上级控件宽度填满

     match_parent 与fill_parent作用一致,都是根据上线控件宽度而来填充满本级宽度。

     -->

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="@string/hello" />

     <!-- android:text:控制文本,可国际化到strings.xml文件中。

         android:inputType:输入内容的类型,可以为phone、textPersonName、textPassword、textEmailAddress等等值

         android:singleLine:指定是否为单行 true|false,默认是多行即false。

         android:layout_gravity :指定摆放位置,可取值:left、right、center等等也可取多值如 bottom|right

         android:hint :用于EditText等控件中,指提示用户输入内容,当用户光标点击入此框中,提示内容消失。

         android:id  指定此控件的id,以便在java文件中,用可通过findViewById拿到此控件对象进行操作。

         android:paddingLeft:相关的padding内边距多少dp等,与css中很相似

         android:layout_marginLeft:相关的margin外边距多少dp等,与css中很相似

         

         RelativeLayout页面中,还有特殊的相关属性

         android:layout_toRightOf:值为某一控件的ID号。代表此控件的摆放位置在,某一控件的右边。

         android:layout_toLeftOf:值为某一控件的ID号。代表此控件的摆放位置在,某一控件的左边。

         android:layout_above:值为某一控件的ID号。代表此控件的摆放位置在,某一控件的上边。

         android:layout_below:值为某一控件的ID号。代表此控件的摆放位置在,某一控件的下边。

         android:layout_alignParentRight:值为true|false。代表是否与上级控件的右边对齐。

         -->

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="@string/test" />

</LinearLayout>

3.2.3.Res文件夹下values文件夹中的strings.xml的介绍

<?xml version="1.0" encoding="utf-8"?>

<!-- 存放国际化的一些相关资源 -->

<resources>

<!-- 其中文件中用到字符串,strings.xml文件中若有定义可以这样直接引用 : @string/hello -->

    <string name="hello">真的很好呢</string>

    <string name="test">你好吗</string>

    <string name="app_name">第一个应用呢</string>

    <string name="app_name_title">第一个应用主界面</string>

</resources>

3.2.3 根目录中AndroidManifest.xml清单文件的介绍

<?xml version="1.0" encoding="utf-8"?>

<!-- package属性即为应用唯一的id号了。一个手机就只能有package不能重名。最后被发布到手机的

      /data/data文件夹下。在手机的设置-应用程序-中可依据此管理程序应用。安装或卸载等。

     -->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.test.xml"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

<!-- android junit test的相关配置,targetPackage必须指定,

若是本工程要填写本工程mainfest要标签package属性的值中 

若是其它的工程,若打到其它工程后,找到其它工程的manifest文件,并把其中的package属性值拷贝复制到targetPackage中-->

    <instrumentation android:targetPackage="com.test.xml" android:name="android.test.InstrumentationTestRunner" />

    <!-- 配置声明相关的权限,写sd卡要外存储设置的写权限即 WRITER_EXTERNAL_STORAGE

     程序中用到电话了,则需要配置声明CALL_PHONE的权限

     发短信需要用到SEND_SMS的权限等等

     -->

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.CALL_PHONE"/>

    <!-- application中的android:label为应用名称,在手机的设置-应用程序-安装/卸载时看成到的名称 -->

    <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name" > 

        <!-- uses-library android:name="android.test.runner"  声明此项目需要用到junit的类库 -->

<uses-library android:name="android.test.runner" />

<!-- activity中的android:label,就手机菜单界面和打开时的标题名称 、一般与application中的label是相同的,当然也可不同-->

        <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>

<!--四大组件 ActivityBroadcastReceiverContentProviderService都需要此配置 -->

    </application>

</manifest>


4. 程序启动过程

4.1 Eclipse.java源文件编译成.class

4.2 使用dx工具将所有.class文件转换为.dex文件

4.3 再将.dex文件和所有资源打包成.apk文件

4.4 将.apk文件安装到虚拟机完成程序安装

4.5 启动程序 – 开启进程 – 开启主线程

4.6 创建Activity对象 – 执行OnCreate()方法

4.7 按照main.xml文件初始化界面


你可能感兴趣的:(android,android)