App工程结构

在经过千辛万苦各种填坑终于安装好了Android Studio之后,在其自带的模拟器上成功运行了第一个APP(hello world),通过这个APP首先研究了一下APP基本的工程结构,从而使后面的开发更加得心应手。

先上HelloWorld工程的目录结构图

从结构图我们可以看到,该工程下面有两个目录:一个是app,另一个是Gradle Scripts。

其中,app又分下面三个子目录

(1)manifests,下面只有一个AndroidManifest.xml文件,它是APP运行的配置文件

(2)java,下面有com.example.animator.android_learning和com.example.animator.android_learning两个包,分别存放的是APP工程的java源代码以及测试用的java代码

(3)res,存放的是APP工程的资源文件。它下面又有四个子目录

  ·drawable 存放的是图形描述文件及用户图片

  ·layout 存放的是APP页面的布局文件

  ·mipmap 存放的是启动图标

  ·values 存放的是一些常量定义文件,如string型的strings.xml,像素常量dimens.xml、颜色colors.xml、样式定义styles.xml

Gradle Scripts下面主要是工程的编译配置文件,其中

(1)build.gradle 分为项目级和模块级两种,用于描述APP工程的编译规则

(2)proguard-rules.pro 用于描述java文件的代码混淆规则

(3)gradle.properties 用于配置编译工程的命令行参数,一般无需改动

(4)setting.gradles 配置哪些模块在一起编译。初始内容为include ":app",表示只编译app模块

(5)local.properties 项目的本地配置,一般无需改动。改文件是在工程编译时自动生成的,用于描述开发者本机的环境配置,比如SDK的本地路径、NDK的本地路径等

关于配置文件build.gradle

下面对原始的build.gradle文件中补充文字注释,方便理解每个参数的用途

apply plugin: ‘com.android.application‘

android {
    //指定编译用的SDK版本,如21表示使用Android5.0编译
    compileSdkVersion 21
    //指定编译工具的版本号,这里的头两位必须与compileSdkVersion保持一致,具体的版本号可在SDK的安装目录的“sdk\build-tools”下找到
    buildToolsVersion "21.1.1"

    defaultConfig {
        //指定该模块的应用编号,即APP的包名,改参数为自动生成,无需改动
        applicationId "com.example.animator.android_learning"
        //指定APP适合运行的最小SDK版本号
        minSdkVersion 21
        //指定目标设备的SDK版本号,即该APP最希望在哪个版本的Android上运行
        targetSdkVersion 21
        //指定APP的应用版本号
        versionCode 1
        //指定APP的应用版本名称
        versionName "1.0"
    }
    buildTypes {
        release {
            //指定是否开启代码混淆功能
            minifyEnabled false
            //指定代码混淆规则文件的文件名
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
        }
    }
}

//指定APP编译的依赖信息
dependencies {
    //指定引用jar包的路径
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    //指定单元测试编译用的Junit版本号
    testCompile ‘junit:junit:4.12‘
    //指定编译Android的高版本支持库
    compile ‘com.android.support:appcompat-v7:21.0.2‘
}

关于APP运行配置AndroidManifest.xml

它用于指定APP内部的运行配置,是一个xml描述文件,根节点为manifest,根节点的package指定了APP的包名,manifest下部分子节点说明如下:

(1)uses-permission 用于声明APP运行过程中需要的权限名称,如相机权限、定位权限等

(2)application 用于指定APP自身属性,默认值说明如下:

  ·allowBackup 是否允许备份

  ·icon APP在手机屏幕上显示的图标

  ·label APP在手机屏幕上显示的名称

  ·supportsRtl 设置为true表示允许从右往左的文字排列顺序

  ·theme 指定APP的显示风格

在代码中操纵控件

首先可以看到helloworld工程的页面布局文件内容如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.animator.android_learning.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>

可以看到xml布局文件和HTML做前端有一些相似,如layout_width类似于HTML中的width属性,layout_height类似于HTML中的height属性,TextView又和HTML中的textarea控件相似,由此可见APP的布局配置并不难,可以说“开发文档在手天下我有”了。

同时对应的java代码文件如下

package com.example.animator.android_learning;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

通过查找相关资料和教程知道,onCreate方法通过引用布局文件的名字来向APP页面填充布局样式,和JavaScript配合HTML一样,java也可以通过代码获取id对应下的xml标签(前提是要给xml标签添加id  android:id="@+id/helloworld")

通过代码简单改写TextView文字如下

package com.example.animator.android_learning;

import android.graphics.Color;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView= (TextView) findViewById(R.id.helloworld);
        textView.setText("小赵的第一次操作!");
        textView.setTextColor(Color.RED);
        textView.setTextSize(30);

    }
}

效果如下:

原文地址:https://www.cnblogs.com/zdm-code/p/12184398.html

