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

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

时间:2014-06-01 14:43:54      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:des   android   c   style   class   blog   

前言

[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 以上就不需要这个支持库了。

bubuko.com,布布扣


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


目录结构

bubuko.com,布布扣


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目录下一般有如下几个子目录

bubuko.com,布布扣

 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的层级结构:

bubuko.com,布布扣


创建一个用户界面

打开 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  就定义在这个地方。

最最后加入两行

bubuko.com,布布扣


4. 增加一个按钮

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />
保存以上修改的xml 文件, 重新运行 app

bubuko.com,布布扣


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

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

修改EditText 的配置如下:

bubuko.com,布布扣

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

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

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

完成后的效果:

bubuko.com,布布扣



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

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

标签:des   android   c   style   class   blog   

原文地址:http://blog.csdn.net/oscar999/article/details/27951355

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