您好!欢迎来到源码码网

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

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

创建 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)
推荐阅读
  • 陀螺匠OA办公系统源码 PHP + Vue 前后端分离 完整可商用
  • 陀螺匠OA办公系统源码 PHP + Vue 前后端分离 完整可商用
  • 项目介绍《陀螺匠》是一套采用Laravel9框架结合Swoole高性能框架与Vue.js前端技术栈构建的AI+低代码双引擎智能办公系统。陀螺匠深度融合了AI智能体以及低代码开发平台,系统简约,易于功能扩展,方便二次开发。旨在为企业提供一站式、数智化转型的全方位解决方案,助力企业高效运营与智能决策。源码说明源码说明:项目代码100%开源,基于AGPL-3.0,支持免费商用!技术栈:系统基于Laravel9+Swoole+Vue.
  • 软件教程
  • 来源:CRMEB
  • 编辑:CRMEB
  • 时间:2026-03-27 15:33
  • 阅读:395
  • open claw最近很火,如何理性看待?
  • open claw最近很火,如何理性看待?
  • openclaw是2026年初科技圈最火爆的现象级话题。它不仅仅是又一个AI产品,更被百川智能的王小川誉为与ChatGPT诞生同等重要的里程碑——标志着AI从”只会说”的对话者,进化到了”能够做”的行动者。对于这股全民”养虾”热潮,我的观察是:它代表了一次人机关系的革命性跃迁,但同时也是一场充满风险与泡沫的狂欢,其真正的价值需要在喧嚣褪去、安全与成本的挑战被克服后才能显现。下
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-03-17 11:06
  • 阅读:435
  • 原生小程序和封装的小程序有什么区别
  • 原生小程序和封装的小程序有什么区别
  • 原生小程序和封装的小程序是两种不同的开发模式,主要区别在于开发方式、性能表现、代码维护以及跨平台能力。为了让你更清晰地理解,我们可以把“原生”比作用钢筋水泥直接盖楼,而“封装”则是用预制板或套件来组装楼。以下是详细的对比分析:1.定义与本质原生小程序:定义: 直接使用微信官方提供的开发工具、语法和API进行开发。语言: 使用微信自己定义的一套技术栈(WXML(微信标记语言)做结构、WXSS(微信样式表)做样式、JS
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-03-06 11:54
  • 阅读:669
  • 基于NetCore(Razor Page)开发的Cms建站系统MIT协议
  • 基于NetCore(Razor Page)开发的Cms建站系统MIT协议
  • FytSoaCms一款基于NetCore2.2/3.1(RazorPage)功能强大的Cms建站系统,支持前后端分离。简介:模块化:全新的架构和模块化的开发机制,便于灵活扩展和二次开发。模型/栏目/分类信息体系:通过栏目和模型绑定,以及不同的模型类型,不同栏目可以实现差异化的功能,轻松实现诸如资讯、下载、讨论和图片等功能。通过分类信息和栏目绑定,可以自动建立索引表,轻松实现复杂的信息检索。FytSoa是一套基于NetCore+SqlS
  • 开发工具
  • 来源:gitee
  • 编辑:源码码网
  • 时间:2026-01-24 22:21
  • 阅读:596
  • 基于JAVA开发的企业级平台微信公众号管理系统SmartWx
  • 基于JAVA开发的企业级平台微信公众号管理系统SmartWx
  • SmartWx微信公众号管理系统是一个完整的微信公众号web操作版,直接编译即可运行。让用户不再用关心微信的底层接口,直接使用页面进行操作,简单方便。包括服务器绑定、文本管理、图文管理、菜单管理、粉丝管理、群发消息等。技术框架开发语言:JAVA数据库:MYSQLJAVA开发框架:SpringMVC+Spring+Mybatis缓存框架:j2cache前端开发框架:Layui+JQuery+html前台模板引擎:art-templat
  • 源码教程
  • 来源:gitee
  • 编辑:源码码网
  • 时间:2026-01-24 21:53
  • 阅读:602
联系客服
源码代售 源码咨询 技术开发 联系客服
029-84538663
手机版

扫一扫进手机版
返回顶部