android记事本程序分析
本文来源:http://www.mobdiy.com 《pro androi 2》中文连载
你不仅知道如何建立一个新Android应用,然后在模拟器中运行, 而且对android应用的结构有了一定的了解。下面,我们将分析一下Android SDK里面的示例程序记事本应用。记事本在复杂度上介于“Hello World!”和完整的android应用之间,因此对于记事本部件的分析可以给你关于android开发的一些真切体验。
载入运行记事本程序
在这个部分,我们将展示如何把记事本应用载入Eclipse IDE然后在模拟机上运行。在开始之前,我们要知道记事本应用有几个功能,比如,建立新文件,修改现有文件,删除文件,查看已建立文件等等。当用户启动应用的时候,由于先前没有建立过文件,所以,列表是空的。如果用户按下Menu键,会出现命令列表,其中一个允许他建立一个新文件。在他建立新文件之后,他可以对应的修改或者删除文件。
按照以下步骤将例子Notepad载入Eclipse IDE:
1.启动Eclipse
2.打开File->New->Project
3.在New Project的对话框中,选择Android->Android Project.
4.在New Android Project对话框中,name中填入NotesList,选择“Create project from existing sample”,然后选择Build Target为Android 2.0,在Samples下拉菜单中选择Notepad应用。注意Noetpad应用在android SDK的platformsandroid-2.0samples目录下。在选择Notepad之后,会读取AndroidManifest.xml文件,自动在对话框中填入一些内容。(见图2-13)
5.点击Finish按钮。
译者注:在具体实施的时候会碰到这样或那样的问题,大家不要着急,我弄的时候同样遇到问题,解决方法是,通过工具栏上面的Android SDK and AVD manager来看看是否已经把需要的SDK以及示例代码下载下来了,然后建立适合的模拟机,一般问题都可以解决。
现在,你应该可以看到Eclipse IDE中出现了你加载的NotesList应用。如果console口出现问题的话,试着用菜单中的Clean选项来清空他们。正如你在hello world程序里面所做的一样,你要为运行的程序建立一个启动配置,或者你干脆右击这个项目,选择Run as,选择Android Application,启动模拟机,然后安装所建应用。一旦模拟机完成加载,按Menu键查看Notepad应用。玩一会Notepad,试着熟悉它的功能。
图2-13 建立NotePad应用
译者注:大家看到上图之后,点击键盘的Menu键,然后屏幕上会有增加文件的提示。大家有问题可以访问我的微博:
http://t.sina.com.cn/mobdiy
谢谢大家的支持,今天先翻译到此吧,明天接下去将本程序的代码分析,敬请期待!
未完待续!<resources>
<string name="hello">hello</string>
<string name="app_name">hello appname</string>
</resources>
在这个文件建立以后,Eclipse的ADT插件就会在你应用的根包下建立或者更新R.java文件,并且赋予这两个字符串唯一的ID。
注意到下面R.java文件的位置。我们给出了一个高层目录结构,比方说“MyProject”。
注:不管有多少资源文件(音乐、图片),只有一个R.java文件。
对于在表3-1中的string-resource文件,更新后的R.java文件有了如下条目:
注意,首先,R.java在根包里面定义了一个顶级类:public static final class R。在R类里面有个内部类,static final class string。R.java建立这个内部静态类来作为string-resource ID的名字空间。
这两个static final ints定义了变量hello和app_name的ID。你可以按照下面的结构在程序的任何地方使用这些资源的ID:
R.string.hello
注意到这些ID是int型的而非string型的。许多需要string参数的函数也可以传入这些资源的ID。Android在需要的时候可以把这些int解析到string。
习惯上我们不会把所有的string定义在一个strings.xml文件里。Android支持如表3-1定义的、且位于/res/values子目录的任意多个文件。
这个文件结构仿照起来并不困难。根节点是<resources>,下面有一个或多个子节点<string>。每个<string>都有一个name属性,和R.java里面生成ID的语句对应。
为了验证子目录中支持多个string-resource文件,你可以在相同的子目录下建立另一个文件,如strings1.xml:
Eclipse ADT插件在编译的时候会验证这些ID的唯一性,然后在R.java里面增加R.string.hello1和R.string.app_name1两条记录。
译者微博:http://t.sina.com.cn/mobdiy/图像资源深入
从以前的讨论当中可以知道图像资源所产生的ID值是由文件名决定的,比如在/res/drawable目录下有个sample_image.jpg文件,那么资源ID就是R.drawable.sample_image。要注意的是,图像资源必须放在/res/drawable文件夹下,而且不允许在此文件夹下的子文件夹中,否则不会被读取。
下面是在XML中定义Button时引用图像资源
<Button
Android:id="@+id/button1"
Android:background="@drawable/sample_image"
/>
你也可以使用Java代码来调用它:
BitmapDrawable d = activity.getResources().getDrawable(R.drawable.sample_image);
button.setBackgroundDrawable(d);
Color-Drawable Resources
在Android里,图像属于drawable资源的一种。Android还支持其他drawable的资源,比如color-drawable资源,主要代表一个颜色块。
要定义这些颜色块,你需要在/res/values目录中的XML文件中用drawable节点来定义。
下面是在XML文件中定义Color-Drawable 资源
<resources>
<drawable name="red_rectangle">#f00</drawable>
</resources>
下面是在Java代码里使用Color-Drawable资源
ColorDrawable redDrawable = (ColorDrawable)
activity.getResources().getDrawable(R.drawable.red_rectangle);
textView.setBackground(redDrawable);
在XML代码里引用
<TextViewandroid:layout_width="fill_parent"
Android:background="@drawable/red_rectangle" />
这里需要指出的一点是:在android的官方文档中没有提供圆角矩形的相关支持,这里我们通过<shape>标签来定义圆角矩形,尽管<shape>标签也未在官方文档中出现。
下面是在/res/drawable/my_rounded_rectangle.xml文件中的定义:
<shape xmlns:android="http://schemas.android.com/apk/res/randroid">
<solid android:color="#f0600000"/>
<corners android:radius="13dp" />
</shape> 9 楼 javaFisher 2011-04-21 LZ 么有图片,么有王道啊
教程中提到的网址的域名也早已被其他人注册了,看不到资源