Android学习笔记——基础入门

简介: Android学习笔记

Gradle

安装配置

Linux下安装gradle

构建文件和创建任务

  1. 默认构建文件为 build.gradle, 构建是可使用 -b 替代 --build
gradle -b <fileName>
  1. .gradle 文件夹存放的是 Gradle 的构建信息
  2. Gradle 采用领域对象模型,每个Project 维护一个TaskContain 类的task 属性,Taskl代表需要执行的任务,允许指定依赖的任务、任务类型,可通过configure()方法配置任务,提供了doFirst()doLast() 方法来添加ActionActionClosure对象都可代表Closure对象都可以是Action
  3. Gradle构建文件创建Task的常用方法
  1. 调用 project.task()
  2. 调用 TaskContainer.crate()
  1. 无论使用哪种方式创建Task,通常都可为Task指定以下3种属性:
  1. dependsOn:指定Task所依赖的其它Task
  2. type:指定该Task的类型
  3. 通过传入的代码块参数配置
  1. Gradle构建过程
  1. 配置阶段
  2. 按依赖关系执行指定Task
  1. Gradle编译过程
//应用名为java的插件,主要是为了引入JavaCompile、JavaExec两个任务
apply plugin: 'java'
task compile(type:javaCompile){
    source = filetree('src/main/java')
    classpath = sourceSets.main.compileClassPath
    destinationDir = file('build/classes/main')
    options.fork = true
    options.incremental = true
}
//指定任务类型为JavaExec
task run(type:JavaExec,dependsOn:'compile'){
    classPath = sourceSets.main.runtimeClassPath
    //指定主类为lee.HelloWorld
    main = 'lee.HelloWorld'
}

编译运行

gradle run

Gradle的属性定义

1. 为属性指定属性值

//为Project内置属性指定属性值
version = 1.0.0
task showProps{
  description = 'task'
}

Project 常用的属性

  1. name:项目名称
  2. path:项目绝对路径
  3. description:项目描述路径
  4. buildDir:项目的构建结果的存放路径
  5. version: 项目版本号

2. 通过 ext 添加属性

//使用ext方法传入代码来设置属性
ext{
  prop1 = 'prop1'
  prop2 = 'prop2'
}
task showAddPros{
  ext{
    prop3 = 'prop3'
    prop4 = 'prop4'
  }
}

3. 通过-P选项添加属性

gradle -P prop='prop-value' <task-name>

4. 通过JVM参数添加属性

gradle -D org.gradle.project.prop= 'prop-value' <task-name>

增量式构建

Gradle通过任务的输入、输出部分是否发生改变来判断该任务是否需要重新执行,Task使用TaskInputs类型inputs属性来代表输入,使用TaskOutputs类型outPuts属性来代表输出。

task fileContentCopy{
  //定义代表source目录的文件集
  def sourceTxt = fileTree("source")
  def dest = file('dest.txt')
  //定义任务的输入和输出
  inputs.dir sourceTxt  //指定输出目录为sourceTxt
  outputs.file dest   //指定输出目录为dest
}

Gradle 插件机制

应用插件相当于引入了该插件包含的所有任务类型、任务、属性等,这样Gradle就可以执行插件种预定义的任务。

apply plugin: <plugin-name>
#查看构建文件支持的所有任务
apply tasks --all

通过resource项目添加第三方或额外的依赖源码

//配置被依赖的源代码路径
sourceSets{
  fkframework
}

Gradle自动为为每个新建的sourceSets创建相应的Task,包括compilexxxJavaprocessxxxResourcexxxClasses这三个Task

//配置compileJava任务依赖compilexxxJava任务
compileJava.dependsOn compilexxxJava
//将第三方项目字节码的存储路径添加到系统编译时、运行时的类路径中
sourceSets{
    main{
        compileClassPath = compileClassPath + files(xxx.output.classesDir)
    }
    test{
        //将xxx生成的字节码文件的存储路径添加到运行时的类路径中
        runtimeClassPath = runtimeClassPath + files(xxx.output.classDir)
    }
}

依赖管理

Gradle 配置依赖步骤:

  1. Gradle配置仓库
//定义仓库
reposities{
  //使用Maven默认的中央仓库
  mavenCentral()
  //使用远程仓库
  url "http://repo2.maven.org/maven2"
  //显示指定本地磁盘路径作为maven仓库url
  url "g:/abc"
}
  1. 为不同组配置依赖的jar
