自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android 学习之追踪应用的安装情况

讨论追踪 Android 应用安装情况的两种方案!手动埋点和通过系统 API 收集!

2024-03-10 20:14:12 1013 1

原创 Android 系统源码初步阅读之调色板 Palette 的使用与源码解读

调色盘 Palette 的使用与源码解读

2023-04-05 19:04:57 1023 1

原创 Android 学习之垂直切换的圆角 Banner 和垂直指示器

简单快速实现垂直切换的圆角 Banner,并配上自定义的垂直指示器

2022-10-23 19:16:21 1929

原创 Android 学习之多状态布局的一种实现方案

开发应用的过程中,首页的控件越来越多,布局文件的代码已经到了爆表的程度,而且不同状态下首页各个控件的 Visibility 不同,每次新增状态都是一件头疼的事情,时常遗漏控件导致出错,和 YYY 大佬交流讨论后他给出了一种巧妙的方案,特此学习记录一下!此处的多状态布局是指一个约束布局中,有很多的子布局和控件(Demo 中仅使用控件,嵌套子布局效果也是一样的),这些布局和控件根据首页状态的不同,各自的显示隐藏状态也不同,形成了不同的布局呈现。...

2022-08-13 22:07:53 1016

原创 Gradle 学习之如何配置依赖

在提倡分享与开源的时代,各式各样的“工具”层出不穷,免去了很多重头再来的冗余工作,我们只要利用好合适的“工具”就可以快速,便捷的实现目标功能,那么 Gradle 是如何帮助找到这些“工具”的呢?重点其实就在于怎么找到和怎么使用上目录一、“工具”的种类二、外部依赖三、项目依赖四、文件依赖五、“工具”的使用一、“工具”的种类所谓的“工具”其实就是指第三方的库,集成的子项目和一些放在项目里面的 jar/aar 包,这些都是丰富我们主项目的“好帮手”,但是前提是要选择得当,合理运用第三方的库集成的子项目

2022-04-30 23:07:00 680

原创 Kotlin 学习之被我一直用错的“return@forEachIndexed/return@forEach”

一、集合遍历二、样例问题场景三、原因四、如何实现 Kotlin forEach 与 forEachIndexed 循环中的 break 与 continue五、心得

2022-03-22 23:30:19 6459

原创 Gradle 学习之插件介绍

一、Gradle 设计介绍二、Gradle 插件介绍1. 二进制插件2. 脚本插件3.应用第三方发布的插件

2022-03-01 22:50:53 3288

原创 Gradle 学习之任务 Task

多种方式创建任务;多种方式访问任务;任务分组与描述;任务的执行分析;任务排序;任务的启用和禁用;任务的 onlyIf 断言;任务规则

2022-02-13 21:20:31 1614

原创 Gradle 学习之基础项目脚本

目录一、settings.gradle 文件二、build.gradle 文件三、项目与任务四、书写 Gradle 脚本代码的本质一、settings.gradle 文件作用: 作为项目的设置文件,用于项目初始化以及多工程(子工程)的配置默认名称: settings.gradle存放位置: 项目根目录注意点: 一个子工程只有在 settings.gradle 里面配置了,Gradle 才会识别,才会在构建的时候将其包括进去多工程 settings.gradle 配置示例:工程结构文件

2022-01-16 15:59:27 2161

原创 Gradle 学习之 Groovy 基础

一、什么是 Groovy1. 官网:http://www.groovy-lang.org/2. 概念:是基于 JVM 虚拟机的一种动态语言,语法上和 Java 非常相似,完全兼容 Java,可以说是一门非常灵活的动态脚本语言3. 应用:Gradle 的 build 脚本文件都是一个 Groovy 脚本文件,是使用 Groovy 进行编写的二、基础语法由于我们是在学习 Gradle 尤其是 Android Gradle,所以一开始对于 Groovy 不需要掌握得非常深刻,我们这里就对一些语法概

2022-01-02 02:50:11 1712

原创 Gradle 学习之入门知识(二)

