您好!欢迎来到源码码网

通过Android Studio创建第一个Android应用

  • 源码教程
  • 来源:源码码网
  • 编辑:admin
  • 时间:2021-01-07 15:04
  • 阅读:544

创建 HelloWorld 工程

启动 Android Studio,依次选择 File --> New --> New Project,将会出现如图 1 所示的界面。在 Application name 中输入项目名称“HelloWorld”,在 Company Domain 中输入“android.introduction”,系统会自动生成包名为“introduction.Android.helloWorld”。

Project Location 指定工程文件存放的位置。单击“Next”按钮,出现如图 2 所示的界面,用于选择应用运行的系统版本。选择运行平台为“Android 7.0”。

再次单击“Next”按钮,进入创建 Activity 界面,如图 3 所示。该界面可以添加多种 Activity 的模板,本次添加一个基本的 Activity 即可,选择“Basic Activity”。

单击“Next”按钮,进入如图 4 所示的界面,指定 Activity 的相关信息,例如 Activity 的名字、布局文件的名字、菜单资源的名字以及 Activity 上显示的标题。此处使用默认设置,不做更改。

设置完成后,单击“Finish”按钮完成工程的创建。

Android Studio 会根据刚才指定的相关信息生成相关模板代码,用户无须编写任何一行代码,该工程就可以运行。按 Shift+F10 快捷键,选择要运行的 AVD,可查看运行效果,如图 5 所示。


相关代码

双击 HelloWorld 工程中的 MainActivity.java,该文件中已有程序代码如下:

  1. package introduction.android.helloworld;


  2. import android.os.Bundle;

  3. import android.support.design.widget.FloatingActionButton;

  4. import android.support.design.widget.Snackbar;

  5. import android.support.v7.app.AppCompatActivity;

  6. import android.support.v7.widget.Toolbar;

  7. import android.view.View;

  8. import android.view.Menu;

  9. import android.view.MenuItem;


  10. public class MainActivity extends AppCompatActivity {


  11.     @Override

  12.     protected void onCreate(Bundle savedInstanceState) {

  13.         super.onCreate(savedInstanceState);

  14.         setContentView(R.layout.activity_main);

  15.         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

  16.         setSupportActionBar(toolbar);


  17.         FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

  18.         fab.setOnClickListener(new View.OnClickListener() {

  19.             @Override

  20.             public void onClick(View view) {

  21.                 Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)

  22.                         .setAction("Action", null).show();


  23.             }

  24.         });

  25.     }


  26.     @Override

  27.     public boolean onCreateOptionsMenu(Menu menu) {

  28.         // Inflate the menu; this adds items to the action bar if it is present.

  29.         getMenuInflater().inflate(R.menu.menu_main, menu);

  30.         return true;

  31.     }


  32.     @Override

  33.     public boolean onOptionsItemSelected(MenuItem item) {

  34.         // Handle action bar item clicks here. The action bar will

  35.         // automatically handle clicks on the Home/Up button, so long

  36.         // as you specify a parent activity in AndroidManifest.xml.

  37.         int id = item.getItemId();


  38.         //noinspection SimplifiableIfStatement

  39.         if (id == R.id.action_settings) {

  40.             return true;

  41.         }


  42.         return super.onOptionsItemSelected(item);

  43.     }

  44. }

MainActivity.java 中的代码比较简单,表明类 MainActivity 继承了 AppCompatActivity 类,并重写了 onCreate() 方法。

AppCompatActivity 类是 Android Studio 中默认的构建自定义 Activity 的模板类,与 Eclipse+ADT 环境中默认使用的 Activity 相比,AppCompatActivity 提供了对工具栏 ToolBar 的支持。相关代码如下:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

在 MainActivity 的 onCreate() 方法体中调用了父类的 onCreate() 方法,然后调用 setContentView() 方法显示视图界面。Android 工程中使用 XML 文件来设计视图界面,R.layout.activity_main 是 Android 工程中默认的布局文件的名字,即 activity_main.xml。

Activity_main.xml 的内容如下:

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <android.support.design.widget.CoordinatorLayout

  3. xmlns:android="http://schemas.android.com/apk/res/android"

  4. xmlns:app="http://schemas.android.com/apk/res-auto"

  5. xmlns:tools="http://schemas.android.com/tools"

  6. android:layout_width="match_parent"

  7. android:layout_height="match_parent"

  8. tools:context="introduction.android.helloworld.MainActivity">


  9. <android.support.design.widget.AppBarLayout

  10. android:layout_width="match_parent"

  11. android:layout_height="wrap_content"

  12. android:theme="@style/AppTheme.AppBarOverlay">


  13. <android.support.v7.widget.Toolbar

  14. android:id="@+id/toolbar"

  15. android:layout_width="match_parent"

  16. android:layout_height="?attr/actionBarSize"

  17. android:background="?attr/colorPrimary"

  18. app:popupTheme="@style/AppTheme.PopupOverlay" />


  19. </android.support.design.widget.AppBarLayout>


  20. <include layout="@layout/content_main" />


  21. <android.support.design.widget.FloatingActionButton

  22. android:id="@+id/fab"

  23. android:layout_width="wrap_content"

  24. android:layout_height="wrap_content"

  25. android:layout_gravity="bottom|end"

  26. android:layout_margin="@dimen/fab_margin"

  27. app:srcCompat="@android:drawable/ic_dialog_email" />


  28. </android.support.design.widget.CoordinatorLayout>

