作者:Vamei 出处: 欢迎转载,也请保留这段声明。谢谢!
之前各讲中,分别讲解了安卓的开发环境、架构和基本概念。从这一讲开始,我将制作一个简单的应用,并通过逐步升级它的功能,连带出安卓开发的多个情境。
《维纳斯的诞生》是文艺复兴早期名画。相传美神维纳斯从海的泡沫中诞生,波提切利用大胆的笔触描绘这一古典神话。画面洋溢着对人体和美的热爱。如果在中世纪或者西班牙宗教审判时期,这幅画足够波提切利上火刑架了。
我将制作一个简单的欢迎页面。页面中有一个按钮。点击后,将显示制作人姓名。
知识点包括:
按照安卓第一夜 第一个应用中的介绍,创建一个Android项目Vamei,项目包的名字为me.vamei.vamei。
我将要创建一个页面。这个页面的视图定义在res/layout/l中。从安卓第四夜 概念漫游(下)中,我们已经知道,这个XML文件描述了一个视图树。内容如下:
<LinearLayout xmlns:android=""xmlns:tools=""android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent" ><TextView android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Welcome" /><Buttonandroid:id="@+id/author"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/btn_text" /></LinearLayout>
这里采用了线性布局LinearLayout,根据它的orientation的属性"vertical",视图元素将从上向下排列。线性布局中包含一个TextView,以及一个Button按钮。TextView用于显示文本"Welcome"。
视图元素有layout_width和layout_height属性,分别定义元素的宽度和高度。这两个属性可以是具体的数值,比如"10px",也可以是:
Button还有一个id,即author。在程序中我们可以借用这个id来引用该按钮。Button上文本是一个字符串。注意符号@,表示这里引用了一个名为btn_text的字符资源。我们当然可以像"Welcome"那样直接使用一个字符串,但引用字符资源有额外的好处。我们可以在程序的多处重复利用的同一个资源条目,从而便于修改。该字符串保存在res/l中:
<?xml version="1.0" encoding="utf-8"?> <resources><string name="app_name">Vamei</string><string name="action_settings">Settings</string><string name="author">vamei</string> <string name="btn_text">who am I</string> </resources>
可以看到,名为btn_text的字符串资源为"who am I"。
上面XML定义的视图是静态的。想要实现动态的应用,我还需要一个配套的Activity。在src文件夹下的me.vamei.vamei包中,会有一个MainActivity.java。这个Java文件中包含一个MainActivity类,继承自Activity。我将其中的代码修改为:
package me.vamei.vamei;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {Create(savedInstanceState);
// attach view tree to the activitysetContentView(R.layout.activity_main);
// monitor "click" action for the buttonButton btn = (Button) findViewById(R.id.author);btn.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View view) {Toast.makeText(MainActivity.this, getString(R.string.author), Toast.LENGTH_LONG).show();}});} }
在这个类中,我只包含了一个onCreate()方法。当应用启动时,安卓将调用onCreate()方法。该方法有一个Bundle类型的参数,记录Activity的状态,我将在以后讲解。
onCreate()方法中主要做了两件事:
用户点击按钮后,安卓将执行监听对象的onClick()方法。该方法利用Toast,显示一段文本,即R.string.author对应的字符串资源。在res/l中,已经定义该字符串为"vamei"。Toast是一个弹出的文字显示框。makeText()的三个参数分别为弹出框的Context、要显示的字符串和显示时间。
已经完成的Activity需要在l中注册。这是安卓应用的配置文件,可以进行许多权限相关的设定。我的l如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=""package="me.vamei.vamei"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="19" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="me.vamei.vamei.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></manifest>
可以看到<activity>标签中注册了MainActivity。<Activity>中还定义了该Activity的Intent Filter,即愿意接收的Intent。
运行应用,效果如下:
好吧,这个界面离维纳斯还有点距离……
一个单页Activity
LinearLayout, TextView, Button
layout_width, layout_height, "wrap_content", "match_parent"
setContentView()
setOnClickListener()
Toast.maketext()
<activity>
欢迎继续阅读“Java快速教程”系列文章
本文发布于:2024-01-30 23:10:33,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170662743623515.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |