首发教学帖,Android开发(一)Hello World!

        从事开发近六年了,接触Android开发也半年多了,绝不敢称牛人,因为牛人还大有人在。博客园的帐号开到现在还是没写过一篇像样的,当初开的时候就是打算写点什么,以回报这些年在网上搜索的资料,因为如果人人都只搜索不贡献那大家也不会搜到那么好的文章了。

   废话少说了,这是第一次写技术帖,不及之处,还望包涵。牛人就免进了,因为从最简单的讲起的,就当是给自己这一段的学习做一次回顾吧!从经典的Hello World! 开始,后面会一个个题目写下去。我会从我自己开发的应用当中把由易至难的功能点拿出来写,我的应用发布至今国内各Android市场下载量也近5万了(为了不被人说我是来宣传自己的应用的,故不给出什么链接),大家给出的评价也还算可以。

        这一节我们还是从Hello World讲起吧!至于环境的安装我就不讲了吧!大家一搜一大堆,我也是搜过来的。我的环境是Windows7+Eclipse:

大家都清楚,初入某个领域的开发,我们都是写Hello World!毕竟太经典了,呵呵。首先,我们新建一个项目,什么?不会建?给个截图吧!

如果你的环境安装正确的话你应该有以下的选择,选择“Android Project”

点击"Next"进入下一步,填写一些项目的信息。注意这个地方,我刚开始因为屏幕方辨率的问题,没注意到滚动条可以拉下去还有东西可以填写的,所以总是提示出错。

好了,填完项目名,那个Location的目录第一次启动Elipse的时候会指定workspace,我把所有android项目都放到这个目录下了,当然你也可以自己选择目录,自己看着办吧!要提一下这个Build Target,我之所以选1.6的原因是我发现在开发过程中,为了兼容低版的android手机选1.6比较好,因为2.2基本上运行基于1.6开发的应用没有什么问题,当然肯定会有例外的,大家要自己尝试,至少我的应用没有问题(也有可能是没有涉及到系统权限调用的原因。好啦!填好了你就拉右边的滚动条,之后继续填写项目信息:

上面不是填了项目名吗?怎么又来个Application name呢?顾名思义这个叫做应用名嘛。。。。。。不作解释了,以后大家都会懂的,嘻嘻!现在要填Package name了,这个东西很重要,可以多写几个单词,凡是学习java的对Package name应该没问题吧?什么?和我一样做.net出身的?那么你就理解是命名空间(name space)吧!然后填Create Activity了,建议你勾起来,后面再讲为什么(不勾的话自己后面慢慢去补写这个启动界面类吧!),最后填这个Min SDK Version,这个东东呢!你上面的Buid Target选的是多少,最后面那列不是有“API...”吗?那里不是写着数字嘛?抄下来吧,如1.6是4。好了,点Finish后HelloWorld建完了,现在我们来看看项目结构。

如果你正确的建立了项目,在Eclipse中展开项目,结构应该如上图一样。我们来看看几个重要的文件夹:

src:废话,程序员都明白这里是放代码的。。。。。

gen:这里就不要去动它了,自动生成的代码会在这里出现,那个R.java绝对不是你要去更改的东西,否则后果自负,呵呵。

这个Android 1.6跟你选的Build Target有关系,也是不用你改的,是项目自动引用的,因为只有引用了这个,才能调用SDK中的功能。

assets:这里可以放一些外部文件,如一些文本等。

res:顾名思义就是resources的缩写,这下面有好几个文件夹,我们再详细的来看:

  drawable-xdpi (x代表h、l、m):这里放置你要用来做界面的一些图片的,而这个h、l、m分别是放置高、低、中分辨率的图片,至少高到什么程度、低到什么程度是项目的实际需求了,不过有时我把这三个文件夹都删了,建了一个drawable也行,不过只能放一种分辨率的图片。

  layout:这里是放布局文件的,建项目时默认就有一个main.xml了,看名字你也知道是主界面的布局了。

  values:默认有了一个strings.xml并且你如果打开的话里面还有值,android默认是把程序中的字符串存在这里的,这样就能实现多语言化,界面中的值可以与代码分离等。

最后看看AndroidManifest.xml,这是存储应用的配置的,包括应用名、图标、启动界面的配置都在这里啦!有兴趣去看看,后面再讲到这个。

然后我们关心的是Hello World怎么显示出来是吧!

现在我们打开layout里的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>

这个LinearLayout后面再解释,大概意思就是采用相邻的布局,里面有一个TextView,这个就是一个文本控件。同我一样.net出身的,就理解它为Label吧!(我有时还把它命名以"lbl"开头。。。。表笑我)。接着两个属性分是宽高,fill_parent就是填充满父控件,而wrap_content则是根据内容有多长就显示多长,所以这个TextView的宽度是填充满父控件,高度根据内容的多少决定。关键的是我们来看android:text,你已经猜到了吧?文本嘛!但这个@string/hello又是啥呢?

我们打开values下的string.xml就明了了。你初打开时可能是这样的:

不过你可以点strings.xml来切换到代码视图中来,代码应该如下:

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

上面不是问到那个@string/hello是什么吗?你猜到了吧!对了,就是这里的<string name="hello">中的值了。你这里爱改什么改什么!至于app_name,它是应用显示的名称,改了以后你安装到机子上就是这个名称。

也打开那个MainActivity.java来看看吧,你发现这个类继承了Activity,并且自动实现了一个onCreate方法,代码是这样的:

/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

我们看最后这句,setContentView(R.layout.main),这个意思就是说将那个xml文件的内容加载进来。现在只差最后一步你就明了整个项目中的连接了,打开AndroidMainifest.xml看看这段代码:

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity"
                  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>

icon自然就是图标了,label就是要显示的应用程序名,而activity的配置下面的intent-filter这里我不多做解释,只要知道这么配应用就是从这个activity启动的。

好了,我们讲了这么多,目的是要明白整个项目工作的原理的,AndroidMainifest.xml里面配置的是从MainActivity启动(不能删掉那个"."),而这个MainActivity.java里的OnCreate里将main.xml的内容给加载到界面中去了,这下挺明了了吧?

讲了半天,其实没写一行代码。。。。。只是你自己在strings.xml中改改要显示的内容吧!然后要运行啦!看图看图:

提一下如果你环境都装好的情况下,要在Eclipse里调出Android SDK and AVD Manager,放图放图:

 

然后自己新建几个模拟器,我机上建了三个,1.6、2.1、2.2的:

回到刚才说运行了。因为我的项目的Build Target是1.6的,所以它自动启动了1.6的这个模拟器开始跑了,或者它也会跳出提示框让你选模拟器,自己搞一下吧!然后效果就是这样了:

哈哈,搞这么久Hello World!才出来,没关系,我们前面罗嗦点是为了以后跑得更快。先写这么多吧!第一次发教程帖,发现真的挺累的,会继续写几篇吧!后面就看有没有朋友支持了,有的话会努力的写的。

转载请注明来自博客园,作者:jauntlin

原文地址:https://www.cnblogs.com/jauntlin/p/2019055.html