CoordinatorLayout 布局是 support v7 系统新增的布局,具有便于调度协调子布局的特点。该布局可看作是增强版的 FrameLayout,通常与 ToolBar 和 FloatingActionButton 合用。 ToolBar 是图 5 中显示 HelloWorld 的蓝色工具栏,具有承载系统菜单的功能。布局相关代码如下:

  1. <android.support.design.widget.AppBarLayout

  2. android:layout_width="match_parent"

  3. android:layout_height="wrap_content"

  4. android:theme="@style/AppTheme.AppBarOverlay">


  5. <android.support.v7.widget.Toolbar

  6. android:id="@+id/toolbar"

  7. android:layout_width="match_parent"

  8. android:layout_height="?attr/actionBarSize"

  9. android:background="?attr/colorPrimary"

  10. app:popupTheme="@style/AppTheme.PopupOverlay" />


  11. </android.support.design.widget.AppBarLayout>

FloatingActionButton 是图 5 中右下侧的邮箱图标的按钮,布局相关代码如下:


  1. <android.support.design.widget.FloatingActionButton

  2. android:id="@+id/fab"

  3. android:layout_width="wrap_content"

  4. android:layout_height="wrap_content"

  5. android:layout_gravity="bottom|end"

  6. android:layout_margin="@dimen/fab_margin"

  7. app:srcCompat="@android:drawable/ic_dialog_email" />

在 MainActivity.java 中,FloatingActionButton 的事件处理代码为:


  1. FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

  2. fab.setOnClickListener(new View.OnClickListener() {

  3. @Override

  4. public void onClick(View view) {

  5. Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)

  6. .setAction("Action", null).show();

  7. }

  8. });

该代码实现的功能是,当点击按钮时,显示 "Replace with your own action"。

<include layout ="@layout/content_main" />

这行代码将 content_main.xml 的布局嵌入 activity_main 布局中。content_main.xml 的代码为:

  1. <?xml version="1.0" encoding="utf-8"?>


  2. <android.support.constraint.ConstraintLayout

  3. xmlns:android="http://schemas.android.com/apk/res/android"

  4. xmlns:app="http://schemas.android.com/apk/res-auto"

  5. xmlns:tools="http://schemas.android.com/tools"

  6. android:layout_width="match_parent"

  7. android:layout_height="match_parent"

  8. app:layout_behavior="A@string/appbar_scrolling_view_behavior"

  9. tools:context="introduction.android.helloworld.MainActivity"

  10. tools:showIn="@layout/activity_main">


  11. <TextView

  12. android:layout_width="wrap_content"

  13. android:layout_height="wrap_content"

  14. android:text="Hello World!"

  15. app:layout_constraintBottom_toBottomOf="parent"

  16. app:layout_constraintLeft_toLeftOf="parent"

  17. app:layout_constraintRight_toRightOf="parent"

  18. app:layout_constraintTop_toTopOf="parent" />


  19. </android.support.constraint.ConstraintLayout>

该文件中的代码表示当前的布局文件使用 LinearLayout 布局,该布局中仅有一个 TextView 组件用于显示信息,显示的内容为 "Hello World!"。

Android Studio 鼓励用户将所有组件放置到 content_main.xml 中,而对 activity_main 中的代码尽量不做修改。


为了简化代码,降低阅读难度,在本教程的范例程序代码中,除非需要用到工具栏和悬浮按钮,其余都会将 .java 文件和 .xml 文件中的 ToolBar 和 FloatingActionButton 的相关代码移除掉,并且直接使用单个布局文件搭建界面,避免使用 include 将一个布局嵌入另一个布局中。

工程文件结构解析

没有书写一句程序代码,一个 Android 应用便创建成功了,但是这只是一个简单的 Android 应用,要创建更多的 Android 应用,还要详细地了解 Android 应用程序结构。 Android Studio 的 Project 工程文件结构如图 6 所示。


主要目录和作用:

名称作用
.gradle目录Gradle在构建工程的过程中生成的文件
.idea目录Android Studio生成的工程配置文件,类似Eclipse的project.properties
build目录相当于Eclipse工程的bin目录,用于存放生成的文件,包括APK
gradle目录用于存放Gradle构建工具系统的JAR和Wrapper等,以及配置文件
External Libraries工程依赖的LIB文件,如SDK等
app目录Android Studio创建工程中的一个Module,是程序开发者的主要工作目录

