Android基础入门

如何创建你的第一个Android项目

1.在 Android Studio 中,创建新项目:
如果您未打开项目,请在 Welcome to Android Studio 窗口中,点击Start a new Android Studio project。
如果您已打开项目,请选择 File > New Project。
在这里插入图片描述

2.在 New Project 屏幕中,输入以下值:
在 Add an Activity to Mobile 屏幕中,选择 EmptyActivity,然后点击Next
Application Name:“My First App”
Company Domain:“example.com”
Android Studio 会为您填充软件包名称和项目位置,但您也可根据需要编辑这些内容。

Minimum Required SDK 是指您的应用所能支持的最低 Android 版本,由API 级别表示。为支持尽可能多的设备,您应将其设置成可让您的应用提供核心功能集的最低可用版本。如果应用的任何功能只能在更新版本的 Android上运行,并且不属于核心功能集的关键功能,则可仅当在支持该功能的版本上运行时启用该功能。
在这里插入图片描述
3.在 Customize the Activity 屏幕中,保留默认值并点击Finish。
经过一些处理后,Android Studio将打开并显示包含默认文件的“Hello World”应用。在以下课程中,您将向其中一些文件添加功能。
下面让我们花一点时间回顾一下最重要的文件:首先,请确保已打开Project 窗口(选择 View > Tool Windows > Project),并从顶部的下拉列表中选择Android视图。随后,您可以看到下列文件:

app > java > com.example.myfirstapp > MainActivity.java
完成新项目向导后,该文件将显示在 Android Studio 中。 它包含您之前创建的 Activity 的类定义。当您构建并运行应用时,Activity会启动,并加载显示“Hello world!”的布局文件。

app > res > layout > activity_main.xml
此 XML 文件定义您的 Activity 的布局。它包含带有文本“Hello world!”的 TextView元素。

app > manifests > AndroidManifest.xml
清单文件描述应用的基本特性并定义其每个组件。随着课程学习的深入和为应用添加组件的增多,您会反复用到这个文件。

Gradle Scripts > build.gradle
Android Studio 使用 Gradle 来编译和构建您的应用。您的项目的每个模块都有相应的 build.gradle文件,整个项目也有相应的build.gradle 文件。

如何在你的设备上运行你的程序

设置您的设备,如下所示:

1.使用一根 USB 电缆将您的设备连接到您的开发机器。 如果您是在 Windows 上开发,可能需要为您的设备安装相应的 USB 驱动程序。如需帮助安装驱动程序,请参阅原始设备制造商 (OEM)USB 驱动程序文档。

2.转到Settings > Developer options,在您的设备上启用 USB debugging。
注:在 Android 4.2 及更新版本的设备上,Developeroptions 默认处于隐藏状态。如需将其显示出来,请转到Settings > About phone并点按 Build number七次。返回上一屏幕即可找到 Developer options。

3.从 Android Studio 中运行应用,如下所示:
1.在Android Studio 中,选择您的项目,然后点击工具栏中的 Run 。
2.在 Select Deployment Target 窗口中,选择您的设加粗样式备,然后点击OK。
Android Studio 会在您连接的设备上安装并启动应用。

在模拟器上运行您的应用

在模拟器上运行您的应用之前,需要创建一个Android Virtual Device (AVD)定义。AVD 定义可用于定义您想要在Android Emulator 中模拟的 Android电话、平板电脑、Android Wear 或 Android TV 设备的特征。
创建 AVD 定义,如下所示:
1.通过选择Tools > Android > AVD Manager,或点击工具栏中AVD Manager 图标,启动 Android Virtual Device Manager 。
2.在 Your Virtual Devices 屏幕中,点击 Create Virtual Device。
3.在 Select Hardware 屏幕中,选择电话设备(如 Nexus 6),然后点击Next。
4.在 System Image 屏幕中,选择 AVD 所需的系统映像,然后点击Next。
如果未安装特定的系统映像,则可通过点击Download 链接获取它。
5.在这里插入图片描述

6.验证配置设置(对于您的第一个AVD,请将所有设置保持原样),然后点击 Finish。

如需了解有关使用AVD 的详细信息,请参阅创建和管理虚拟设备。
从 Android Studio 中运行应用,如下所示:
1.在Android Studio 中,选择您的项目,然后点击工具栏中的 Run 。
2.在 Select Deployment Target 窗口中,选择您的模拟器,然后点击OK。
模拟器可能需要几分钟时间完成启动。您可能需要将屏幕解锁。解锁后,模拟器屏幕上会出现 My First App。

