Android小程序(1)--Build Your First App(a)

Build Your First App

                                    ---by using Android Studio

此为笔者跟随Google官方文档学习Android 应用开发所编写的第一个App,详细代码可以参见My Github。此部分我仅仅归纳总结一下使用Android Studio的成果及收获。

新建一个项目-> 使用手机作为虚拟机 -> 试运行 -> 创建简单UI -> 添加TextView 和 button -> 添加按钮相应机制 -> 创建Intent -> 创建第二个Activity -> 完善Intent -> 运行App

在试运行时,正常状态下手机会显示的默认页面是Head 为 My First App, 页面文字为Hello World 的程序。

以下详解几个比较难的部分:

创建简单的UI

由于Android Studio 中很好地实现了java代码与图形用户界面的分离,因此我们在设计UI时可以不用考虑java代码的混合问题,只需要在设计好UI后通过Intent机制建立连接即可。
UI文件在AS中的后缀为.xml文件,因此我们首先进行activity_main.xml文件的编辑:(.xml文件的文件名不能出现大写字母,这些信息在创建时AS都会有提示)

设置基本布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
</LinearLayout>
  • 将默认的相对布局改为线性布局(原因暂时未知)
  • 设置布局的方向为水平方向(原因暂时未知)
  • 将布局的宽度和高度改为match_parent(原因之后细致分析)

创建Text Field

<EditText android:id="@+id/edit_message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />
  • android:id: 为该Text Field 设置一个unique id,方便进行传值以及调用
  • layout_width/height: 选择wrap_content 表明的是文本框的大小由文字来决定
  • hint: 这是当文本框内容为空时默认显示的内容。注意:此处的edit_message 不是文字的默认内容,而是相当于一个符号,给这个string赋值的内容才是真正的提示内容。

添加string source
string.xml 是管理所有UI的各种插件的字符名称的文件。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">My First App</string>
    <string name="edit_message">Enter a message</string>
    <string name="button_send">Send</string>
    <string name="action_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
</resources>

由代码可以见到,app_name 这个符号给的内容是My First App,刚刚的文本框符号我们给的内容是Enter a message, 而接下来的button按钮的字符串符号我们设置为Send

添加按钮(button)

 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />

与文本框相同,因此在此不进行赘述。

这里写图片描述

为了使页面看起来更加地美观,因此可以进行如下修改:

<EditText
    android:layout_weight="1"
    android:layout_width="0dp"
    ... />

详解layout_weight: layout_weight 的参数值 除以 (参数值+1)即为hint文字部分占整个文本框的比例。
此处为何要将width设置成0dp呢,似乎不设置就视图而言没有多大影响
以下是得到的内容:
这里写图片描述

创建第二个Activity

第二个Activity是输入文字,按下button按钮之后将文字呈现出来的界面。
首先是
按钮响应
我们为SEND按钮创建一个onClick()事件,onClick中的内容即为该事件的名称,代码如下:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:onClick="sendMessage" />

在点击button_send这个按钮时,会触发sendMessage事件,因此我们要在my_activity.java中写入sendMessage()这个方法。

建立Intent
(Intent可以建立UI与java文件的连接,以及事件触发信息的传递)

public void sendMessage(View view) {
  Intent intent = new Intent(this, DisplayMessageActivity.class);
}

该部分极为重要

  • 为何此处要将view作为参数值(之后分析)
  • 新建一个Intent,一个Context将作为第一个参数,此处使用this是因为Activity是Context的一个子类?
  • DisplayMessageActivity 是一个类,也就是第二个Activity,在onClick事件被触发时会跳转至此UI界面

接下来我们要先得到文本框中的值,然后再传到DisplayMessageActivity即可。

首先得到文本框的id:

EditText editText = (EditText) findViewById(R.id.edit_message);

注意:此时需要导入所需的相关包,在android studio 中只需要使用alt + enter 即可完成,下同)

public void sendMessage(View view) {
  Intent intent = new Intent(this, DisplayMessageActivity.class);
  EditText editText = (EditText) findViewById(R.id.edit_message);
  String message = editText.getText().toString();
  intent.putExtra(EXTRA_MESSAGE, message);
}

得到文本框之后,我们再通过第三行得到其字符串,然后调用intent的putExtra()方法,putExtra()方法的第一个参数是一个键值对,也就是该message的键值对名称,第二个参数是该键值对的参数值。
接着再在MainActivity中新建一个字符串,为该键值对添加一个独一无二的名称,一般的取法就是app包名.MESSAGE.

接着我们再启用intent:

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

创建第二个Activity

创建完成后,Android Studio 会智能化地得到所需的内容,我们运行即可。

这就是我的第一个APP,以下是其完成展示:
(获取看上去还有些小问题,将进行后续改进)(如何修改图片大小?)

First Activity
Second Activity

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值