[Android系列—] 2. Android 项目目录结构与用户界面的创建

前言

[Android系列—] 1. Android 开发环境搭建与Hello World

这一篇中介绍了如何快速搭建Android开发环境, 并成功了建立一个没有任何代码更改的 Android 应用程序。

接下来, 就得看看

1. 使用 Eclipse  创建的APP 有哪些目录和文件

2. 如何创建一个比Hello World 高级的一个用户界面

appcompat_v7

在创建 MyFirstApp 的 Android 项目时, 会发现在项目路径下多出了一个 appcompat_v7 的项目。

而且这个项目不能删除,删除之后, 新建的项目也会出错。

appcompat_v7 是Google 的一个兼容包,就是一个支持库,它可以让2.1 以上全使用上4.0 版本的界面。

如何去除?

如果在新建项目是把最小SDK 选在Andorid4.0 以上就不需要这个支持库了。

所以,暂时且不去管这个,在那就让它在那。

目录结构

1. src

存放开发的app java 源代码文件。

默认状况下, 包含一个 Activity 的类, app  运行时就会进到这个类。

2. gen

编译器自动生成的一些java 代码。

这个目录中最关键的文件就是R.java, 这个文件是只读模式,不能更改。

R类中包含很多静态类,请静态类的名字都与res中的一个名字对应,就像是个资源字典大全。其中包含了用户界面,图像,字符串等对应各个资源的标识符,R类定义了该项目所有资源的索引。例如界面中有一个文本控件,这个控件就在布局文件中有 id.id是android:id=”@+id/textview”,那么通过R.id.textivew就可以找到这个控件。

通过R.java可以很快的查找到所需要的资源,同时编译器也会检查R.java列表中的资源是否被使用,没被使用到的资源不会被编译到软件中,这样可以减少在手机占用的空间。

这个R.java默认有attr,drawable,layout,string 4个静态内部类(Android 4.2有8个静态类,多了个id,menu,style,dimen),每个类对应一种资源。例如我们在工程中添加一副图片,那么工程就会在此类的drawable内部类中添加一条数据,如果删除了此图片,工程则会自动删除此条数据。由此可见,R.java类似于电脑的注册表。

3. Android 4.4.2,

Android Private Libraries

Android Dependencies

这三个是库。

需要特别说明的是Android Dependencies

该目录出现在ADT16以后的版本中,是ADT第三方库新的引用方式,当我们需要引用第三方库的时候,只需要将   该库拷贝到libs文件夹中,ADT就会自动完成对该库的引用(如本例中android-support-v4.jar)

4. assests
除了提供res目录存放资源文件外,android在assets目录也可也存放资源文件。Assets目录下的资源文件不会再R.java自动生成id,所以读取asset目录下的文件必须指定文件的路径,可以通过AssetManager类来访问这些文件

5. bin

该目录是编译之后的文件以及一些中间文件的存放目录,ADT先将工程编译成Android JAVA虚拟机(Dalvik Virtual Machine)   文件classes.dex. 最后将该classes.dex封装成apk包。(apk就是android平台生的安装程序包)。

6.  libs

该目录用于存放第三方库,(新建工程时,默认会生成该目录,没有的话手动创建即可)。

7. res

存放项目中的资源文件,该目录中有资源添加时,R.java会自动记录下来。res目录下一般有如下几个子目录

drawable-hdpi, drawable-mdpi, drawable-xhdpi:存放图片文件(png, jpg), 三个子目录分别保存高,中,低质量的图片

layout:屏幕布局目录,layout目录内默认布局文件是activity_main.xml,可以在该文件内放置不同的布局结构和控件,来满足项目界面的需要,也可以新建布局文件。

menu:存放定义了应用程序菜单资源的XML文件。

values, values-v11, values-v14:存放定义了多种类型资源的XML文件。

8.  AndroidManifest.xml

清单文件, 描述了应用程序的基本特征和组成。

最重要的元素就是   <uses-sdk>, 这个定义了应用程序对不同版本的Android 的兼容设定 android:minSdkVersionandroid:targetSdkVersion

类似:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />
    ...
</manifest>

实际开发时: android:targetSdkVersion  这个值可能要经常被设置成目前的最新版本。

用户界面

安卓应用的用户界面是构建在 View 和 ViewGroup 的层级对象之上。

View 对象通常是类似 buttons 或者  text fields 这样一些UI 组件;

ViewGroup 对象是不可见的View 容器, 用来定义子的 views 的布局, 像是一个grid 还是一个垂直列表。

可以在XML 中定义UI的层级结构:

创建一个用户界面

打开 res/layout/fragment_main.xml。

这个文件的内容是:

<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.oscar999.myfirstapp.MainActivity$PlaceholderFragment" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

显示 Hello World 应该就是这个地方配置的了。

接下来就介绍如何创建一个新的用户界面

1. 创建一个线性布局

res/layout/fragment_main.xml

删除TextView 元素;

把 RelativeLyaout 修改为LinearLayout, 并且添加android:orientation的属性,值为 "horizontal"

修改后内容为:

<LinearLayout 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:orientation="horizontal" >
</LinearLayout>

LinearLayout 是一个视图组(是ViewGroup的子类),通过android:orientation属性配置, 把子视图配置成水平或竖直的方向。

android:layout_width和android:layout_height 这两个属性是必须的, 用来指定大小。这里因为LinerLayout 是布局根视图,它需要填充这个屏幕区域, 所以设置成“match_parent”, 这个值使View 自动伸展以适应父视图的大小。

2. 添加一个文本框(Text Field)

使用<EidtText>元素在LienarLayout 中添加一个可以输入的文本框。

内容如下:

   <EditText android:id="@+id/edit_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />

android:id:

