• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

Java后端学Android(1)-Hello World

互联网 diligentman 2周前 (04-30) 12次浏览

本系列为《Android 第一行代码第三版》读书笔记

一、Android的版本与组件

Java后端学Android(1)-Hello World

由上面可见,Android的主要市场是在Android5.0版本以上。

Android的四大组件:

  • Activity:是Android应用程序的门面,在应用中可见的东西都是放在Activity里的
  • Service:在后台默默运行的组件
  • BroadcastReceiver:允许应用接收各处的广播消息,比如电话、短信等
  • ContentProvider:为应用程序之间共享数据提供帮助

二、Hello World

需要的基本条件:jdk、sdk、Android Studio

启动AS一路创建项目即可,选取创建一个空项目,注意选取语言为Kotlin,因为Google简易采用Kotlin来进行开发,同时指定Minimum SDK的版本为21,查找上面的版本表可以发现版本为21的为Android 5版本

创建一个空项目之后,AS已经默认生成了一个Hello World的Demo,只需要将程序进行打包运行即可,这里选择外部模拟器MuMu模拟器进行模拟运行。下载安装好MuMu模拟器,进入到如下目录

Java后端学Android(1)-Hello World

使用命令行命令:

adb_server.exe connect 127.0.0.1:7555

那么这就将AS与MuMu模拟器连接起来了,在AS中点击运行键即可连接运行!

Java后端学Android(1)-Hello World

那么程序运行成功!如上是我修改了Hello world为Hello,Android!之后的界面

三、项目目录分析

Java后端学Android(1)-Hello World

熟悉过Java Web开发便可知,项目核心部分在app部分,也是需要我们编写代码的部分,因为此项目是采用gradle进行搭建的,所以有一些编译型的文件,这里不过多介绍,值介绍一些非常核心的目录

Java后端学Android(1)-Hello World

  • mipmap系:用来放置图标的,有多个版本的文件夹,是为了适应不同的设备,介绍为了兼容性
  • values系:存放字符串、样式、颜色等配置的
  • layout系:存放布局文件的
  • drawable系:存放图片的
  • AndroidManifest.xml:整个项目的配置文件,在程序中定义的组件都需要在这个文件中注册

四、项目运行流程

分析一个Android项目,首先是从AndroidManifest.xml开发的,因为这是整个项目的配置文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hellowrold">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.HelloWrold">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

activity表示对MainActivity进行注册,而.表示省略包名,因为package中已经定义,其中intent-filter非常重要,看名字为一个拦截器,而其中定义了整个项目的主Activity,也就是项目的入口

接着分析MainActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

虽然语言是kotlin,但是不影响阅读,首先MainActivity是继承AppCompatActivity的,AppCompatActivity是AndroidX中提供的一种向下兼容的Activity,使得Activity在不同版本中的功能保持一致。

Activity类时Android系统提供的一个基类,项目中所有定义的Activity都必须继承它或者它的子类才具有一个Activity的特性,然后onCreate是一个其中的方法,相当于生命周期的方法

接着方法里面调用了setContentView方法,Android讲究逻辑与视图分离,所以在Activity是不写界面的,界面是放在局部文件里面的。可以看到setContentView中引入了一个activity_main布局

那么切换到布局文件夹layout,果然有一个activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello ,Android!"	//这就是显示的字段
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

五、Android的日志工具Log

  • Log.v() 。用于打印那些最为琐碎的、意义最小的日志信息。对应级别verbose,是Android日志里面级别最低的一种。
  • Log.d() 。用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比verbose高一级。
  • Log.i() 。用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮你分析用户行为数据。对应级别info,比debug高一级。
  • Log.w() 。用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别warn,比info高一级。
  • Log.e() 。用于打印程序中的错误信息,比如程序进入到了catch语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别error,比warn高一级。
    出现警告的地方。对应级别warn,比info高一级。
  • Log.e() 。用于打印程序中的错误信息,比如程序进入到了catch语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别error,比warn高一级。

程序员灯塔
转载请注明原文链接:Java后端学Android(1)-Hello World
喜欢 (0)