Android程序入口以及项目文件夹的含义和使用总结—入门

    • 1 Android程序的入口

      1.1 Activity类

      在andriod的应用程序中,用户所感知的都是一个个应用界面,在android程序里面每个应用界面对应一个 Activity类,这类似于.NET Winform项目中的Form窗体。与WinForm中的Form一样,Activity类也是一个基类,每个视图界面都是继承Activity的。下面看一下Activity的扩展类的代码。

      public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); //执行逻辑代码 } }

      当Activity进行创建的时候,它会执行onCreate函数,当然,在Activity不同的生命周期中,会执行相应的函数。onCreate函数会在创建的时候被调用,同样的,当这个Activity界面不可见的时候,又会调用onStop函数。这和WinForm又有些类似,这些函数对应Winform窗体的FormLoad和FormClosing事件,但是不一样的,FormClosing事件内部可以取消该窗体的关闭,而Activity却不可以,这也是很好理解,因为在android程序中,你自己点击后退键,那是肯定会回到前一个界面,当前界面会消失。

      我们可以在程序建立许多个Activity界面类,和我们的WinForm程序一样,也可以建立多个Form窗体界面,那么问题来了,这么Activity界面,程序在启动的时候,应该启动哪一个?

      1.2 AndroidManifest.xml配置文件

      在WinForm程序中,程序的启动一般是Program类中的Main 负责启动第一个程序界面,而在android程序中则是使用配置文件来配置入口的Activity界面。下面是AndroidManifest.xml 配置文件中的代码。

      <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <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></manifest>

      该配置文件是每一个android项目都必须要有的,下面解释部分节点的含义。

      1. uses-permission :表示用户需要授权该程序的权限,上面xml中配置的需要用户授予访问网络的权限。
      2. application : 这个配置节点很重要,它的子节点 activity 就是配置android程序的入口,android:name=".MainActivity" 配置了程序的初始视图界面为MainActivity (这个MainActivity类在src文件夹中)。而 action 和 category 节点配置也很关键,action节点中的android.intent.action.MAIN表明这个Activity是整个应用程序的入口点;而category中的android.intent.category.LAUNCHER意思是把这个Activity归属到加载器类,即把这个Activity标注为自动会加载和启动的Activity,这样程序启动时候就先加载这个Activity了。

      目前理解的andriod程序运行是这样的。至于内部如何实现的,目前涉猎不深,暂不明白。(望高手指点)

      首先,加载程序需要的一个资源,接着读取配置文件,找到application节点中配置的入口Activity视图,然后加载该Activity视图进行显示。

      2 项目文件夹的含义

      新建一个android的项目之后,就会出现如下的目录结构。

      主要的目录有src、gen、assets、bin、res。

      1. src:存放项目的源代码。
      2. gen:该文件是创建项目时候自动生成的,里面包了一个R.java的静态类,它里面包括很多静态类(内部类),每个静态类中的静态成员名称都对应res文件夹中的一个资源名称,保存着该资源的索引,方便在代码中进行获取资源。
      3. assets:assets文件夹里面都保存原始的文件格式,在代码中通过AssetManager来进行访问。
      4. bin:存放编译后的apk和资源文件。
      5. res:存放项目需要的资源文件,比如字符串,布局,皮肤等,这里面每个资源的索引都保存在R.java类中。

      2.1 src

      src文件主要存放着项目的java源代码,比如Activity视图类,还有其他逻辑处理代码。

      2.2 gen

      gen目录中的R.java文件保存着res文件中的资源索引。索引都是int类型的。

      从上往下看,array类保存数组的资源索引,drawable:保存图片索引,id:保存布局文件中控件id,layout:保存布局文件的索引,string:保存字符串资源的索引。

      注意,R.java这个类是保存着当前项目中工程师定义的资源索引,而android.R.java,是保存着android内部预定义好的资源索引。

      2.3 res

      res中有许多文件夹,不同的文件存放不同的资源。

      1. drawable:存放图片资源,每添加一个图片资源,R.drawble类中对应添加一个图片索引。不同的drawable文件夹存放不同分辨率的图片。
      2. layout:存放界面的布局,每一个布局文件对应R.layout里面的布局索引,索引名称与布局文件名称一致。
      3. values:里面存放xml资源文件,每个xml文件可以存放字符串、数组、样式等数据。xml文件可以按照自己需要进行新建。

      string.xml文件中存放了两个字符串数据,那么在R.string类中会保存两个字符串数据的索引,索引名称和字符串资源中的name标签的值一致。

      添加一个数组资源,在R.array类中会添加一个数组资源索引,索引名称和标签中name属性值一致。

      布局中文件每个控件的id也会被添加到R.id类中去。其中在为控件指定id时有两种方式,一种是@id/btn ,另外一种是@+id/btn ,前一种是R.id类中已经有了这个id定义,后一种是新增一个btn的id索引。

      2.4 assets

      assets文件夹主要保存原始的文件格式,比如我需要在代码中访问加载一个html文件,或者一个txt文档,那么就需要把html文件和txt文档保存到assets文件下。

      3 项目文件夹中各种资源的使用

      第2节已经搞清楚了各种文件夹中存放何种资源,那么本小节总结一下如何在程序代码中访问这些资源文件。(所有的资源索引都已经自动更新到R类中)

      3.1 使用布局文件

      布局文件类似wpf的界面布局文件,如果没有程序使用它,那它仅仅只是一个xml文件,我们需要把这个文件通过Activity的setContentView方法进行渲染之后,它才会显示到该Activity视图上,这种设计方式实现了UI和业务逻辑代码的分离。

      在Activity的onCreate方法中,调用布局文件,渲染界面。

      setContentView(R.layout.activity_main);//实现界面的渲染

      Activity的setContentView 方法,带一个参数,该参数就是布局文件的索引。该方法通过布局文件索引实现界面绑定。

      获取布局文件中的控件

      TextView myView=(TextView) this.findViewById(R.id.textView1);

      3.2 获取values文件夹下的各种资源

      访问字符串资源

      String sstr=this.getResources().getString(R.string.app_name);//获取app名称

      访问数组资源

      int []myarray=this.getResources().getIntArray(R.array.my_array);

      3.3 获取assets文件夹下的资源

      在assets文件中保存一个html页面,我们需要在代码利用WebView控件加载这个html页面.

      代码如下:

      myWebView.loadUrl("file:///android_asset/myblog.html"); //注意获取文件的路径格式 4 总结

      将项目中的各个部分的作用弄清楚对于刚接触android编程的新手我来说是很重要,这是基础性的东西,明白了这个才能够更好的深入android的学习。

    • 以上是