如何构建简单的用户界面

在本课中,您将学习如何创建一个 XML 格式的布局,其中包含一个文本字段和一个按钮。在下一课中,在按下此按钮时,您的应用会将文本字段的内容发送给另一个 Activity 作为响应。

Android 应用的图形界面使用View 对象ViewGroup 对象层次结构而构建。View对象通常为按钮或文本字段之类的UI 小部件。而ViewGroup对象则为不可见的视图容器,它们定义子视图的布局,比如是网格布局还是垂直列表布局。

Android 提供对应于 View 和 ViewGroup 子类的 XML 词汇,以便您使用 UI 元素层次结构以 XML 格式定义UI。

布局是 ViewGroup 的子类。在本练习中,您将学习创建LinearLayout。

替代布局
以 XML 格式(而不是运行时代码的方式)声明 UI 布局有若干用处,但其中最重要的用处便是,您可以创建不同的布局来适应不同的屏幕尺寸。例如,您可以创建两个版本的布局,并指示系统在“小”屏幕上使用哪个版本,在“大”屏幕上使用哪个版本。如需了解详细信息,请参阅支持不同设备课程。
在这里插入图片描述
图 1. ViewGroup 对象如何在布局中形成分支并容纳其他 View 对象的图解。

创建线性布局
1.在 Android Studio 的 Project 窗口中,打开 app > res >layout > activity_main.xml。
此 XML 文件定义 Activity 的布局。它包含默认的“Hello World”文本视图。
2.在布局编辑器中,当您打开一个布局文件时,首先显示的是设计编辑器。在本课中,您将直接使用XML,因此请点击窗口底部的Text 标签以切换到文本编辑器。
3.删除所有内容并插入以下 XML:

<?xml version="1.0" encoding="utf-8"?>
<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>

4、LinearLayout 是一个视图组(ViewGroup 的子类),它会按照android:orientation 属性的指定,将子视图设置为垂直或水平方向布局。LinearLayout 的每个子视图都会按照它们各自在 XML 中的出现顺序显示在屏幕上。

其他两个属性 android:layout_width 和 android:layout_height 则是所有视图的必备属性,用于指定它们的尺寸。

LinearLayout 是布局中的根视图,因此应将宽度和高度设置为"match_parent",从而填满可供应用使用的整个屏幕区域。该值表示视图应扩大其宽度或高度,以匹配父视图的宽度或高度。
如需了解有关布局属性的详细信息,请参阅布局指南。

添加文本字段
在 activity_main.xml 文件的 元素内,添加以下 元素:

<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">
    <EditText android:id="@+id/edit_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" /></LinearLayout>

无需担心出现@string/edit_message 错误;您很快就会修复该错误。

下面说明了您添加的 中的属性:
android:id
这会为视图赋予唯一的标识符,您可以使用该标识符从应用代码中引用对象,例如读取和操作对象(下一课中将有介绍)。
从 XML 引用任何资源对象时,都需要使用 @ 符号。请在该符号后依次输入资源类型(本例中为 id)、斜杠和资源名称(edit_message)。

资源对象
资源对象是一个唯一的整型名称,它与应用资源(如位图、布局文件或字符串)相关联。

每个资源在您项目的R.java 文件中都定义有相应的资源对象。您可以使用R 类中的对象名称来引用您的资源,例如当您需要为android:hint属性指定字符串值时,就可以这样做。您也可以使用 android:id属性

创建任意与视图相关联的资源 ID,从而可以从其他代码中引用该视图。

SDK 工具会在您每次编译应用时生成 R.java 文件。切勿手动修改该文件。

如需了解详细信息,请阅读提供资源指南。

只有在第一次定义资源 ID 时,才需要在资源类型之前加一个加号 (+)。当您编译应用时,SDK工具会使用 ID 名称在项目的R.java 文件中新建一个引用 EditText 元素的资源 ID。一旦以此方式声明资源 ID,其他对该 ID 的引用皆无需使用加号。只有在指定新资源 ID 时才必须使用加号,对于字符串或布局等具体资源则不必如此。如需了解有关资源对象的详细信息,请参阅边栏。