时间: 2024-10-13 12:05:50

App工程结构的相关文章

【理论】【转】App工程结构搭建:几种常见Android代码架构分析

关于Android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐的代码,优美的分层总是一种舒服的享受的. 从艺术的角度看,其实我们是在追求一种美. 本文先分析几个当今比较流行的android软件包,最后我们汲取其中觉得优秀的部分,搭建我们自己的通用android工程模板. 1. 微盘 微盘的架构比较简单,我把最基本,最主干的画了出来: 第一层:com.sina.VDisk:com.sina(公司域名)+app(应用程序名称) . 第二层:各模块名称(主模块VD

Android学习系列--App工程结构搭建

本文算是一篇漫谈,谈一谈关于android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构.      关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐的代码,优美的分层总是一种舒服的享受的.      从艺术的角度看,其实我们是在追求一种美. 本文先分析几个当今比较流行的android软件包,最后我们汲取其中觉得优秀的部分,搭建我们自己的通用android工程模板.      1. 微盘      2. 久忆日记      3.网易新

Android开发App工程结构搭建

本文算是一篇漫谈,谈一谈关于android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构.      关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐的代码,优美的分层总是一种舒服的享受的.      从艺术的角度看,其实我们是在追求一种美. 本文先分析几个当今比较流行的android软件包,最后我们汲取其中觉得优秀的部分,搭建我们自己的通用android工程模板.      1. 微盘      2. 久忆日记      3.网易新

从零开始搭建架构实施Android项目

我们先假设一个场景需求:刚有孩子的爸爸妈妈对用照片.视频记录宝宝成长有强烈的意愿,但苦于目前没有一款专门的手机APP做这件事.A公司洞察到市场需求,要求开发团队尽快完成Android客户端的开发.以下模拟团队和工作开展. 团队情况:产品经理1人,Android开发2人,服务端开发2人,UI设计1人. 开发周期:两个月. 工作量:大约50个界面. 隐含需求:考虑到用户群体有可能激增的情况,服务端需要有一定的并发能力. 前提:原型已设计完成. 1 服务端概要设计 1.1 系统架构 先给出服务端的架构

携程移动端架构演进与优化之路

从2013年开始,我们先后进行了不同路径的多样性架构探索,在实践过程中也经历了各种曲折与压力,最终实现了2015年的这个全新架构,实现了无线服务端基于API Gateway的架构框架.客户端的模块化开发.测试与部署,支持运行期间的模块实时加载.按需Lazyloding.Remote加载,从而实现模块级动态升级以及代码级热修复,并 且逐步推动数百人的客户端研发团队由不堪重负.效率低下的大版本大火车开发模式向模块间独立迭代.发布轻量级的开发方向演进. 同时在架构探索期间,携程做了App相关的很多性能

让你Android开发更简单

转载:http://www.jianshu.com/p/22ff8b5fdadc 搭建一个新的Android项目,你会怎么做? 每个人对应用框架的理解不相同,但是最终达到的效果应该是一样: ①降低项目的复杂性 ②易扩展.易修改.可重用性强.可维护性强 ③职责单一,功能清晰 在android开发项目中,我们首先要考虑每个项目的共同点,比如说:Mvp.网络请求层.Base存放View的基类.Log日志.App crash.刷新加载更多.Loading.广告图.支持ListView,RecyclerV

混合型app以Appium搭建自动化测试开发环境

Appium 官方网址:http://appium.io/ 中文社区:http://testerhome.com/ 下载地址(由testerhome社区提供):http://pan.baidu.com/s/1jGvAISu#dir 1. 下载最新版本AppiumServer 1.2.0,解压后,进入目录下找到Appium.exe,运行即可,此程序作为Appnium与被测设备之间通讯的服务端 出现如下界面说明启动成功 2. 将真机连接到PC端 3. 我使用Eclipse作为开发IDE,建立一个ma

Django学习笔记(二)App创建之Model

通过实例学习, 构建一个投票(Polls)Application, 目标结果包含两个site, 一个site用来显示投票问题以及投票结果(即将展示出来的网站), 另一个site用来管理Poll实例的增删改查(即后台内容管理CMS). 1.   创建工程 django-admin.py startproject mysite 在当前目录下, 会创建一个mysite的工程目录. 那么我们的代码放在哪里比较好呢? 可能会放到OS自带的server根目录(document root)下, 比如/var/

Android官方文档之App Resources(上)

想做出一款出色的App,仅仅编写Java代码还不够.在代码中调用资源(Resources ),如位图(bitmaps).布局资源( layout definitions).UI中需要展示的字符串资源(user interface strings).动画资源(animation instructions)等,可以让您的App更加出色. 本文将介绍Android中各种类型的资源.以及获取资源的方式,如需访问官方原文,您可以点击这个链接:<App Resources>. 可为App提供的资源(Pro