Android开发Java版 —— 基础知识

这篇具有很好参考价值的文章主要介绍了Android开发Java版 —— 基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

📝 “第一行代码” 第二版 (java)读书笔记
源码下载地址:github仓库地址。

1.1 Android 基础

Android大致可以分为四层架构

  • Linux 内核层
    Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动
  • 系统运行库层
    这一层通过一些C/C++库来为Android系统提供了主要的特性支持。
  • 应用框架层
    这一层主要提供了构建应用程序时可能用到的各种API
  • 应用层
    所有安装在手机上的应用程序都是属于这一层的

Android系统四大组件

  • 活动(Activity)
  • 服务(Service)
  • 广播接收器(BroadcastReceiver)
  • 内容提供器(ContentProvider)

整体项目结构 分析:
Android开发Java版 —— 基础知识

  • .gradle.idea
    这两个目录下放置的都是Android Studio自动生成的一些文件。
  • app
    项目中的代码、资源等内容几乎都是放置在这个目录下的.
  • gradle
    这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。Android Studio默认没有启用gradle wrapper的方式,如果需要打开,可以点击Android Studio导航栏→File→Settings→Build, Execution,Deployment→Gradle,进行配置更改
  • .gitignore
    这个文件是用来将指定的目录或文件排除在版本控制之外的
  • build.gradle
    这是项目全局的gradle构建脚本
  • gradle.properties
    这个文件是全局的gradle配置文件
  • gradlew和gradlew.bat
    这两个文件是用来在命令行界面中执行gradle命令的
  • local.properties
    这个文件用于指定本机中的Android SDK路径
  • settings.gradle
    这个文件用于指定项目中所有引入的模块。

app 项目结构分析:
Android开发Java版 —— 基础知识

  • libs
    如果你的项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下
  • androidTest
    此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试
  • java
    java目录是放置我们所有Java代码的地方.
  • res
    在项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下。图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下。
  • AndroidManifest.xml
    这是你整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。
  • test
    此处是用来编写Unit Test测试用例的
  • build.gradle
    这是app模块的gradle构建脚本
  • proguard-rules.pro
    这个文件用于指定项目代码的混淆规则

资源文件分析
Android开发Java版 —— 基础知识

  • 以drawable开头的文件夹都是用来放图片的
  • 以mipmap开头的文件夹都是用来放应用图标的(mipmap开头的文件夹,其实主要是为了让程序能够更好地兼容各种设备)
  • 以values开头的文件夹都是用来放字符串、样式、颜色等配置-
  • layout文件夹是用来放布局文件的

资源文件的引用方式
res/values/strings.xml

<resources>
    <string name="app_name">test</string>
</resources>

❑ 在代码中通过R.string.app_name可以获得该字符串的引用。
❑ 在XML中通过@string/app_name可以获得该字符串的引用

全局build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.0"
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

jcenter是一个代码托管仓库,很多Android开源项目都会选择将代码托管到jcenter上,声明了这行配置之后,我们就可以在项目中轻松引用任何jcenter上的开源项目了.
dependencies闭包中使用classpath声明了一个Gradle插件

app目录下的build.gradle文件文章来源地址https://www.toymoban.com/news/detail-456392.html

plugins {
    id 'com.android.application'
}

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.example.test"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
  • plugin 闭包应用了一个插件,一般有两种值可选:com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块。
  • Android 闭包配置项目构建的各种属性。compileSdkVersion用于指定项目的编译版本,buildToolsVersion用于指定项目构建工具的版本
  • dependencies闭包。它可以指定当前项目所有的依赖关系。