android:layout_width 和 android:layout_height"wrap_content" 值并不规定宽度和高度的具体大小,而是指定根据需要缩放视图,使其适合视图的内容。如果您要改用 “match_parent”,则 EditText元素将填满屏幕,因为它会匹配父 LinearLayout的大小。如需了解详细信息,请参阅布局指南。

android:hint
这是文本字段为空时显示的默认字符串。"@string/edit_message"并非使用硬编码字符串作为其值,而是引用另一个文件中定义的一个字符串资源。由于它引用的是一个具体资源(而不仅仅是标识符),因此不需要加号。不过,由于您尚未定义字符串资源,所以最初会出现编译错误。在下一节中,您可以通过定义字符串来修正该错误。

**注:**此字符串资源与元素 IDedit_message 同名。不过,对资源的引用始终都按资源类型(如id 或string)确定其作用域,因此使用相同的名称不会引起冲突。

添加字符串资源
默认情况下,您的 Android 项目在res > values > strings.xml 位置包含一个字符串资源文件。您需要在此处添加两个新字符串。
1.从 Project 窗口中,打开 res > values > strings.xml。
2.添加两个字符串,使您的文件如下所示:

<?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></resources>

3.对于用户界面中的文本,务必将每个字符串都指定为资源。字符串资源允许您在单一位置管理所有 UI 文本,从而简化文本的查找和更新。此外,将字符串外部化还可让您为每个字符串资源提供替代定义,从而将您的应用本地化为不同的语言。

如需了解有关使用字符串资源将应用本地化为其他语言的详细信息,请参阅支持不同设备课程。

添加按钮
返回到 activity_main.xml 文件并在 后添加一个按钮。您的文件应如下所示:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
        <EditText android:id="@+id/edit_message"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:hint="@string/edit_message" />
        <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/button_send" /></LinearLayout>

注:此按钮不需要android:id属性,因为不需要从 Activity 代码中引用它。
如图 2 所示,该布局当前设计为根据内容大小调整 EditText 和 Button 小部件的尺寸。

图 2. EditText 小组件和 Button 小部件的宽度均设置为"wrap_content"。

这对按钮很适合,但不太适合文本字段,因为用户键入的内容可能更长。最好让文本字段填满未使用的屏幕宽度。您可以在LinearLayout内通过 weight 属性来实现此目的,该属性可使android:layout_weight 属性来指定。

Weight 值是一个数字,用于指定每个视图与其他同级视图在剩余空间中的占比。这有点像饮料配方中各种成分的比例:“2份苏打、1 份糖浆”是指饮料中三分之二是苏打。例如,如果您将一个视图的 weight 值指定为 2,将另一个视图的 weight 值指定为 1,总和是 3,那么第一个视图将填满剩余空间的 2/3,而第二个视图则填满其余部分。如果您添加了第三个视图,将其 weight 值指定为 1,那么现在第一个视图(weight 值为 2)将获得 1/2 的剩余空间,其余两个视图则各占 1/4。

所有视图的默认 weight 值都为 0,所以如果您仅将一个视图的 weight 值指定为大于 0,那么等到其他所有视图都获得所需空间后,该视图便会填满所有剩余空间。

使输入框填满屏幕宽度
在 activity_main.xml 中,修改,使这些属性如下所示:

<EditText android:id="@+id/edit_message"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />

将宽度设置为零 (0dp) 可提高布局性能,这是因为如果将宽度设置为"wrap_content",则会要求系统计算宽度,而该计算最终毫无意义,因为weight值还需要计算另一个宽度,才能填满剩余空间。

图 3. EditText 小部件获得了布局的所有 weight,因此它填满了 LinearLayout 中的剩余空间。
完整的 activity_main.xml 布局文件现在看上去应该像下面这样:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:orientation="horizontal"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
    <EditText android:id="@+id/edit_message"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" /></LinearLayout>

运行您的应用
要查看应用目前在设备或模拟器上的外观,请点击工具栏中的Run 。

如何启动另一个Activity

响应 Send 按钮
1.在文件 res > layout > activity_main.xml 中,将android:onClick属性添加到 元素,如下所示:

2.每次用户点击按钮时,此属性均会提示系统调用 Activity 中的 sendMessage()方法。
3.在文件 java > com.example.myfirstapp > MainActivity.java 中,添加sendMessage() 方法存根,如下所示:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user clicks the Send button */
    public void sendMessage(View view) {
        // Do something in response to button
    }}