定义一个唯一的标识, 可以通过这个id在app代码中使用这个 View.

@ -- 这个是必须的, 后面接id , 再后面就是资源名字(edit_message)

+ -- 加号仅仅在首次定义 resource ID时需要。

android:hint

输入框的默认值。

@string/edit_message 这是引用一个已经定义的字符串资源。

3. 添加字符串资源

上面有用到字符串资源(edit_message), 这个在什么地方定义呢?

打开: res/values/strings.xml, 会发现 Hello World  就定义在这个地方。

最最后加入两行

4. 增加一个按钮

和上面Text Field 类似, 添加一个button,

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />

保存以上修改的xml 文件, 重新运行 app

使输入框填充整个屏幕宽度

从上面的显示效果可以看到,按钮的宽度还好,输入框的宽度略小,如果能展开到整个屏幕就好了。

修改EditText 的配置如下:

layout_weight 配置的是一个权重值,用来配置各View 占有的剩余空间的比重。

如果有两个 view , 一个的值是1, 一个的值是  2 的话,则一个占有3/1 , 另一个占有2/3.默认的值是 0 ,

android:layout_width="0dp" ,配置成0 , 是为了提升布局的性能, 因为 "wrap_content" 的配置, 系统会运算相应的大小。

完成后的效果:

[Android系列—] 2. Android 项目目录结构与用户界面的创建

时间: 2024-08-02 07:00:25

[Android系列—] 2. Android 项目目录结构与用户界面的创建的相关文章

二、BaseCms系列文章:项目目录结构介绍

一. 目录结构截图 二. 目录结构说明 - documents    存放项目相关的文档文件 - api   api 数据接口目录 - assets    资源文件目录 - components     组件存放目 - mixins       vue 混入代码目录 - mock        mockjs 数据接口目录 - router 路由 - store  状态管理 - style   样式文件目录 - utils    工具类,公用代码 - views 视图 - vue.config.j

【Android快速入门1】目录结构及adb命令(以API19为例)

目录结构 src: 存放java代码gen: 存放自动生成文件的. R.java 存放res文件夹下对应资源的idproject.properties: 指定当前工程采用的开发工具包的版本libs: 当前工程所依赖的jar包.assets: 放置一些程序所需要的媒体文件.bin: 工程的编译目录. 存放一些编译时产生的临时文件和当前工程的.apk文件. res(resources): 资源文件. drawable: 存放程序所用的图片. layout: 存放android的布局文件. fragm

[Android系列—] 1. Android 开发环境搭建与Hello World

前言 開始之前先熟悉几个名词: SDK -- Software Development Kit, 软件开发工具包.这个词并不陌生, JDK,就是Jave Development Kit,相同对于Android 来说也有Android SDK. Android SDK 提供了构建,測试和调试安卓应用的API 库和开发人员工具. ADT- Android Developer Tools.安卓开发人员工具, 事实上这里就是Eclipse 用于Android 开发的插件. 高速开发环境搭建 在搭建And

百度Baidu EFE team的前端规范——项目目录结构规范

项目目录结构规范 简介 该文档主要的设计目标是项目开发的目录结构保持一致,使容易理解并方便构建与管理. 编撰 李玉北.erik.黄后锦.王杨.张立理.赵雷.陈新乐.刘恺华. 本文档由商业运营体系前端技术组审校发布. 要求 在本文档中,使用的关键字会以中文+括号包含的关键字英文表示:必须(MUST).关键字"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT"

Android系列之Android 命令行手动编译打包详解

http://www.qdmm.com/BookReader/1222701,54263720.aspxhttp://www.qdmm.com/BookReader/1222701,54263869.aspxhttp://www.qdmm.com/BookReader/1222701,54263871.aspxhttp://www.qdmm.com/BookReader/1222701,54263876.aspxhttp://www.qdmm.com/BookReader/1222701,542

Laravel项目目录结构说明

Laravel项目目录结构说明: |- vendor 目录包含你的 Composer 依赖模块及laravel框架. |- bootstrap 目录包含几个框架启动跟自动加载配置的文件. |- app.php |- autoload.php |- config 应用程序的配置文件. |- database 数据库迁移与数据填充文件. |- public 项目web入口和静态资源文件 (图片.js.css,字体等等). |-index.php 入口 |- resources 目录包含视图.原始的资

基于Maven管理的JavaWeb项目目录结构参考

通常在创建JavaWeb项目时多多少少都会遵循一些既定的比较通用的目录结构,下面分享一张基于Maven管理的JavaWeb项目目录结构参考图: 上图仅是参考,不同项目不同团队都有自己的约定和规范. 个人体会: 项目目录结构一旦约定和规范之后,每个团队成员自我约束和遵守规范才是整个目录结构不随项目的进展而变得越来越不清晰的根本.

学习一份百度的项目目录结构规范

项目目录结构规范 简介 该文档主要的设计目标是项目开发的目录结构保持一致,使容易理解并方便构建与管理. 编撰 李玉北.erik.黄后锦.王杨.张立理.赵雷.陈新乐.刘恺华. 本文档由商业运营体系前端技术组审校发布. 要求 在本文档中,使用的关键字会以中文+括号包含的关键字英文表示:必须(MUST).关键字"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT"

MVVM 模式下iOS项目目录结构详细说明

?更多技术干货请戳:听云博客 我们在做项目的时候,会经常用到各种设计模式,最常见的要数 MVC (模型,视图,控制器)了.但是,今天我们要说的是另一种设计模式——MVVM. 所以 MVVM 到底是什么?下面,我们将结合代码,说明 MVVM 设计模式以及项目目录结构. 一.MVVM 模式介绍  MVVM 是 Model-View-View Model 的缩写,MVVM 听起来好像很复杂的样子,但它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和