1.2 运行原理

  • Android-Manifest.xml文件
    对MainActivity这个活动进行注册,表示MainActivity是这个项目的主活动,在手机上点击应用图标,首先启动的就是这个活动。
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  • MainActivity.java
    WorldActivity是继承自AppCompatActivity的,这是一种向下兼容的Activity。
    Activity是Android系统提供的一个活动基类,我们项目中所有的活动都必须继承它或者它的子类才能拥有活动的特性(AppCompatActivity是Activity的子类)
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
  • 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 World!"
        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开发Java版 —— 基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web开发学习笔记(8.java web后端开发基础知识)

    1.使用spring开发的优势,spring发展到今天已经形成了一种开发生态圈,提供了若干个子项目,每个项目用于完成特定的功能。使用spring全家桶,可以做到很多事情,可以很方便的套用很多的组件。 2.pom构成 指定父工程 指定web构件 指定springboot打包控件 3.启动类的写法 4.contro

    2024年01月18日
    浏览(65)
  • Android Framework基础知识

    哈喽大家好,我是Zzz. 给大家分享一篇Framework入门的基础知识文章,内容纯纯原创。 一、Application,Activity和进程的关系?     Application、Activity只是进程虚拟机运行的一个类对象,只是属于系统的一个组件和进程没有直接联系。Android支持为每个组件可以单独进程方式运行。

    2024年03月24日
    浏览(39)
  • [Android]JNI的基础知识

    目录 1.什么是JNI   2.配置JNI开发环境NDK 3.创建Native C++类型的项目 4. 了解CMakeLists.txt 文件 5.了解native-lib.cpp 文件 6.在 Android 的 MainActivity 中调用 native-lib.cpp 中实现的本地方法 1.什么是JNI         JNI(Java Native Interface)是一种允许Java代码与本地代码(如C或C++)进行交互的技

    2024年02月11日
    浏览(48)
  • Android ContentProvider基础知识学习笔记

    1、动态申请权限 2、读取手机联系人 3、创建自己的ContentProvider (1) onCreate()。初始化ContentProvider的时候调用。通常会在这里完成对数据库的创建和升级等操作,返回true表示ContentProvider初始化成功,返回false则表示失败。 (2) query()。从ContentProvider中查询数据。uri参数用于确定查

    2024年04月10日
    浏览(44)
  • Android中集成FFmpeg及NDK基础知识

    在日常App开发中,难免有些功能是需要借助NDK来完成的,比如现在常见的音视频处理等,今天就以ffmpeg入手,来学习下Android NDK开发的套路. 很多人并不清除JNI和NDK的概念,经常搞混这两样东西,先来看看它们各自的定义吧. 很多人并不清除JNI和NDK的概念,经常搞混这两样东西,先来看看

    2024年01月17日
    浏览(39)
  • Android 基础知识4-3.2 EditText(输入框)详解

    一、EditText(输入框)介绍         EditText在开发中也是经常使用的控件,比如,要实现一个登录页面,需要用户输入账号、密码等信息,然后我们或得用户输入的内容,把它交给服务器来判断。因此,这一节我们需要学习如何在布局文件中实现编辑框,然后获得编辑框的

    2023年04月24日
    浏览(43)
  • Android 基础知识4-3.7 ProgressBar(进度条)详解

    一、简介         ProgressBar(进度条)是UI界面中一种非常实用的组件,通常用于向用户像是某个耗时操作完成的百分比。进度条可动态地显示进度,因此避免长时间地执行某个操作时,让用户感觉程序失去了响应,从而更好地提高用户界面的友好性。也是为数不多的直接

    2024年02月16日
    浏览(40)
  • Android 基础知识4-2.8 TableLayout(表格布局)详解

    一、TableLayout的概述         表格布局是以行数和列数来确定位置进行排列。就像一间教室,确定好行数与列数就能让同学有序入座。 注意 :我们需要先添加 TableRow 容器,每添加一个就会多一行,然后再往 TableRow 容器中添加其它组件。 二、TableLayout的属性     2.1 、Ta

    2023年04月25日
    浏览(41)
  • Android 基础知识4-3.8 SeekBar(拖动条)详解

    一、简介          拖动条类似进度条,不同的是用户可以控制,比如,应用程序中用户可以对音效进行控制,这就可以使用拖动条来实现。由于拖动条可以被用户控制,所以需要对其进行事件监听,这就需要实现SeekBar.onSeekBarChangeListener接口。在SeekBar中共需要监听3个事件,

    2024年02月08日
    浏览(66)
  • Android 基础知识4-2.10 GridLayout(网格布局)详解

    一、GridLayout(网格布局)概述         GridLayout 布局是 Android 4.0 以后引入的新布局,和 TableLayout(表格布局) 有点类似,不过它功能更多,也更加好用,最大的特点是放置的组件自动占据网格的整个区域,每个组件的 大小相同 , 不能改变组件大小 ,只能改变组件之间的水平

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包