app目录下的结构如图 7 所示:

下面分别介绍各个目录或文件的作用:


目录/文件作用
src包含应用程序的所有源代码。在 src 用的 Activity,MainActivity.java 就是在创建项目的时候创建的一个 Activity,在 Activity 中可以编写控制 View 的逻辑。
buildsource 包中有一个 "R.java" 文件。R 类中包含 4 个静态内部类:attr、drawable、layout 和 string,分别代表属性、图片资源、布局文件及字符串的声明。R.java 文件是资源索引类,由 Eclipse 自动生成,开发者不用去修改和维护里面的内容,但是这个文件却非常有用,它和 res 文件夹紧密相连,对 res 下资源的操作都会导致 R.java 文件的重新编译。R.java 中定义的常量类也可以间接帮助 Activity 完成对资源的应用。Android 这样设计的好处是使得复杂的资源通过专门的类来管理而让程序中的代码变得整齐、强壮,并且减少程序出错和 bug 的产生。
assets通常放置一些原始资源文件,会在 Android 打包的时候原封不动地一起打包,安装时会直接解压到对应的 Android 打包的时候原封不动地一起打包,安装时会直接解压到对应的 assets 目录中。这里通常放置一些项目中用到的多媒体资源等。
res通常放置的是 Android 要用到的各种程序资源。其中,常见的子文件夹有 drawable、layout、values 等。其中,drawable 目录放置应用到的图片资源;layout 目录放置一些与 UI 相关的布局文件,都是以 XML 文件方式保存;values 目录中放置的是一些字符串、数组、颜色、样式和动画等资源,values 目录中的每一个文件都会转化成 R.java 中的一个静态类,文件中的每一个资源都会转化成 R.java 中对应静态类的静态整型常量,这样 Activity 中通过一个解析器就可以获取对应的资源。
AndroidManifest.xml是整个项目的配置资源,里面配置的内容包括当前应用程序所在的包、应用程序中的 Activity、应用程序的访问权限等。


特别声明:
1、如无特殊说明,内容均为本站原创发布,转载请注明出处;
2、部分转载文章已注明出处,转载目的为学习和交流,如有侵犯,请联系客服删除;
3、编辑非《源码码网》的文章均由用户编辑发布,不代表本站立场,如涉及侵犯,请联系删除;
全部评论(0)
推荐阅读
  • 大型后台管理系统,用户登录状态该如何保存?
  • 大型后台管理系统,用户登录状态该如何保存?
  • 大型后台管理系统的用户登录状态保存需要综合考虑安全性、用户体验和系统架构。以下是企业级的完整方案:1.多层级存储策略class AuthManager {    constructor() {        this.storage = { &n
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2025-11-06 12:16
  • 阅读:350
  • 源码交易平台的支付困局与解决方案:如何通过专业支付系统提升交易效率
  • 源码交易平台的支付困局与解决方案:如何通过专业支付系统提升交易效率
  • 在数字经济蓬勃发展的今天,源码交易市场已成为互联网创业者和开发商的重要资源池。从电商系统源码到社交应用框架,从小程序解决方案到企业级管理系统,越来越多的开发者、初创企业和传统商家通过源码交易平台快速获取技术资产,实现商业目标的加速。源码交易市场的繁荣反映了数字化转型的迫切需求——企业需要快速迭代,开发者需要快速变现,用户需要快速启动。然而,在这个高速发展的市场中,一个长期被忽视但至关重要的问题浮现出来:支付系统的效率与安全性已成为制约交
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2025-10-23 15:16
  • 阅读:298
  • Spring Boot 工程中 maven-surefire-plugin 测试执行失败及解决方法
  • Spring Boot 工程中 maven-surefire-plugin 测试执行失败及解决方法
  • 在SpringBoot工程编译时遇到maven-surefire-plugin的测试执行失败错误(Failedtoexecutegoalorg.apache.maven.plugins:maven-surefire-plugin:3.5.3:test),通常与测试环节相关。以下是常见原因及解决方法:1.测试用例执行失败• 原因:最常见的是测试用例(*Test.java)运行时抛出异常(如断言失败、空指针等),导
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2025-10-13 10:57
  • 阅读:363
  • WeMark - 微信小程序图片水印
  • WeMark - 微信小程序图片水印
  • 一个纯前端的微信小程序图片水印工具。支持文字/图片水印、单个与全屏两种模式,透明度与角度调节、单个水印位置X/Y控制,预览与对比模态、历史记录(100条)等功能。
  • 源码教程
  • 来源:源码码用户
  • 编辑:yg
  • 时间:2025-09-22 16:09
  • 阅读:287
联系客服
源码代售 源码咨询 素材咨询 联系客服
029-84538663
手机版

扫一扫进手机版
返回顶部