Android程序入口以及项目文件夹的含义和使用总结—入门

      的内容,更多

义和文件夹入门入口以及Android总结程序项目使用

    的内容,请您使用右上方搜索功能获取相关信息。

  • 上一篇

原文地址:https://www.cnblogs.com/zuochanzi/p/9032869.html

时间: 2024-10-17 03:16:59

Android程序入口以及项目文件夹的含义和使用总结—入门的相关文章

【REACT NATIVE 系列教程之七】统一ANDROID与IOS两个平台的程序入口&&区分平台的组件简介

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2260.html       本篇介绍两个细节:       1. 关于如何将index.android.js 与index.ios.js统一管理起来.       2.  Platform 组件的简单介绍与使用   一:将index.android.js 与index.ios.js统一管理起来. 由于React本身

如何确定android中的程序入口?

1.如何确定android中的程序入口? 需要在AndroidMainifest.xml文件中添加这个Activity的配置信息,同时将DemoActivity配置中的intent-filter移动到LauncherActivity配置中. <activity android:name=".DemoActivity" android:label="@string/app_name" > </activity> <activity and

android程序的真正入口

代码出自MtAndroid 3.1.2完全开发手册,适用于Android平台. 概述 android程序的真正入口是Application类的onCreate方法.它的继承关系如下所示: java.lang.Object android.content.Context android.content.ContextWrapper android.app.Application 操作步骤 步骤1.创建Application子类,示例代码: //ApplicationAct继承自Applicatio

Android中项目中各个文件夹的含义和用途详解

1.src:存放所有的*.java源程序. 2.gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3.assets:可以存放项目一些较大的资源文件,例如:图片.音乐.字体等. 4.res:可以存放项目中所有的资源文件,例如:图片(*.png.*.jpg).文本等. 5.res/drawable-hdpi:保存高分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型. 6.res/drawable-ldpi:保存低分辩率图

【android】下载文件至本应用程序的file文件夹或者sdcard

 一.推断是否有sdcard卡 //推断是否有SD卡 //ture:有SD卡 //false:没有SD卡 public boolean avaiableMedia(){ String status=Environment.getExternalStorageState(); if(status.equals(Environment.MEDIA_MOUNTED)){ return true; } else { return false; } } 二.下载文件至sdcard卡 if(avaiab

Android项目文件夹结构分析

项目结构例如以下图所看到的,使用不同sdk版本号建立的项目项目结构有所不同,整体同样,高版本号添加了一些包结构 1.src 和java项目一样src存放项目源码 2.gen 自己主动生成,当中R.java文件也是自己主动生成,ADT 插件自己主动依据res中文件的变化改动R.java文件,将res中的资源相应一个16进制地址,用于在在代码中引用到这些资源文件. 3.bin 项目编译输出的文件夹,里面有apk文件 4.res 存放资源文件 a. drawable存放图片 (1)drawable-h

使用 Cordova(PhoneGap)构建Android程序

移动终端开发随着智能手机的普及变得越来越热,什么项目都想移动一把,但反观要去学这些各个终端的控件使用,实属不易,又特别是每个终端的控件及所用语言都各不相同,使得这种学习变得更加困难. 有没有一种简单的方式能够快速构建移动终端程序并能在各个终端平台上快速打包并正常使用? 答案是肯定的,并且这种框架还不少,本文简单的介绍通过Cordova(原名为phonegap)这个平台构建一个android 程序. 开发环境准备. 安装JDK,此步骤忽略,各位有意的看官可自行去oracle网站上下载你适合的jdk

Android 程序目录介绍

还是回到 Eclipse 中,首先展开 HelloWorld 项目,你会看到如图 1.17 所示的目录结构. 图   1.17 一开始看到这么多陌生的东西,你一定会感到有点头晕吧.别担心,我现在就对上图中 的内容一一讲解,你很快再看这张图就不会感到那么吃力了. 1.    src 毫无疑问,src 目录是放置我们所有 Java 代码的地方,它在这里的含义和普通 Java 项目下的 src 目录是完全一样的,展开之后你将看到我们刚才创建的 HelloWorldActivity 文件就在里面. 2.

Android 程序员必须知道的 53 个知识点

1. android 单实例运行方法 我们都知道 Android 平台没有任务管理器,而内部 App 维护者一个 Activity history stack 来实现窗口显示和销毁,对于常规从快捷方式运行来看都是 startActivity 可能会使用 FLAG_ACTIVITY_NEW_TASK 标记来打开一个新窗口,比如 Launcher,所以考虑单任务的实现方法比较简单,首先 Android123 纠正下大家一种错误的方法就是直接在androidmanifest.xml 的 applica