zoukankan      html  css  js  c++  java
  • Android Application的目录结构

    目录结构:

      1,java目录:保存java或kotlin源文件

      2,res目录:保存Android项目的各种资源文件。比如layout子目录存放界面布局文件,values子目录存放各种XML格式的资源文件,如字符串资源文件strings.xml、颜色资源文件colors.xml、尺寸资源文件dimens.xml;drawable子目录存放XML文件定义的Drawable资源,如drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等子目录分别用于存放低分辨率、中分辨率、高分辨率、超高分辨率、超超高分辨率的5种图片文件。

        与drawable子目录对应的还有一个mipmap子目录,这两个子目录都用于存放各种Drawable资源。其区别在于:mipmap子目录用于保存应用程序启动图标及系统保留的Drawable资源;而drawable子目录则用于保存与项目相关的各种Drawable资源。

        Android按照约定,将不同的资源放在不同的文件夹内,这样可以方便的让AAPT工具来扫描这些资源,并为它们生成对应的资源清单类:R.java

        R是AAPT工具根据Android项目中的资源文件自动生成的一个java类,可以把它理解成Android应用的资源字典。

        AAPT生成R.java文件的规则主要是如下两条:

          1.每类资源都对应于R类的一个内部类。比如所有界面布局资源都对应于layout内部类;所有字符串资源对应于string内部类;所有标识符资源对应于id内部类。

          2.每个具体的资源项都对应于内部类的一个public static final int 类型的字段。例如,布局文件中用到了id为show的标识符,因此R.id类里就包含了这个字段;由于mipmap-xxx文件夹里包含了ic_launcher.png图片,因此R.mipmap类里就包含了ic_launcher字段。

          例1:/res/value/strings.xml文件。

    1 <resources>
    2     <string name="app_name">My Application</string>
    3 </resources>

          AAPT扫描后生成类似如下R.java文件。

    1     //对应于一份资源
    2     public static final class string{
    3         //对应于一个资源项
    4         public static final int app_name=0x7f040000;
    5         //.....
    6     }

          1.在java代码中引用

            R.string.app_name

          2.在XML文件中使用

            @资源对应的内部类的类名/资源项的名称

            @string/app_name

          例2:

            android:id="@+id/ok"

          1.java代码中引用:

             findViewById();

             2.其他XML文件中获取该组件,@id/ok

      3,AndroidManifest.xml文件是Android项目所必需的,是整个Android应用的系统清单文件【全局描述文件】,它用于控制Android应用的名称、图标、组件、访问权限等整体属性。除此之外,Android应用的Active、Service、ContentProvider、BroadcastReceiver这4大组件都需要在该文件中配置。  

        通常包含如下信息:

          1.应用程序的报名,该包名将会作为该应用的唯一标识。

          2.应用程序所包含的组件,如Activity、Service、BroadcastReceiver和ContentProvider等。

          3.应用程序兼容的最低版本。

          4.应用程序使用系统所需的权限声明

          5.其他程序访问该程序所需的权限声明

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     3     package="com.example.myapplication">    <!--指定该Android应用的包名,用于唯一标识该应用-->
     4 
     5     <!--指定应用的图标、标签、圆图标、主题等等-->
     6     <application
     7         android:allowBackup="true"
     8         android:icon="@mipmap/ic_launcher"
     9         android:label="@string/app_name"
    10         android:roundIcon="@mipmap/ic_launcher_round"
    11         android:supportsRtl="true"
    12         android:theme="@style/AppTheme">
    13 
    14         <!--定义应用的一个组件:Activity,该Activity的类为MainActivity-->
    15         <activity android:name=".MainActivity">
    16             <intent-filter>
    17 
    18                 <!--指定该Activity是程序的入口-->
    19                 <action android:name="android.intent.action.MAIN" />
    20 
    21                 <!--指定加载该应用时运行该Activity-->
    22                 <category android:name="android.intent.category.LAUNCHER" />
    23             </intent-filter>
    24         </activity>
    25     </application>
    26 
    27 </manifest>
  • 相关阅读:
    php安装yaf,memcache,memcached模块
    django的ORM操作
    Composer简介
    MySQL中exists和in的区别及使用场景
    MySQL事务原理浅析
    MySQL JOIN原理
    mysql 子句、子查询、连接查询
    多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP
    数据库多表连接方式介绍-HASH-JOIN
    MySQL中的case when 中对于NULL值判断的坑
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/11003973.html
Copyright © 2011-2022 走看看