//使用configurations配置组
configrations{
    //配置名为xxx的依赖组
    xxx
}
dependencies {
    //配置依赖的jar包
    //为xxx依赖组添加了commons-logging 1.2的jar包
    xxx group: 'commons-logging',name:'commons-logging',version:'1.2'
    //简写
    xxx 'commons-logging:commons-logging:1.2'
}

ADB

常用命令:

#查看当前运行的模拟器
 abd devices
 #电脑与手机之间文件的相互复制
 abd push <file-path> <targer-path>
 #启动模拟器的shell窗口
 adb shell
 #安装、卸载APK程序
 adb install [-r] [-s] <file>
 #卸载APK程序
 adb uninstatll [-k] <file>

开发Android应用

开发流程

  1. 创建项目
  2. 编写布局文件
  3. 编写java逻辑代码

项目结构

AndroidMainfest.xml 文件主要内容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.topwisesz.helloworldapp">
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.HelloWorldApp"
        tools:targetApi="31">
        <!--定义一个Android应用的一个组件-->
        <activity android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <!--制定该Activity是程序入口-->
                <action android:name="android.intent.action.MAIN" />
                <!--制定运行时加载该应用时运行该Activity-->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Android基本组件

常用组件:VIew、Activity、Service、BroadcastReceiver、ContentProvider、Intent、IntentFilter

四大组件:Activity、Service、BroadcastReceiver、ContentProvider

View和Activity

View是所有UI控件的基类,Activity用于显示View

//创建一个线性布局管理器
LinearLayout linearLayout = new LinearLayout(this);
//设置该Activity显示线性布局
setContentView(linearLayout);
//设置该Activity显示在main.xml定义的view
setContentView(R.layout.main);

BroadcastReceiver

BroadcastReceiver类似于一个全局监听器,用于接受广播消息

使用BroadcastReceiver接受消息步骤:

  1. 继承BroadcastReceiver重写OnReceive()方法
public class DefineBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("接受消息");
    }
}
  1. 发送广播消息
sendBroadcast();
sendstickBroadcast();
sendOrderedcast();
  1. 通过Intentfilter配置BroadcastReceiver需接受的消息
  2. 注册BroadcastReceiver
  • 通过代码Context.registReceiver()方法注册BroadcastReciver
  • AndroidMainfest.xml文件中使用<receiver.../>元素完成注册

ContentProvider

ContentProvider 可以实现不同应用之间的数据交换

//插入数据
insert(url,contentValues)
//删除指定数据
delete(url,contentValues)
//更新指定数据
update(url,contentValues,String,String[])
//查询数据
query(url,String[],String,String[],String)

Intent和IntentFilter

Intent作为Android应用内不同之间通信的载体,ActivityServiceBroadcastReceiver三种组件都是以Intent作为通信主题;

//启动Activity
context.startActivity(Intent intent);
context.startActivityForResult(Intent intent, int requestCode);
//启动Service
context.startService(Intent intent);
bindService(Intent service,ServiceConnection conn,int flags);
//启动BroadcastReceiver
sendBroadcast(Intent intent);
sendStickyBroadcast(Intent intent);
  • 显式Intent:明确指定需要启动或触发的组件应满足的类名
  • 隐式Intent:只是指定需要启动或触发的组件应满足的条件

IntentFilter用于声明Intent所满足的条件。


