码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2018-05-13 19:08:49      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:bucket   分享图片   感知   www.   targe   18C   数组   添加   问题   

    • 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 总结 程序 项目 使用 

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

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

标签:bucket   分享图片   感知   www.   targe   18C   数组   添加   问题   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!