Android 入门/项目结构(二)

【Android项目结构】

@描述:通过描述新建项目hello world熟悉Android项目结构

1. 让我们看一下我们新建的项目是怎样的

(1)【src文件夹】里是源文件

(2)【Android 2.2】是引用的类库

(3)【gen文件夹】里面的类是ADT自动生成的,一般只有R.java文件,并且这个R.java文件不能修改 .

                  Q :  那么R.java文件是怎么生成的呢?

                  A :   R.java根据资源文件夹res生成,R.java中存放的是res中资源文件的索引. 用一个常量标记res的资源文件的好处是便于我们在代码中引用!

如果你创建的gen文件夹下没有R.java文件,可以参考解决.

2. 现在让我们去看一下【res资源文件夹】,这下面又有drawable_hdpi,drawable_ldpi,drawable_mdpi,drawable_xhdpi,layout,menu,values,values-large这些文件夹.

看到 drawable_??dpi,我们很容易会联想到这里可能是对应不同密度(dpi)的图片,猜测一下它的全写可能是这样的 hdpi => hign ,ldpi => low , mdpi => medium 那么这里的xhdpi是什么呢?

原来是extra hign!!  一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。

3.【layout文件夹】中存放的是布局文件,Android支持通过XML生成视图,这样的好处是 视图与 逻辑的分离,便于管理更好的实现了MVC模式。

4.【value文件夹】中存放是我们常用的字符串,颜色,数组等。

5.【AndroidManifest.xml】是android的项目的配置文件,且一个项目有且只有一个配置文件. 我们可以在这里配置应用的属性,定义Activity,声明使用权限.


二. 现在我们具体来看项目Code

1. Hello world类

public class HelloWorld extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
这里HelloWorld类继承了Activity类 .

Q : 那么什么是Activity ?

A : 我们可以想象成手机屏幕,那么继承Activity类的目的,是为了将Hello World输出在屏幕上.

接着onCreate()方法,这个方法的作用是初始化Activity.调用父类的构造,setContentView()方法将layout文件夹下面的main.xml布局文件作为主屏幕展示出来.

这里的R.layout.main 是main.xml在R类的索引. 通过R类的索引我们能更方便引用这个文件.

2. main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
定义版本号,以及编码

LinearLayout 是【五种布局】中的【线性布局】

android:oruentation = "vertical" 设置当前为垂直布局 .

就像这样显示:

1

2

3

对应的水平布局是:android:oruentation = "horizontal"

layout_width,layout_height 是分别设置布局的长宽. 当设定为 fill_parent 即会填充满整个父类空间,即这里的整个屏幕控件.

当我们不需要填充满整个空间的时候,我们可以设置为wrap_content, 按照内容来填充 .

android:text="@string/hello" , android:text =" "是文本视图的填充文字. 就像我们熟悉的html里的text,我们可以直接在这里写上字符串,像这样

android:text =" 文字文字文字",但是不推荐这样做 . android使用 @string/hello这样的引用方式,我们可以在string.xml文件中找到hello这个声明.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, HelloWorld!</string>
    <string name="app_name">HelloWorld</string>
</resources>

这样做的好处便于我们对字符的管理和对国际化有很大的意义.

三. AndroidManifest.xml 配置文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.cjq_ui"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HelloWorld"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="8" />

</manifest>


我们用这样的方式展示

Line     /   Description

Line 1   / 这里xmlns: android 是什么?它后面的值可以任意设置吗?

xmlns: android 是XML中的命名空间,为了防止冲突类似于Java中的Package ,xmlns: android不允许被任意设置,

它的值必须是http://schemas.android.com/apk/res/.. 后面的部分表示R.java所在的包名,所以当我们使用系统属性,需要指定R.java的位置

Line 2  /  package = "com.cjq_ui" 定义了该应用的包

Line 3.4/  定义了应用的版本号 和版本名字

Line5   /应用的图标 以及 应用的名称

Line 6 / 定义了Activity,每个Activity都必须在这里定义 ,否则无法使用 .

Line 7 / Android:name 定义了 Activity 的类名 , 这里的 .HelloWorld 是以上面的 Package 定义为基础的,也就是 Package(com.flysnow) 加上这个 android:name(.HelloWorld) 要能定位到这个 Activity(com.flysnow.HelloWorld) ,否则就是找不到 .

Line 8 / 定义了Avtivity的标题

最后的 <uses-sdk android:minSdkVersion="8" /> 就是定义应用的最低 SDK 的级别


同为初学者, 欢迎大家留下批评与建议..








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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值