Gradle 7.0.2目录Gradle 7.0.2一、Gradle Wrapper1. 什么是 Gradle Wrapper2. 如何生成一个 Gradle Wrapper 所需的目录文件3. gradle-wrapper.properties4. 如何使用 Gradle Wrapper 下载 Gradle5. 通过自己写的 Task 来生成 Gradle Wrapper二、Gradle Wrapper 的一些命令1. 查看帮助:2. 查看所有可执行的 Tasks:3. 某个 Task 的使用帮助:4.

2021-12-24 23:58:00 1461

原创 Gradle 学习之入门知识(一)

一、什么是 Gradle官网:https://gradle.org/官网介绍:从官网的介绍中,我们不难得知——Gradle 是一个自动化构建工具,可以帮助我们更便捷地构建我们的项目From mobile apps to microservices, from small startups to big enterprises, Gradle helps teams build, automate and deliver better software, faster.二、搭建 Gradle

2021-12-19 21:27:11 1607

原创 Android 学习之跳转抖音账号主页或者某一视频页

一、需求来源当我们开发的应用功能上使用起来门槛较高,或者交互设计不够友好,用户使用起来存在困难,我们就需要提供教程,可以是文字描述,图文结合或者是视频,其中最为有效的当属视频啦。为了方便管理和推广自己的应用,企业一般会有专门的抖音账号,我们的教程可以放置其中,一方面可以推广应用,另外一方面也是推广抖音账号。二、跳转外部应用的方法跳转第三方应用,我们一般是通过隐式启动的方式进行的,下面是跳转抖音的基本示例:val intent = Intent(Intent.ACTION_VIEW)intent.

2021-10-31 18:43:47 6489 1

原创 Android 学习之那些年我们遇到的BUG10:No cached version of xxx available for offline mode.

BUG:No cached version of xxx available for offline mode.原因: 构建第三方项目时产生的问题,看报错日志知道是 Gradle 离线的缓存中没有 xxx 这个库,需要联网下载。于是打算调整 Gradle 相关设置,但是发现之前的 Offline work 选项不见了,于是上网搜索一番得知新版本的 Android Studio 调整了设置的位置,特此记录:旧版 Android Studio 开关位置如下:新版 Android Studio 开关位置

2021-09-13 22:54:28 252

原创 Android 学习之那些年我们遇到的BUG9:Lifecycle.Event.ON_RESUME 提前触发了

