`

一个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  
支持,写得不错!

相关推荐

    实验1-Android开发环境与第一个Android程序.doc

    实验报告 (2016—2017学年 第 学期) 课程名称 嵌入式应用开发 实验名称 Android开发环境与第一个Android程序 专 业 电子信息工程 年 级 组 号 学号 姓名 学号 姓名 指导教师 实验日期 "实验目的与要求: " "1....

    Android插件框架Android-Plugin-Framework.zip

    App安装时,系统会扫描app的Manifest并缓存到一个xml中,activity启动时,系统会现在查找缓存的xml,如果查到了,再通过classLoad去load这个class,并构造一个activity实例。那么我们只需要将classload加载这个class...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    Android图片切换特效示例:水平百叶窗、垂直百叶窗、马赛克

    为方便各位童鞋看到运行效果,我上传的是完整的Android工程,可以直接编译、运行。上传包中bin目录有编译好的apk,可直接放入手机运行。 虽是完整的工程,但其实需要看的文件只是SwitchableImageView.java一个,其他...

    Android代码-Android-AppLifecycleMgr

    之前只是为了讲解组件生命周期的概念,以及这样做的原因,但是这样实施过程中,会发现在壳工程里会出现很多硬编码,如果你引入的一个组件里有实现BaseAppLike的类,那么你就得在壳工程的Application.onCreate()方法...

    android开发期末大作业.zip

    题目、设计内容自拟,工作量适中,要求学生应用课程所学知识,采用JAVA语言和Android手机应用开发技术实现一个完整的系统。 ①完成大作业报告。 ②实现各系统功能,并完成调试运行。 2、主要技术 采用Java语言并不仅...

    Android(AndroidStudio&Kotlin)安装到运行过程及常见问题汇总

    -创建一个Kotlin工程 -更新SDK -更新插件(Kotlin插件/gradle插件) -安装AVD与配置AVD -调整Kotlin编译配置 -第一次运行 1.Android Studio的安装与配置 AndoridStudio官方网址:直接点击即可进入AS官网下载页面 1.1...

    android系统原理及开发要点详解

     嵌入式Linux系统学习者:将Android作为一个集Linux核心和应用层程序于一体的系统进行学习,并可以利用Android的仿真环境运行和调试程序。  读者在学习本书的过程中,应尽量对照本书的框图和手头的Android源代码,...

    android开发入门与实战(下)

    5.1.1 新建一个Android工程 5.1.2 填写工程的信息 5.1.3 编程实现 5.1.4 运行项目 5.2 调试项目 5.2.1 设置断点 5.2.2 Debug项目 5.2.3 断点调试 5.3 本章小结 第6章 磨刀不误砍柴工——Android应用程序结构介绍 ...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    安卓上用于加载的Webview视图窗口只是作为类浏览器而存在,在安卓上更是只能同时运行一个Webview。(2)跨域数据交互问题。不同的Webview之间无法共享数据。(3)页面自适应问题。页面难以兼容适应不同分辨率的设备...

    Android Studio安装傻瓜教程和使用技巧教程.pdf

    先从整体上讲解安装Android Studio需要做哪些事情,让初学者做到心头有数,然后逐步讲每一步安装过程中需要注意的要点,并配合详细的截屏进行叙述,全程做到傻瓜安装。 我的系统是:Windows7 32位旗舰版;安装...

    Android的设计与实现(卷1)

    启动篇(第3~4章)深入分析了android启动过程的机制和实现原理,能帮助读者全面理解框架层系统服务的运行基础;binder篇(第5~6章)着重分析了binder在native框架层和java框架层的机制和实现,能让读者深入理解...

    《Google Android开发入门与实战》.pdf

    5.1.1 新建一个android工程 52 5.1.2 填写工程的信息 52 5.1.3 编程实现 53 5.1.4 运行项目 54 5.2 调试项目 54 5.2.1 设置断点 54 5.2.2 debug 项目 55 5.2.3 断点调试 55 5.3 本章小结 ...

    android开发入门与实战(上)

    5.1.1 新建一个Android工程 5.1.2 填写工程的信息 5.1.3 编程实现 5.1.4 运行项目 5.2 调试项目 5.2.1 设置断点 5.2.2 Debug项目 5.2.3 断点调试 5.3 本章小结 第6章 磨刀不误砍柴工——Android应用程序结构介绍 ...

    android的编译和运行过程深入分析

    可以先通过搭建好的Eclipse开发环境创建一个未编译的Android工程,记的一定要将Eclipse中Project菜单下的Build Automatically选项前面的对勾去掉后再去创建工程。创建好未编译的工程后,在命令行中输入如下命令: d:...

    Android入门到精通

    第一篇Android系统结构和SDK使用 第1章 Android的系统介绍 1.1 系统介绍 1.2 软件结构和使用的工具 第2章 Android SDK的开发环境 2.1 Android SDK的结构 2.2 Android SDK环境安装 2.3 Android中运行仿真器环境 2.4 ...

    网络安全中的逆向工程.pdf

    网络安全中的逆向工程 计算机软件的逆向工程技术主要过程为分析计算机程序, 在分析 计算机程序的过程中, 逐渐建立起高于源代码级别的更抽象层次的程 序运行过程。使用一些有助于逆向工程的软件产品,可以帮助我们...

    android系统原理及开发要点详解_韩超_梁泉 4

     嵌入式Linux系统学习者:将Android作为一个集Linux核心和应用层程序于一体的系统进行学习,并可以利用Android的仿真环境运行和调试程序。  读者在学习本书的过程中,应尽量对照本书的框图和手头的Android源代码,...

    构建安全的AndroidAPP 带目录书签版

    同时也给出了每一个技术实现的程序,真实地展示了应用中存在的安全问题,并给出具体的解决方案。 通过本书可以学到: 确保应用安全的核心做法; 保护代码、算法和商业秘密不被逆向工程; 使用SSL安全地传输信息防止...

    Android版的获取系统应用与服务列表的工程

    用于获取应用的图标,包名,是否系统应用等相关信息,在此App编写过程中,发现网上很多实例都有错误,无法正常编译运行,故而编写此工程,献于正在做Android相关开发的小伙伴,源于你们一同成长。

Global site tag (gtag.js) - Google Analytics