• 02.Android项目介绍


    一、Android工程的目录结构

    在Android Studio中,一个Android项目的文件结构有许多种表现形式,称之为视图。其中,Android视图是Android Studio默认的视图,在新建一个项目之后,Android Studio就会将项目的文件结构以Android视图表现出来,Android视图显示的比较简洁,适合进行快速开发,但是对于新手来说可能并不易于理解;Project视图是程序员们比较喜欢的视图,Project视图中的文件结构就是项目在硬盘上真实的文件结构。

    Android视图

    Project视图

    对比发现,Android视图显示的内容主要在Project视图中的app文件夹中。我们用表格做个对比:

    Android视图

    Project视图

    详细说明

    app/manifests

    app/src/main/AndroidManifest.xml

    存放AndroidManifest.xml文件,整个项目的配置文件,包括程序版本、四大组件注册、权限声明等。

    app/java

    app/src/main/java

    Java源文件夹,存放项目中所有的Java代码源文件。

    app/res

    app/src/main/res

    存放项目中所有的资源文件,包括图片、布局、字符串等。

    Gradle Scripts

    app/* + HelloWorld/*

    gradle相关配置文件、gradle构建文件。

    app/build

    包含编译时自动生成的文件,与外层build文件夹类似但更复杂。

    app/libs

    存放项目中使用的第三方jar包,其中的jar包会自动加入构建路径。

    app/src/androidTest

    用来编写Android Test测试用例,可以对项目进行自动化测试。

    app/src/test

    用来编写Unit Test测试用例,可以对项目进行自动化测试。

    下面将分节介绍上面的部分目录中存放什么类型的文件。

    1、src/main/java文件夹

    顾名思义(src, source code)该文件夹是放项目的源代码的。

    java目录是放置我们所有java代码的地方,展开该目录,你将看到有一个MainActivity文件。

    打开MainActivity.java文件,会看到如下代码:

    package com.sdbi.helloworld;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }

    它通过package语句定位该类位于com.sdbi.helloworld包内(对应着文件夹),

    通过import语句导入了两个类:android.support.v7.app.AppCompatActivity和android.os.Bundle,

    MainActivity类继承自AppCompatActivity且重写了onCreate方法。

    在onCreate()中只有两行代码,其中第一句是调用了父类的onCreate()方法,用来获取Activity的状态,

    第二句用setContentView(R.layout.activity_main)来设定Activity所要显示的布局文件,它是通过对R类的引用来实现的,实际上就是位于res/layout/activity_main.xml文件。

    注意:

    (1)@Override用法:

    在重写父类的onCreate时,在方法前面加上@Override系统可以帮你检查方法的正确性。

    例如,public void onCreate(Bundle savedInstanceState){……}这种写法是正确的,

    如果你写成public void oncreate(Bundle savedInstanceState){……}

    这样编译器回报如下错误:

    Method does not override method from its superclass

    以确保你正确重写onCreate方法。(因为oncreate应该为onCreate)

    而如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。

    (2)android.support.v7.app.AppCompatActivity类:在Android Studio中几乎所有的活动Activity都要去继承于AppCompatActivity类,这是新版安卓兼容包Android Support Library中定义的一个类,为了让新的UI控件也可以跑在早期的 Android 版本。我们不用去修改它。我们重点关注onCreate()方法里面的代码。

    2、res文件夹

    资源目录,在项目中使用到的所有图片、布局、字符串等资源都在该目录下,其中图片放在drawable目录下,布局文件放在layout目录下,字符串放在values目录下。

    • drawable:用来存放.png/.jpg等位图文件。
    • layout:目录下是程序的布局文件,是.xml形式的布局文件。在android应用该程序中可以使用xml布局文件来描述应用程序的布局,同样我们可以在程序中直接通过Java来创建用户界面。使用xml文件的好处是简单,结构清晰,维护容易,但是也有缺点那就是不能动态的控制更改程序的界面。
    • values:目录下包含了所有使用XML格式的参数描述文件,我们可以自己添加我们需要的资源,如字符串(xml)、颜色(colors.xml)、样式(styles.xml)等。
    • mipmap:也是可以存放图片的目录、为了加快渲染速度和减少图像锯齿,一些图片被处理成由一系列被预先计算和优化过的图片文件。一般来说这里只存放Launcher图标。Launcher是Android系统的桌面启动器。

    3、AndroidManifest.xml文件

    清单文件,是整个Android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。

    当你新添加一个Activity的时候,一定要在这个文件中进行相应配置,只有配置好后,才能调用此Activity

    关于AndroidManifest.xml现在就讲这么多,后面还会详细介绍。

    二、设备调试及Logcat查看

    1、设备调试

    点击项目上方工具栏app图标,然后选择“Edit Configurations...”。

    2、Logcat

    Android日志系统提供了记录和查看系统调试信息的功能。当程序运行后,我们需要在调试的时候查看Logcat的信息,点击Android Studio底部的Logcat按钮,会弹出Logcat查看窗口。

    我们来测试一下Logcat

    在MainActivity中增加一行语句

    重新运行程序,查看Logcat窗口。

    Android中Log分为五级,分别对应着5个方法:

    级别由低到高:v(verbose)< d(debug) < i(info) < w(warning)  < e(error)

    我们以上面用到的Log.d("MainActivity", "调试信息")为例,Log.d(String tag, String msg)方法传入两个参数:第一个参数是tag,一般传入当前的类名就好,主要用于对于打印信息进行过滤;第二个参数是msg,即想要打印的具体内容。

    我们可以添加过滤器来分级查看。

  • 相关阅读:
    [CERC2016]机棚障碍 Hangar Hurdles(kruskal重构树+树上倍增)
    jzoj4313 电话线铺设(最小生成树+最近公共祖先)
    POJ3233 Matrix Power Series(快速幂求等比矩阵和)
    【模版】分治法求平面最近点对
    [HNOI2009]最小圈 (二分答案+负环)
    [USACO]地震 (二分答案+最优比率生成树详解)
    BZOJ:1816 [Cqoi2010]扑克牌 (贪心或二分答案)
    bzoj 4184: shallot (线段树维护线性基)
    一维点距的中位数 (分治)
    [BJWC2011]最小三角形(分治+最近点对)
  • 原文地址:https://www.cnblogs.com/lihuawei/p/16624289.html
Copyright © 2020-2023  润新知