BUG:自定义 View 中实现了 LifecycleObserver 接口,编写了一个 onResume(…) 函数,并给它加上了注解“@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)”,但是所在的 Fragment 还没有处于 onResume() 状态,View 的 onResume(…) 方法就触发了产生的背景:实现了 LifecycleObserver 接口的自定义 View自定义 View 中有一个加了 @OnLifecycleEvent(Life

2021-09-11 15:55:23 597

原创 Android 系统源码初步阅读之 activity 的 startActivity(intent) 与 非 activity 的 startActivity(...) 的不同

基于 Android 11Android 源码太过庞杂,每次深入流程看完,隔天就忘了,还是得从细微处出发,由浅入深才行!由于本文是为了分析两种子类实现 startActivity(…) 的不同,有一些细节就省略不表,专注于不同的地方目录一、前置知识二、activity 的 startActivity(...) 方法三、非 activity 的 startActivity(...) 方法四、最终结论一、前置知识日常开发的 MainActivity 的继承关系如下:MainActivity-&g

2021-05-22 17:17:23 1608 14

原创 Android 学习之“工作资料”的初步学习与开发

一、何为“工作资料”“工作配置”(work profile)1. 接触:第一次接触“工作资料”这个概念是在研究“如何使一个应用的图标不出现在桌面上”时了解到的。相关的博客中提到,在高版本系统的手机上如果要实现应用图标不显示在桌面上这一功能,有一种方法是将该应用设置为工作资料,设置完的应用可以隐藏图标。于是开始留意“工作资料”相关的内容,学习后整理出此文。2. 介绍:以下为谷歌官方对“工作资料”的介绍Users often want to use their personal devices in

2021-04-21 23:33:28 3677 2

原创 Android 学习之《第一行代码》第三版 笔记(一)Kotlin 继承时的括号到底写不写

内容学习来源:第 2 章 探究新语言,快速入门 Kotlin编程目录一、问题来源二、继承与构造函数(一)前置知识(二)括号代表了什么(三)继承时,什么时候不要加括号1. 子类的括号不用写:没有主构造函数或者不显式声明主构造函数,使用默认的空参主构造函数2. 父类的括号不用写:没有主构造函数,父类的括号就不用写一、问题来源Kotlin 作为 Android 开发的一级语言,在现阶段是我们必须要掌握的,工作之前从未接触过,入职前也只是草草翻阅了一遍《Kotlin 崛起次世代 Android 开发》一

2021-01-04 23:28:10 477

原创 Android学习 使用 PopupWindow 实现底部弹窗

毕业后忙于工作,自己也“懒惰了”一些,已经很长时间没有写博客了,接下来会整理整理自己半年的工作所得,陆续写成博客发表,希望与大家共同进步!目录一、知识点(一)PopupWindow(二)视图动画二、界面效果三、设计实现(一)需求分析(二)文件列表(三)布局设计(四)数据存储与加载(五)剩余内容四、心得体会一、知识点不详细展开 PopupWindow 或者视图动画的所有具体使用方式,仅仅介绍一下使用的一个大概流程和一些知识要点,具体的介绍在下面设计实现中讲述(一)PopupWindow1. 初始化

2020-12-28 23:38:43 2141 6

原创 Android学习 实现带自动补全与历史记录的自定义搜索框

带自动补全与历史记录的自定义搜索框,可

2020-05-08 17:06:49 891 2

原创 Android学习 UI模仿练习之“巴士管家”选取车票

模拟一些优秀的APP的界面绘制,实现类似功能。绘制“简陋版界面”,哈哈哈。主要控件:TabLayout+RecyclerView+自定义CalendarView一、界面效果二、布局设计(一)主要布局文件 activity_date_selector.xml1. activity_date_selector.xml<?xml version="1.0" encoding="ut...

2020-04-26 14:08:42 709 2

原创 Java BUG1:获取本周第一天即得到周一的日期

BUG 获取周一的日期,周日获取到的是下周的周一强调:以周一为一星期的第一天!!!问题描述:开发过程中需要使用日期相关的函数,有些功能需要自行开发,为了赶时间于是在网上找到现成的代码,起初没什么问题,到了星期天突然发现数据不对,仔细排查,发现BUG,周日获取到的周一日期不是本周而是下周的。含有BUG的代码(来源为网络):2020-3-22 周日 本周的周一为2020-3-16//Syste...

2020-03-22 15:05:49 798 2

原创 Android学习之属于自己的 GitHub UI 库

无论是比赛还是毕设,设计 app 时有不少重复使用的 UI 控件,为了不每次都重写或者复制粘贴,于是将自己常用的 UI 控件封装成轮子,放在自己的 GitHub 上,方便使用。不定期更新GitHub地址一、search_widget1. 简介一款搜索框控件,支持自定义图标,保存搜索历史,自动补全文字等功能。2. 效果3. 使用1.) 导入依赖allprojects { repo...

2020-02-18 16:33:50 464 1

原创 Android 学习之那些年我们遇到的BUG8:ArrayAdapter 直接使用 notifyDataSetChanged()无效

BUG:在使用AutoCompleteTextView时,用ArrayAdapter作为适配器,刷新数据时使用notifyDataSetChanged()无效。修改 ArrayList 然后调用 notifyDataSetChanged() 对于ArrayAdapter 没有产生影响,里面的数据并未发生改变,造成 notifyDataSetChanged() 无效直接使用 ArrayAdapt...

2020-02-18 16:13:31 573

原创 Git——版本控制工具

文章目录一、什么是 Git二、Git 的安装三、Git 的常用指令四、Git 使用——配置身份(第一次安装后配置一次即可)1. 配置名称与邮箱2. 查看是否配置成功:五、Git 使用——本地使用1. 创建本地文件仓库2. 提交本地项目到暂存区3. 提交暂存区项目到本地仓库4. 版本回退5. 分支操作六、Git 使用——配合 Github 使用1. 在 Github 上创建仓库2. 将线上远程仓库克...

2020-02-16 21:19:45 217

原创 Android 学习之那些年我们遇到的BUG7:dbname is empty or not defined in litepal.xml file, or your litepal.xml file

BUG:Caused by: org.litepal.exceptions.InvalidAttributesException: dbname is empty or not defined in litepal.xml file, or your litepal.xml file is missing.在做毕设时遇到的第一个BUG,使用LitePal的时候发现真机闪退,看错误应该是litep...

2020-02-05 22:02:42 1029

原创 Java 再学习 模糊的知识 (五)

异常、断言、日志和调试派生于 RuntimeException 的异常(程序错误导致的异常)包含下面几种情况:错误的类型转换。数组访问越界。访问空指针。不是派生于 RuntimeException 的异常(程序本身没有问题,其他错误导致的异常)包括:试图在文件尾部后面读取数据。试图打开一个不存在的文件。试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存...

2020-01-15 21:31:48 153

原创 Java 再学习 模糊的知识 (四)

接口与内部类1. 有关接口的一些知识点:接口不是类,不能用 new 运算符实例化一个接口。虽然不能构造接口的对象,但能够声明接口的变量,该变量必须引用实现了接口的类对象。可以使用 instanceof 检查一个对象是否实现了某个特定的接口。接口中不能包含实例域或静态方法,但却可以包含常量。接口中的方法都自动地被设置为 public ,接口中的域则被自动设置为 public static...

2020-01-02 15:25:23 136 1

原创 Java 再学习 模糊的知识 (三)

继承super 不是一个对象的引用,不能将 super 赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字。继承并不仅限于一个层次。由一个公共超类派生出来的所有类的集合被称为继承层次。在继承层次中,从某个特定的类到其祖先的路径被称为该类的继承链。一个用来判断是否应该设计为继承关系的简单规则,就是“is-a”规则,它表明子类的每个对象也是超类的对象。“is-a”规则的另一种表述...

2020-01-01 16:43:56 154

原创 Android 学习之《第一行代码》第二版 笔记(十六)内容提供器之访问其他程序中的数据

一、概要内容提供器的用法:A. 使用现有的内容提供器来读取和操作相应程序中的数据。B. 创建自己的内容提供器给我们程序的数据提供外部访问接口。二、ContentResolver的基本用法借助ContentResolver类访问内容提供器中共享的数据。(通过Context的getContentResolver()方法获得该类的实例)。ContentResolver类中的CRUD方法都不...

2020-01-01 15:46:47 349

原创 Android学习之制作第一个自己的 GitHub 依赖库

一、步骤在Android Library中制作简易的自定义布局本地测试上传GitHub生成release版本添加到JitPack依赖使用测试二、开发(一)简易自定义布局的制作Android学习之自定义布局与属性的创建与使用(二)将工程内的自定义控件改造成Android Library新建Module新建Android Library将(一)中制作的自定义布局转移...

2019-12-29 23:11:03 187

原创 Java 再学习 模糊的知识 (二)

面向对象程序设计实现封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域,程序仅通过对象的方法与对象数据进行交互。一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。在Java中,任何对象变量的值都是对存储在另外一个地方的一个对象的引用。new操作符的返回值也是一个引用。有关日期的注意点//Thu Sep 01 00:00:00 CST 2016//2016public ...

2019-12-29 19:30:42 177

原创 Java 再学习 模糊的知识 (一)

一、基础知识数值的进制二进制数 前缀 0b | 0B八进制数 前缀 0十进制数 无前缀十六进制数 前缀 0x | 0XSystem.out.println("二进制数 1000:"+0b1000); //二进制数 1000:8System.out.println("八进制数 1000:"+01000); //八进制数 1000:512System.out.println("十进...

2019-12-27 17:05:15 169

原创 Android学习之期末复习重点整理

一、题型选择题 15×2 30分 填空题 10×2 20分 简答题 5×4 20分 程序填空题 15×2 30分二、重点整理第一章 Android简介Android 采用了软件堆层的架构,共分4层:第一层:Linux内核,提供由操作系统内核管理的底层基础功能;第二层:中间件层,由库函数和Android运行时构成;第三层:应用程序框架层,提供了Android平台基本的管理功能和组件重...

2019-06-13 20:19:02 7412

原创 Android学习之远程服务的使用与开发

先前学习安卓偏向于界面的绘制,对于其他方面的知识比较薄弱,在逐步查缺补漏(就是填大坑,自己真的太菜了。)本学期开设了Android课程,其中一章为远程服务,自觉收获颇多,特写此文。本文为课程实验的学习与整理,若有错误请烦请指正。一、知识点(知识点有空再补全)二、问题描述假设一个APP“支付宝宝”提供支付的服务(Service),另一个APP“迪迪打车”可以调用该服务。要求(1) 为“支付...

2019-06-02 16:57:34 339

原创 Android学习之完整的注册登录Demo(APP端+服务器端)

因比赛或者项目需要,写了几个小打小闹的APP。有的处于“单机”状态,有的处于“半联网”状态,觉得学习有点操之过急,所以先缓一缓,梳理一下之前所学的知识,将之前做的一些小玩意儿,整理出来写成博客。第一篇便是大部分APP都具有的注册登录系统。一、问题描述完成简单的注册与登录功能。二、需求分析在APP端有注册与登录两个显示界面:点击注册,将用户填写的信息存储到数据库当中;点击登录,查询服务器数据...

2019-04-23 00:05:20 7003 14

原创 SSM学习之Spring的Bean

一、Bean的配置把Spring看做一个大型工厂,其作用便是生产并管理Spring容器中的Bean。若想要使用该工厂,则常常使用XML文件来对Spring的配置文件进行配置,注册并管理Bean之间的依赖关系。配置文件:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframewo...

2019-03-25 20:56:24 526

原创 Android 自动化测试工具 UIAutomator(一)

emmm,项目需要,所以学习一下很基础的Android测试知识,涉及到了UIAutomator,觉得很好,记录一下。一、UIAutomator2.0UIAutomator2.0是android的自动化测试框架。Espresso(主要单元测试)+ UIAutoamtor2.0(主要UI测试)= ATSL(安卓测试知识库)黑盒UI自动化测试套路:通过搜索条件,查找组件,然后操作组件。二、...

2019-03-22 21:39:42 681

原创 SSM学习之Spring的入门程序——控制反转与依赖注入

一、概念控制反转使用Spring框架,对象的实例不是由调用者来创建,而是由Spring容器来创建。Spring容器负责控制程序之间的关系,而不是由调用者的程序代码直接控制。控制权由应用代码转移到了Spring容器。依赖注入Spring容器负责将被调用者赋值给调用者的成员变量,即为调用者注入了它依赖的实例(被调用者)。作用:在使用Spring框架创建对象时,动态地将其所依赖的对象注入Bea...

2019-03-11 18:40:08 347

原创 Android学习之自定义布局与属性的创建与使用

一、效果图1. settings_item.xml2. activity_main.xml二、实现步骤1. 自定义布局文件,绘制想要重复使用的自定义布局。(settings_item.xml)&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&amp;lt;RelativeLayout xmlns:android=&quot;http:

2019-02-14 22:45:25 549

Android学习之实现带自动补全与历史记录的自定义搜索框

两个Demo 配合博客使用,与大家相互借鉴实习。模拟“巴士管家”选取车票,实现类似功能。 Android学习之实现带自动补全与历史记录的自定义搜索框。

2020-05-08

Android学习 UI模仿练习之“巴士管家”选取车票

配合博客使用,所以0积分,与大家相互借鉴实习。模拟“巴士管家”选取车票,实现类似功能。绘制“简陋版界面”,哈哈哈。

2020-04-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除