[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),每一个类相应一种资源。比如我们在project中加入一副图片。那么project就会在此类的drawable内部类中加入一条数据,假设删除了此图片。project则会自己主动删除此条数据。

由此可见。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先将project编译成Android JAVA虚拟机(Dalvik Virtual Machine)   文件classes.dex. 最后将该classes.dex封装成apk包。

(apk就是android平台生的安装程序包)。


6.  libs

该文件夹用于存放第三方库,(新建project时。默认会生成该文件夹。没有的话手动创建就可以)。


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" 的配置。 系统会运算相应的大小。



完毕后的效果:




转载于:https://www.cnblogs.com/mfmdaoyou/p/6691066.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值