android之helloworld详解

来源:互联网 发布:最新飞星排盘软件.rar 编辑:程序博客网 时间:2024/05/22 03:32

 通过第一个android程序helloworld对各个文件的了解

src/

每个Android程序都包含资源目录(src)主要存放资源文件

packagecn.csdn.class3g;//声明包名称

importandroid.app.Activity;

importandroid.os.Bundle;

public classHelloWorldActivity extends Activity {//定义类  继承activity

    /** Called when the activity is firstcreated. */

    @Override

    public void onCreate(BundlesavedInstanceState) {//重写方法onCreate应用程序启动时调用

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);//设置画面显示时的视图(初始化后的helloView)

    }

}

gen/

gen/自动生成目录:gen 目录中最关键的程序就是 R.java 。R.java 自动生成的。会由 ADT 插件自动根据你放入 res 目录的 XML 中字符、视频/音频文件、图像等资源,自动更新添加'R.java' 这个文件中。只要修改XMLR.java会自动更新,所有的 Android 程序中都会有以R.java 为名的这个文件,你完全不需要,也应避免手工修改 R.java 这个文件。如果目录下没有R.java,也不用着急,可以右击工程->选择Properties->选择 Android->Apply就行  还有一种是右击工程->选择Android Tools->选择FixProject Properties

新建项目R.java会默认有四个内部类

R.java文件:默认有attr,drawable,layout,string这四个静态内部类,每个静态内部类对应一中资源,如layout静态内部类对应layout中的界面文件,string静态内部类对应string内部的string标签。如果在layout中在增加一个界面文件或者在string内增加一个string标签,R.java会自动在其对应的内部类增加所增加的内容。

R.java除了自动标识资源的索引功能外,还有另一个功能,就是当res文件中的某个资源在应用中没有被用到,在这个应用被编译时,系统不会把对应的资源编译到应用中的APR包中。

packagecn.csdn.class3g;

 

public final classR {

    public static final class attr {

    }

    public static final class drawable {

        public static final int ic_launcher=0x7f020000;

    }

    public static final class layout {

        public static final int main=0x7f030000;

    }

    public static final class string {

        public static final int app_name=0x7f040001;

        public static final int hello=0x7f040000;

    }

}

其中定义的变量名字都是XML文件中映射过来的

Assets

词义本事就是资产的意义,主要存放视频、音频、多媒体等文件;

访问的时候,则必须使用AssetManager以字节流的方式来读取,用起来非常的不方便

再下边是bin目录在bin目录下的res中

有三个目录drawable-hdpi  drawable-ldpi drawable-mdpi

drawable—hdpi看他的单词名肯定知道他是放置高分辨率的图片,drawable—mdpi放置中等分辨率的图片,drawable—ldpi放置低分辨率的图片

再下边有个res目录 其中那drawable-hdpi  drawable-ldpi drawable-mdpi跟上边一样

Values中的string.xml

<?xml version="1.0"encoding="utf-8"?>

<resources>

    <string name="hello">Hello World,HelloWorldActivity!</string>

    <string name="app_name">HelloWorld</string>

</resources>

这里定义一个个键值对 也就是赋值的  减少内存的浪费 也这对字符的统一管理和国际化有很大的意义

Main.xml

<?xml version="1.0"encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical">

 <TextView

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:text="@string/hello" />

</LinearLayout>

布局文件的内容不多 , 开始就是一个LinearLayout 组件的定义,然后在这个 LinearLayout 放了一个用于显示文字的 TextView 。现在来看一下几个参数:

LinearLayout 一个线性布局面板,只能垂直和水平布局, android:orientation="vertical" 代表里面的子元素只能垂直排列,而使用 android:orientation="horizontal"就标识里面的子元素水平排列 ..

.android:layout_width定义当前视图占的宽度,这里是 fill_parent 即为充满整个屏幕。而设置成wrap_content 会根据当前视图的大小只能的改变宽度

android:layout_height是定义视图的高度,这里也是填充整个屏幕。而设置成 wrap_content 会根据当前视图的大小只能的改变高度。

android:text 是这是 TextView 要显示的文本,可以是字符串,也可以是一个字符串的引用,这里是一个引用,引用的是 strings.xml 定义好的名字为hello 的字符串

AndroidManifest.xml

<?xml version="1.0"encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="cn.csdn.class3g":    该应用包

    android:versionCode="1"应用的版本号

    android:versionName="1.0" >应用的版本名字

 

    <uses-sdk android:minSdkVersion="10"/>

    <uses-permission android:name="android.permission.SEND_SMS"/>

 

    <application标签定义了一个应用,一个项目最多有一个 Application 标签。

       android:icon="@drawable/ic_launcher"定义了应用的图标 引用资源文件中的 icon 图片

       android:label="@string/app_name" >定义了应用的名称

       <activity标签定义了一个 Activity ,你的每一个Activity 必须在这里定义,否则不能运行 .

 

           android:label="@string/app_name"

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

android:name=".HelloWorldActivity" >定义了该Activity 的标题 

 

           <intent-filter >定义一个 Intent过滤器,用于标记对应的 Activity ,以便 Android系统能找到该 Activity ,定义的是隐性的Intent ,主要使用两个子标签 action 和 category 来区分每个 Intent 。

                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>

            </intent-filter>

        </activity>

    </application>

 

</manifest>

这是项目的重要配置文件,诸如 Activity ,权限, Intent等都在这里配置

<uses-sdkandroid:minSdkVersion="10" /> 就是定义应用的最低SDK 的级别,

<manifest>元素是AndroidManifest.xml的根元素,”xmlns:android”是指该文件的命名空间,“package”属性是Android应用所在的包,“android:versionCode”指定应用的版本号,如果应用不断升级,则需要修改这个值,”android:versionName”是版本的名称,这个可以根据自己的喜爱改变

<application> 元素

<application>元素是一个很重要的元素,开发组件都会在此下定义

<application>元素的”icon”属性是用来设定应用的图标,其中“@drawable/ic_launcher”的意思是:在R.java文件中的drawable静态内部类下的icon,

<application>元素的“label”属性用来设定应用的名称,其中“@string/app_name”和上述的一样,也是R.java文件中的string静态内部类下的app_name

<activity>元素

<activity>元素的作用是注册一个activity信息,当我们在创建“HelloWorldAndroid”这个项目时,指定了“CreatedActivity”属性为“HelloActivity”,然后ADT在生成项目时帮我们自动创建了一个Activity,就是“HelloWorldActivity.java”;

<activity>元素的“name“属性指定的是Activity的类名,其中“.HelloWorldActivity”中的“.”指的是<manifest>元素中的“package”属性中指定的当前包,所以“.HelloWorldActivity”就相当于“cn.csdn.class3g.HelloWorldActivity.java”,如果Activity在应用的包中可以不写“.”,但是为了避免出错,还是写上这个点把

<intent-filter>元素

<intent-filter>如果直接翻译的话是“意图过滤器”,组件通过<intent-filter>告诉它们所具备的功能,就是能响应意图类型,在intent中设置action, data, categroy之后在对应的intentfilter中设置相同的属性即可通过过滤被activity调用

<project.properties>应用要求运行的最低Android版本

<android 2.3.3>    存放Android自身的jar包

0 0
原创粉丝点击