![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Anrdoid 基础知识
文章平均质量分 93
萌果爱吃芒果
身在井隅,心向璀璨。
展开
-
Android 架构之 MVC 架构模式
前言由于 MVP、MVVM、组件化架构的兴起,MVC 架构在 android 中的应用变得越来越少,但 MVC 是基础,理解好 MVC 才能更好的理解 MVP,MVVM,因为后两种都是基于 MVC 发展而来的。有些人认为只要架构好 App 就做得好,这种认识其实是错误的,架构的本质一定是服务于业务的。每一种架构一定有它的优点和缺点,能适合自己的需求、提高开发效率的架构就是一个好的架构。例如一个功能相对比较简单并且后期也不再扩展的 App,完全可以用 MVC 架构来写,将逻辑全部写在 Activity原创 2021-06-21 18:34:07 · 714 阅读 · 0 评论 -
Android 使用 Kotlin 重写 Gradle 文件(Kotlin Gradle DSL)
概述众所周知,我们在 Android Studio 是使用 Gradle 来编译的,Gradle 是一种基于 Groovy 语言的构建工具,我们平时看到的 build.gradle 中的语法结构其实就是 Groovy 提供的 DSL 功能。DSL 的全称是领域特定语言(Domain Specific Language),它是编程语言赋予开发者的一种特殊能力,通过它我们可以编写出一些看似脱离其原始语法结构的代码,从而构建出一种专有的语法结构。毫无疑问,Kotlin 是支持 DSL 的,而且 Gradle原创 2021-06-16 17:08:34 · 790 阅读 · 0 评论 -
封装万能的 RecyclerView 适配器
传统的适配器在 Android 项目中,基本上都会有列表功能,而现在的列表功能都是通过 RecyclerView 实现的,当项目中列表功能比较多的时候,每一个 RecyclerView 都需要一个 Adapter 适配器,这样会使得项目中的 Adapter 类非常的多。所以,封装一个万能的 RecyclerView 适配器是可以提高我们的开发效率的。在这之前,我们先来看一下传统适配器配合 RecyclerView 是怎样使用的。我们先来看一下我们要实现的例子的样子,如下所示:适配器 Adapter原创 2021-06-10 11:49:24 · 692 阅读 · 2 评论 -
Android 利用ViewPager开发引导页并加入帧动画、属性动画和音乐播放
一、前言现在很多 App 都有引导页,今天我们就利用 ViewPager 来实现引导页,并且在引导页中加入帧动画、属性动画和音乐播放等功能。二、最终效果展示原创 2020-11-19 11:43:48 · 206 阅读 · 0 评论 -
Android 小功能之 TextView 只设置某些文字可点击
一、效果展示我们先来看下效果:二、代码实现注释写的已经很详细了,其中tvLoginPrivacyPolicy是我需要设置对应地方有点击效果的TextView,具体代码实现如下所示:private void setTvLoginPrivacyPolicySpecialText() { // 不需要点击的文字 tvLoginPrivacyPolicy.setText(R.string.Bylogging); // 设置需要点击的文字 SpannableString click原创 2020-11-12 21:00:59 · 1092 阅读 · 0 评论 -
Android 子 View 的位置及坐标的获取方式详解
一、View1.1、View 概述视图 (View) 是一个容器,专门负责布局。表现为显示在屏幕上的各种视图,如 TextView、LinearLayout 等。1.2、View 分类View 主要分为两类,具体如下表格所示:类别示例特点单一视图即一个 View,如 TextView、EditText不包含子View视图组即多个 View 组成的 ViewGroup,如 RelativeLayout包含子View1.3、View 类简介View 类是原创 2020-10-27 14:24:13 · 473 阅读 · 2 评论 -
Android ORM框架 GreenDao 的使用详解
一、前言关于 Android 中常用的数据存储方式我们前面已经讲了 Sp 存储 和 文件存储,但是对于数据量比较大,并且结构复杂的数据我们想要存储只能通过数据库进行处理,Android 中提供了一个 SQLite 数据库,但是使用起来比较繁琐和复杂,所以 Android 又推出了 Room 持久性库,Room 持久性库在 SQLite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制。但是我们今天不讲 Room 这个组件(以后讲 Jetpack原创 2020-10-23 20:51:18 · 891 阅读 · 0 评论 -
Android 外部存储与内部存储详解
一、前言在 Android 本地数据存储之 SharePreferences 存储 中,我们已经讲了 Sp 是如何保存数据的,并且也提供了一个 Sp 的工具类,今天我们来讲解一下 Android 中本地存储数据的另外一种方式——文件存储,文件存储又分为外部存储和内部存储。...原创 2020-10-20 21:35:04 · 716 阅读 · 1 评论 -
Android 本地数据存储之 SharePreferences 存储
一、前言数据的存储是我们在使用应用的过程中不可避免的操作,因为对于所有的应用而言我们主要的操作就是数据的读取与存储。二、Android 中常用的数据存储方式Android 中常用的数据存储方式有以下几种:SharePreferences 存储数据;文件存储(内部、外部);数据库存储(比如SQLite、greenDao、Room 等);ContentProvider 存储数据;网络存储数据(将数据存储在服务器端)。上面列出的五种存储方式里面,前面四种都属于本地数据存储方式,我们今天只讲原创 2020-10-18 17:17:32 · 1117 阅读 · 0 评论 -
Android RecyclerView 的使用详解
一、前言可以这样说,RecyclerView 的问世,替代了 ListView 和 GridView。RecyclerView 异常的灵活、可自定义并可重复利用的 Item 、高度的解耦,并且通过设置不同的 LayoutManager、ItemDecoration 和 ItemAnimator 可以实现令人瞠目的效果。ItemDecoration 的相关讲解大家可以看 这篇文章。源码已经上传至 github,地址在文末中已经给出,可以先下载到本地运行起来,因为具体事例讲解的时候并没有把全部的代码贴出来原创 2020-10-12 22:36:02 · 1175 阅读 · 0 评论 -
Fragment 实现简易新闻界面(适配手机与Pad)
一、前言Android 在 Android 3.0(API 级别 11)中引入了 Fragment,主要目的是为大屏幕(如平板电脑)上更加动态和灵活的界面设计提供支持。由于平板电脑的屏幕尺寸远胜于手机屏幕尺寸,因而有更多空间可供组合和交换界面组件。例如,新闻应用可以使用一个片段在左侧显示文章列表,使用另一个片段在右侧显示文章,两个片段并排显示在一个 Activity 中,每个片段都拥有自己的一套生命周期回调方法,并各自处理自己的用户输入事件。因此,用户无需使用一个 Activity 来选择文章,然后使用原创 2020-10-08 21:00:06 · 1718 阅读 · 0 评论 -
Fragment 与 Activity 的最佳通信方式
一、前言在 Fragment 与 Activity 之间的通信 这篇博客中,我们提了一下 Fragment 与 Activity 之间的最佳通信方式,但是我们没有深入的讲解,这篇博文我们就结合例子来讲一下这个知识。我们先来看一下我们今天的要做的实例的效果:这个实例就是一个 Activity 里面有两部分,这两部分分别加载了两个 Fragment,上面那个包含 EditText 的 Fragment 每次输入完数据后,按下回车键,要将数据在下面那个 ListFragment 里面展示出来,这就涉及到了原创 2020-10-06 22:15:50 · 318 阅读 · 0 评论 -
Fragment 与 Activity 之间的通信
一、前言在 Fragment 的创建、替换与移除 我们已经讲了 Fragment 的静态添加和动态添加,今天我们来讲 Fragment 的生命周期 和 Fragment 与 Activity 之间的交互。二、Fragment 的生命周期和 Activity 一样,Fragment 也有自己的生命周期,并且和 Activity 的生命周期非常相似。具体如下图所示:这里我们选择几个比较重要的状态来讲解一下:onAttach():当 Fragment 和 Activity 建立关联时调用;onCr原创 2020-10-05 21:52:38 · 927 阅读 · 0 评论 -
Fragment 的创建、替换与移除
一、Fragment 概述Fragment 是从 Android 3.0 开始引入的,翻译过来就是碎片的意思。Fragment 的作用以及使用场景我就不赘述了,我们直接来看 Fragment 是如何使用的。一、Fragment 的创建要使用 Fragment,可以通过继承 Fragment 类来创建 Fragment,在多数情况下我们需要给 Fragment 定制一个 UI,但是,也可以为 Activity 创建一个没有 UI,只提供后台行为的 Fragment。Fragment 的创建一般有两种原创 2020-10-03 22:22:59 · 591 阅读 · 0 评论 -
Android 自定义控件
一、前言对于 Android 开发者来说,原生控件往往无法满足要求,需要开发者自定义一些控件,因此,需要去了解自定义 view 的实现原理。这样即使碰到需要自定义控件的时候,也可以游刃有余。1.1、自定义控件的优点多个地方复用;统一的逻辑样式;精简代码。1.2、自定义控件的方式继承已有控件;继承布局;继承根 View。二、继承已有控件我们要自定义的控件和已有控件非常相似,那么我们就可以在已有控件的基础上,继承组件,增加属性,来实现自己想要的效果。案例一: 自定义提交按钮(按钮原创 2020-10-02 15:58:09 · 252 阅读 · 0 评论 -
Android RecyclerView ItemDecoration 类解析
一、前言毫无疑问,RecyclerView\color{red}{RecyclerView }RecyclerView 是现在 Android\color{red}{Android}Android 中最重要的系统组件之一,它的出现就是为了高效代替 ListView 和 GridView。RecyclerView 虽然比 ListView 更好用,但是某些地方也更复杂了,它将更多的权力交给了开发者自己,比如布局,比如 ITEM 的分割线,比如点击监听等等。大部分情况下,RecyclerView 的基本用法原创 2020-10-01 14:34:10 · 862 阅读 · 0 评论 -
Android 四大组件之 Activity 解析(下)
一、Activity 回顾在 完全看懂 Android 四大组件之 Activity(上)中我们已经讲了 Activity 的启动方法、生命周期以及启动模式。这一节我们来讲一下 Activity 之间的传参以及如何启动系统 Activity 这两大知识点。其中 Activity 之间的传参又包括利用 Intent 传参、利用Bundle传参以及复杂数据的传递。二、Activity 之间的数据传递2.1、利用 Intent 传递数据利用 Intent 传递数据主要是调用 Intent.putExtra原创 2020-09-27 16:40:47 · 188 阅读 · 0 评论 -
Android 四大组件之 Activity 解析(上)
一、概述简单来讲,Activity 就是一个可视化界面,负责承建一个屏幕窗口,防止 UI 组件,供用户交互。一般来说承建 Activity 有三个步骤:承建 Activity 类;在 AndroidManifest.xml 中注册;设置布局文件(可选)。二、Activity 的启动方法2.1、显示启动明确指定要启动的 Activity 的 class\color{red}{class}class 或者 包名.activity类名\color{red}{包名.activity类名}包名.ac原创 2020-09-24 21:28:18 · 352 阅读 · 0 评论 -
给 Android 开发者的 Kotlin 教程(一)
一、Android 中的 UI 线程概述Android 的 UI 线程是线程不安全的,也就是说想要更新应用程序中的 UI 元素,则必须在主线程中进行。所以主线程又叫做 UI 线程。若在子线程中更新 UI 程序会报错。但是我们经常有这样一种需求:需要在子线程中完成一些耗时任务后根据任务执行结果来更新相应的UI。这就需要子线程在执行完耗时任务后向主线程发送消息,主线程来更新UI。也就是线程之间的通信,线程间通信方法有很多,今天我们主要来讲利用 Handler 来实现线程之间的通信。二、常用类1、Handl原创 2020-09-16 20:27:25 · 859 阅读 · 0 评论 -
Android handler 消息通信实践(附计时器 demo)
一、Android 中的 UI 线程概述Android 的 UI 线程是线程不安全的,也就是说想要更新应用程序中的 UI 元素,则必须在主线程中进行。所以主线程又叫做 UI 线程。若在子线程中更新 UI 程序会报错。但是我们经常有这样一种需求:需要在子线程中完成一些耗时任务后根据任务执行结果来更新相应的UI。这就需要子线程在执行完耗时任务后向主线程发送消息,主线程来更新UI。也就是线程之间的通信,线程间通信方法有很多,今天我们主要来讲利用 Handler 来实现线程之间的通信。二、常用类1、Handl原创 2020-09-07 18:28:07 · 411 阅读 · 0 评论 -
Android Notification发送通知
一、Notification 概述Notification,俗称通知,是一种具有全局效果的通知,它展示在屏幕的顶端,首先会表现为一个图标的形式,当用户向下滑动的时候,展示出通知具体的内容。系统为开发者提供了不同种类的通知样式模板可以使用,开发者也可以根据自己需要自定义通知样式。二、通知渠道(NotificationChannel)通知渠道是 Google 在 Android O 中新增加的功能,新的版本中把振动、音效和灯效等相关效果放在了通知渠道中控制,这样用户就可以有选择的控制应用的某一类通知的通知原创 2020-09-02 09:48:38 · 1993 阅读 · 2 评论 -
Android 中的网络操作(HttpURLConnection)
一、Android 网络知识简介Android 程序最重要的模块就是网络部分,如何从网络上下载数据,如何将处理过的数据上传至网络,往往是 Android 程序的关键环节。Android 中对于网络操作的有很多很好用的框架,如 OkHttp、Velloy、Retrofit 等。但是今天我们来重点讲解一下 HttpURLConnection 这个抽象类。二、利用 HttpURLConnection 实现 Get 和Post 请求1、权限申请Android 中要做跟网络相关的操作,一定需要在清单文件中申请原创 2020-08-30 18:43:38 · 800 阅读 · 0 评论