目录结构如下
1.src
和普通的java工程没什么区别,源码存放位置。
2.gen
ATD自动生成的,里面都有一个R.java。R.java 就是根据资源文件夹 res 生成的。R.java 里放的就是 res 中资源文件索引,用一个常量标记 res 中的一个资源文件,便于我们在代码中引用。
3.Android4.1.2
Android开发包
4.Android Dependencies
Android开发支持包
5.assets
6.bin
生成可以执行的包。里面会找到一个apk文件。熟悉吧。android安装执行文件。
7.libs
类库包,和普通java工程的意义一致,调用的外部包
8.res
其中 drawable 是放图片的,有 drawable-hdpi,drawable-ldpi,drawable-mdpi 之分,对应的是高密度图片,低密度图片,和中等密度的图片,
四种屏幕尺寸分类:: small, normal, large, and xlarge四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
需要注意的是: xhdpi是从 Android 2.2 (API Level 8)才开始增加的分类.
xlarge是从Android 2.3 (API Level 9)才开始增加的分类.
* xlarge screens 最小 960dp x 720dp
* large screens 最小 640dp x 480dp
* normal screens 最小 470dp x 320dp
* small screens 最小 426dp x 320dp
一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。
http://developer.android.com/guide/practices/screens_support.html
Layout 中放的就是布局文件了, Android 支持通过 xml 生成视图,这样视图就和逻辑控制的代码分离了便于管理。
源码
* android:layout_width 定义当前视图占的宽度,这里是 fill_parent 即为充满整个屏幕。而设置成 wrap_content 会根据当前视图的大小只能的改变宽度
* android:layout_height 定义当前视图占的高度,这里是 fill_parent 即为充满整个屏幕。而设置成 wrap_content 会根据当前视图的大小只能的改变高度
android:text 是这是 TextView 要显示的文本,可以是字符串,也可以是一个字符串的引用,这里是一个引用,引用的是 strings.xml 定义好的名字为 hello 的字符串android:layout_centerHorizontal 水平居中
android:layout_centerVertical 上下居中
布局图如下
Values 中放的就是我们常用的字符串,颜色值,数组等 .
9.AndroidMainfest.xml
AndroidManifest.xml 很重要,每个 Android 项目都有一个,这是Android 的配置文件,我们可以在这里配置应用的属性,定义 Activity ,声明使用的权限等等,
<manifestxmlns:android=‘‘http:
package=‘‘com.javaer.an‘‘
android:versionCode=‘‘1‘‘
android:versionName=‘‘1.0‘‘]]>
android:minSdkVersion=‘‘8‘‘
android:targetSdkVersion=‘‘15‘‘/>
android:icon=‘‘@drawable/ic_launcher‘‘
android:label=‘‘@string/app_name‘‘
android:theme=‘‘@style/AppTheme‘‘]]>
android:name=‘‘.MainActivity‘‘
android:label=‘‘@string/title_activity_main‘‘]]>
<INTENT-FILTER]]>
<actionandroid:name=‘‘android.intent.action.MAIN‘‘>
1. Package: 定义了该应用的包。
2. android:versioCode 定义了应用的版本号
3. android:versionName 定义了应用的版本名字
4. application 标签定义了一个应用,一个项目最多有一个 Application 标签。
5. android:icon=‘‘@drawable/ic_launcher‘‘ 定义了应用的图标 引用资源文件中的 ic_launcher图片
6. android:label=‘‘@string/app_name‘‘ 定义了应用的名称 AppTheme定义主题
7. activity 标签定义了一个 Activity ,你的每一个 Activity 必须在这里定义,否则不能运行 .
8. Android:name 定义了 Activity 的类名 , 这里的 .MainActivity 是以上面的 Package 定义为基础的,也就是 Package(com.javaer.an) 加上这个 android:name(.HelloWorld) 要能定位到这个Activity(com.javaer.an.MainActivity) ,否则就是找不到 .
9. android:label 定义了该 Activity 的标题
10. intent-filter 定义一个 Intent 过滤器,用于标记对应的 Activity ,以便 Android 系统能找到该Activity ,定义的是隐性的 Intent ,主要使用两个子标签 action 和 category 来区分每个 Intent。
* android:label=‘‘@string/title_activity_main‘‘]]]]> 这句话,对应values文件夹下Strings.xml来理解比较好理解(values在res目录下)
Strings.xml有个key value
MainActivity
10.ic_launcher-web.png
软件默认图标
11.proguard-project.txt
12.project.properties
就一句话。目标为Android-16
target=android-16
看一下helloword例子的源码
package com.javaer.an;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
一个 Activity 可以想象成一个手机的屏幕,用于展示一屏的内容,所以所有要展示内容的屏幕都要继承 Activity 才能实现,接着覆盖了 onCreate() 方法对该 Activity 进行初始化 setContentView(R.layout.activity_main);
首发于http://java-er.com - http://java-er.com/blog/android-demo-file/