目录
相关文章
|
26天前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
65 7
|
1月前
|
Android开发 开发者
安卓开发中的自定义视图:从入门到精通
【9月更文挑战第19天】在安卓开发的广阔天地中,自定义视图是一块充满魔力的土地。它不仅仅是代码的堆砌,更是艺术与科技的完美结合。通过掌握自定义视图,开发者能够打破常规,创造出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战应用,一步步展示如何用代码绘出心中的蓝图。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往创意和效率的大门。让我们一起探索自定义视图的秘密,将你的应用打造成一件艺术品吧!
53 10
|
10天前
|
Web App开发 编解码 视频直播
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
本文详细介绍了Android端直播技术的全貌,涵盖了从实时音视频采集、编码、传输到解码与播放的各个环节。文章还探讨了直播中音视频同步、编解码器选择、传输协议以及直播延迟优化等关键问题。希望本文能为你提供有关Andriod端直播技术的深入理解和实践指导。
15 0
|
1月前
|
IDE Java 程序员
安卓应用开发入门:打造你的第一个“Hello World”
【9月更文挑战第11天】在编程的世界里,每一个初学者的旅程都从一个简单的“Hello World”开始。本文将带领安卓开发的新手们,通过简单直观的方式,一步步构建出自己的第一个安卓应用。我们将探索安卓工作室(Android Studio)的安装、项目的创建,以及如何运行和调试你的应用。无论你是编程新手还是想扩展技能的老手,这篇文章都将为你打开一扇通往安卓世界的大门。
111 7
|
1月前
|
IDE Java API
安卓应用开发入门:打造你的第一个"Hello World"
【9月更文挑战第11天】在探索安卓开发的海洋中,每个开发者的航行都从简单的"Hello World"开始。本文将作为你的航标,引导你驶向安卓应用开发的精彩世界。我们将一起启航,通过浅显易懂的语言和步骤,学习如何构建并运行你的第一个安卓应用。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供所需的知识和信心。准备好了吗?让我们揭开安卓开发的神秘面纱,一起创造些令人兴奋的东西吧!
|
2月前
|
运维 Cloud Native Android开发
云原生之旅:容器化与微服务架构的融合之道安卓应用开发入门指南
本文将深入探讨云原生技术的核心要素——容器化和微服务架构,并揭示它们如何共同推动现代软件的开发与部署。通过实际案例分析,我们将看到这两种技术如何相辅相成,助力企业实现敏捷、可扩展的IT基础设施。文章旨在为读者提供一条清晰的道路,指引如何在云原生时代利用这些技术构建和优化应用。 本文将引导初学者了解安卓应用开发的基本概念和步骤,从安装开发环境到编写一个简单的“Hello World”程序。通过循序渐进的讲解,让读者快速掌握安卓开发的核心技能,为进一步深入学习打下坚实基础。
46 1
|
2月前
|
开发者 iOS开发 C#
Uno Platform 入门超详细指南:从零开始教你打造兼容 Web、Windows、iOS 和 Android 的跨平台应用,轻松掌握 XAML 与 C# 开发技巧,快速上手示例代码助你迈出第一步
【8月更文挑战第31天】Uno Platform 是一个基于 Microsoft .NET 的开源框架,支持使用 C# 和 XAML 构建跨平台应用,适用于 Web(WebAssembly)、Windows、Linux、macOS、iOS 和 Android。它允许开发者共享几乎全部的业务逻辑和 UI 代码,同时保持原生性能。选择 Uno Platform 可以统一开发体验,减少代码重复,降低开发成本。安装时需先配置好 Visual Studio 或 Visual Studio for Mac,并通过 NuGet 或官网下载工具包。
124 0
|
2月前
|
XML IDE Java
安卓应用开发入门:打造你的第一个“Hello World”
【8月更文挑战第31天】 在安卓的浩瀚宇宙中,每一个新星都从一句简单的问候开始闪耀。本文将作为你的航标,引导你探索安卓开发的银河系。无论你是初心者还是资深开发者,构建第一个“Hello World”应用总是令人兴奋的里程碑。通过这篇文章,我们将一起搭建起通往安卓开发世界的桥梁。让我们摒弃复杂的术语,用最简单直白的语言,一步步地走过这段旅程。准备好了吗?让我们一起开启这段冒险吧!
|
2月前
|
搜索推荐 Java Android开发
打造个性化安卓启动器:从入门到精通
【8月更文挑战第31天】在这个数字时代,智能手机几乎成了我们生活的延伸。而作为最流行的操作系统之一,安卓的可定制性让它在众多用户中独树一帜。本文将带你了解如何从零开始构建你自己的安卓启动器,这不仅是一项挑战技能的项目,更是一次让你的设备与众不同的机会。我们将一步步探索创建启动器的过程,包括设计思路、关键代码实现以及最终的测试与优化。无论你是编程新手还是有一定基础的开发者,都能通过这个项目提升技术水平,并给你的日常使用带来便利。准备好了吗?让我们一起潜入安卓开发的海洋,打造专属于你的个性化世界!
|
2月前
|
Kubernetes Cloud Native 搜索推荐
探索云原生技术:Kubernetes入门与实践打造个性化安卓应用:从零开始的Flutter之旅
【8月更文挑战第31天】云原生技术正改变着应用开发和部署的方式。本文将带你了解云原生的基石——Kubernetes,通过实际的代码示例,从安装到部署一个简单的应用,让你迅速掌握Kubernetes的核心概念和操作方法。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你进入云原生世界的桥梁。