`

一个android工程的运行过程

阅读更多

rt

首先 :  当一个工程部署到模拟环境上后,当用户点击你的应用名字“android:label="@string/app_name">”的时候,操作系统会根据配置清单文件(AndroidManifest.xml)寻找到下面的配置节点“<activity android:name=".HelloWorldActivity”这个activity;android:icon="@drawable/icon" 这个是应用显示的图标 这个你可以修改,自己找一个png格式的图片,拷贝到drawable-hdpi文件夹下,你会在R.java中自动添加这个图片的名字的属性,然后在这里修改icon为新生成的图片的名字就行了。

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HelloWorldActivity"
                  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>

    这个配置节点下的activity节点,这个节点中的

 <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>


     这两个配置,告诉操作系统,这个activity是程序运行的入口类,相当与main方法;在一个应用中只要有一个应用配这个属性就行了;

然后 :我们看看被指定为程序入口的这个activity的代码:

package com.android.activity;

import android.app.Activity;
import android.os.Bundle;

public class HelloWorldActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

    android平台实例化这个activity类,其中的onCreate这个方法不是由程序员来调用的,是由android这个平台来调用  的,这个类被实例化后就直接调用这个方法了。其中的super调用的父类的方法,是用来画出整个应用的界面的;

值得一提的是

setContentView(R.layout.main);

这端代码:android的设计模式是遵守mvc设计模式的,c这层就是activity层,v层是xml文件,在工程目录中的res下的layout目录下的文件,布局文件,m业务层,要自己写,不要和c层放到一起,这样代码的质量很差;那我们回到这句代码,我们现在知道activity相当与action了,那么在struts中负责跳转页面的代码是mapping.forword("xxxx");我想大家都知道,那么类比,在activity中,负责跳转的就是setContentview(xxx);括号中的内容就是视图层的引用。那我们再来看看这个引用的东西

R.layout.main

我前面的文章说过,R.java文件是用来引用资源的,那么看看这里我们就知道他引用了谁。对了,就是loayout目录下的main.xml;我们可以看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.android.activity;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    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;
    }
}

 

public static final class layout {
        public static final int main=0x7f030000;
    }

这里就是刚才调用的东西,最终会对应工程目录下的res下的layout下的main。xml文件,如果我们在layout下再建立一个androidxml类型的文件,保存后,会在R.java中自动生成对应的索引;

再然后

说道main.xml文件,我们看看这个文件,以往我们都是用html或者jsp来显示页面,现在用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"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout>

 严格遵守xml文件的格式,

 其中,标签

LinearLayout

直接翻译中文是线性布局,那就是一种布局方式了,swing中也有,就是指在这个标签中的元素每个元素占一行。还有绝对布局;不建议使用,因为不知道使用者的手机屏幕大小。还有相对布局:常用;

TextView 

相当于label标签。

再来仔细看看,标签中的属性

 

<LinearLayout 
<!--这个是标准的格式-->
    xmlns:android="http://schemas.android.com/apk/res/android"
<!-- 布局方式 由上到下垂直显示-->
    android:orientation="vertical"
<!--应用界面的宽:填充父面板 还有个取值"wrap_content" 是根据内容的长度来决定界面大小-->
    android:layout_width="fill_parent"
<!--应用界面的高:填充父面板 对于这个应用其父面板就是整个屏幕-->
    android:layout_height="fill_parent"
    >
<TextView  
<!--定制这个lable的宽度:父界面的宽度-->
    android:layout_width="fill_parent" 
<!--定制这个lable的高度:和内容的大小相同-->
    android:layout_height="wrap_content" 
<!--lable的内容:@代表访问R.java文件,string是R.java文件中的一个元素。/就是访问符号
hello是具体那个资源 这样就调用了文字 这些文字的信息在values文件夹下的string.xml文件中定义
 这样做是为了国际化 这个文件夹下不是只能有stirng.xml这一个文件存在,可以有很多xml文件
所以我们可以把文字分门别类存放 有利于复用 减少资源占用-->
    android:text="@string/hello"
    />

过程基本就是这样了;
2
1
分享到:
评论
1 楼 hnraysir 2015-01-12  
支持,写得不错!

相关推荐

    一步一步图示开发第一个Android项目并运行.doc

    在开发第一个Android项目时,需要通过一系列步骤来创建并配置一个基本的应用程序。以下将详细介绍这些步骤: 1. **启动Eclipse** - 首先确保已经安装了Eclipse IDE for Java Developers,并且配置好了Android开发...

    android5.0项目依赖工程

    这个“android5.0项目依赖工程”是一个专门为Android 5.0优化的开发框架,它将多个组件整合到一个单一的依赖项中,以便开发者可以更方便、高效地进行开发工作。下面我们将深入探讨这个依赖工程所涉及的核心知识点。 ...

    Android工程打包apk方法

    这会打开一个向导,引导你完成打包过程。 3. **选择打包类型**:在向导的第一步,你需要选择打包的类型,通常选择`APK`,因为这是最常见的分发格式。 4. **创建签名密钥库**:如果你是首次打包,可能需要创建一个...

    Android打开本地HTML网页AndroidStudio工程.rar

    这个"Android打开本地HTML网页AndroidStudio工程.rar"文件很可能包含了一个简单的示例项目,演示如何在Android应用中加载并显示本地HTML文件。这里我们将深入探讨实现这一功能所涉及的关键知识点。 1. **WebView...

    Android工程模式简介.rar

    - 另一种方式是在系统服务中实现一个服务,该服务在系统启动时运行,检查特定的条件(如特定的系统参数或设备状态),如果满足条件则启动工程模式。 2. **权限管理** - 由于工程模式包含敏感信息和操作,因此通常...

    Android 最简工程 Eclipse

    - 在Eclipse中,一个Android工程通常包含以下几个关键文件夹和文件: - `src`:存放Java源代码,每个Activity(应用程序界面)通常对应一个Java类。 - `res`:资源文件夹,包括布局(layout)、图标(drawable)...

    Android和Unity3d互相调用的Demo

    它可能是一个封装了调用逻辑的库,帮助简化Android和Unity3D之间的通信过程。中间件的设计使得替换Unity3D的内容变得更加容易,这对于更新游戏内容或进行热修复具有重要意义。 文档说明会详细介绍如何设置项目、...

    Android中修改运行时内存Dalvik字节码

    每个Android应用都包含一个或多个.dex(Dalvik Executable)文件,这些文件包含了编译后的Dalvik字节码。 修改运行时内存中的Dalvik字节码通常涉及到以下几个关键步骤: 1. **动态代码注入**:在应用运行时,可以...

    安卓logcat输出内核日志android studio工程源码

    3. **kernellogd程序**:根据描述,这个工程源码编译后生成的`kernellogd`是一个特殊的日志收集器,专门设计用来从Android设备的内核层获取日志信息。通过ADB(Android Debug Bridge)将`kernellogd`推送到手机上并...

    实验一 安装Android Studio 3.0和第一个Hello World程序.pdf

    创建第一个Hello World程序需要在Android Studio 3.0 中创建一个新的项目,然后编写Java代码,最后编译和运行程序。整个过程非常简单。 五、Android Studio 3.0 的优势 Android Studio 3.0 提供了许多实用的功能,...

    Android-autoTinyPic一个AndroidStudio插件用于自动对添加进工程的图片进行压缩

    "Android-autoTinyPic"是一个针对Android Studio的插件,专门用来自动化处理这个问题,它能有效地减小png和jpg图片的大小,从而降低应用的总体积,提高加载速度,节省用户流量。 这个插件的工作原理是利用了在线...

    Android 原生webApp的运行壳

    1. 创建Android项目:首先,你需要创建一个新的Android工程,包含必要的布局文件和Activity。 2. 添加WebView:在布局文件中,添加一个WebView控件,设置其属性,如加载的网页URL、是否启用JavaScript等。 3. 配置...

    android实战 音乐播放器(android studio源程序工程)

    这个项目,"android实战 音乐播放器(android studio源程序工程)",就是这样一个学习资源,它涵盖了Android移动开发基础案例教程中的第七章实战演练,主要涉及用户信息注册的部分。 首先,让我们深入了解Android ...

    android 多个工程 打包

    打包多个Android工程的过程通常涉及以下几个关键步骤: 1. **项目结构**:确保所有相关工程在同一个工作空间内,并且它们之间有正确的依赖关系。在Android Studio中,可以通过Gradle构建系统来管理这些依赖。 2. *...

    Android命令行下创建工程

    为了进一步编译项目,需要创建一个`build.xml`文件。可以使用以下命令: ```bash $ android update project -p /path/to/project -s -t ``` 其中`&lt;target_id&gt;`是指定的目标API级别。这个命令会生成`build....

    vlc android eclipse 工程

    VLC for Android Eclipse 工程是一个专为在Android平台上运行VLC媒体播放器而设计的开发项目,它基于Eclipse IDE进行构建。VLC是一款开源的、跨平台的多媒体播放器,支持各种视频和音频格式,以及网络流媒体。在这个...

    Android打开H5网页完整AndroidStudio工程

    Android中的WebView是Android SDK提供的一个核心组件,它允许我们在应用程序中内嵌一个浏览器,用来显示网页内容。在`MyApplicationAndroid打开H5网页`工程中,你将会看到一个使用WebView的示例。在布局XML文件中,...

    Opencv移植Android工程

    本项目的目标是将OpenCV移植到Android工程,以便在移动设备上运行基于OpenCV的算法。 移植OpenCV到Android工程主要涉及以下几个步骤: 1. **添加OpenCV库**:首先,你需要下载OpenCV的Android SDK,并将其添加到...

    编译过的Cartoonifier_Android工程

    其中,第一章的Cartoonifier_Android工程是一个实际应用案例,它展示了如何在Android平台上使用OpenCV将真实图像转化为卡通效果。这个项目不仅涉及到Android应用程序开发,还涵盖了计算机视觉的基本原理和技术。 ...

Global site tag (gtag.js) - Google Analytics