4.要让系统将此方法与为 android:onClick指定的方法名称匹配,签名必须与所示内容完全相同。具体而言,该方法必须:
是公共方法
具有空返回值
以 View 作为唯一参数(这将是之前点击的 View)
接下来,您需要填写此方法以读取文本字段的内容,并将该文本传递给另一个 Activity。

构建一个 Intent
Intent是指在相互独立的组件(如两个 Activity)之间提供运行时绑定功能的对象。Intent表示一个应用“执行某项操作的 Intent”。 您可以将 Intent用于各种任务,但在本课程中,Intent 用于启动另一个 Activity。

在 MainActivity.java 中,将如下所示代码添加到sendMessage():
public class MainActivity extends AppCompatActivity {
public final static String EXTRA_MESSAGE = “com.example.myfirstapp.MESSAGE”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

/** 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);
}}

Android Studio 将显示无法解析符号错误,这是因为此代码引用了未导入的类。通过按 Alt + Enter(在 Mac 上,则按 Option + Return),您可使用Android Studio 的“导入类”功能来解决其中一些问题。您的导入应按如下所示结束:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
仍出现 DisplayMessageActivity 错误,但没关系,您将在下一部分中修复该错误。
sendMessage()中会执行许多操作,因此我们来解释下具体会执行哪些操作。

Intent 构造函数采用两个参数:
Context 是第一个参数(之所以使用 this,是因为 Activity 类是Context 的子类)
应用组件的Class,系统应将Intent(在本例中,为应启动的 Activity)传递至该类。
注:引用DisplayMessageActivity 会在 Android Studio中引发错误,因为该类尚不存在。可以暂时忽略该错误,因为您很快要创建该类。

putExtra()方法将 EditText 的值添加到 Intent。Intent能够以名为 extra 的键值对形式携带数据类型。您的键是一个公共常量EXTRA_MESSAGE,因为下一个 Activity将使用该键来检索文本值。为 Intent extra定义键时最好使用应用的软件包名称作为前缀。这可以确保在您的应用与其他应用交互过程中这些键始终保持唯一。
startActivity()方法将启动 Intent 指定的 DisplayMessageActivity实例。现在,您需要创建类。

创建第二个 Activity
1.在 Project 窗口中,右键点击 app 文件夹并选择New > Activity > Empty Activity。
2.在 Configure Activity 窗口中,为 Activity Name 输入“DisplayMessageActivity”,然后点击Finish
Android Studio 自动执行三项操作:

使用必需的 onCreate()方法的实现创建类DisplayMessageActivity.java。
创建对应的布局文件 activity_display_message.xml
在 AndroidManifest.xml 中添加必需的元素。

如果运行应用并在第一个 Activity 上点击“Send”按钮,则将启动第二个Activity,但它为空。这是因为第二个Activity 使用模板提供的默认空布局。

显示消息

现在,您将修改第二个 Activity,以显示第一个 Activity传递的消息。
1.在 DisplayMessageActivity.java 中,向onCreate() 方法添加下列代码:
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);

ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
layout.addView(textView);}

2…按 Alt + Enter(在 Mac 上,则按 Option + Return)导入缺少的类。 您的导入应按如下所示方式结束:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;

3.此处会执行大量操作,因此我们接着解释:
1.调用 getIntent()采集启动 Activity 的 intent。无论用户如何导航到目的地,每个 Activity 都由一个Intent 调用。 调用getStringExtra()将检索第一个 Activity 中的数据。

2.您可以编程方式创建TextView 并设置其大小和消息。

3.您可将 TextView 添加到R.id.activity_display_message 标识的布局。您可将布局投射到ViewGroup,因为它是所有布局的超类且包含addView()方法。

注:早期版本的 Android Studio生成的 XML 布局可能不包括 android:id属性。如果布局没有 android:id属性,则调用 findViewById() 将失败。如果出现这种情况,请打开activity_display_message.xml 并将属性android:id="@+id/activity_display_message" 添加到布局元素。

您现在便可运行该应用。当应用打开后,请在文本字段键入消息,然后点击Send。第二个Activity 将替换屏幕中的第一个 Activity,并显示您在第一个 Activity 中输入的消息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值