- 博客(101)
- 资源 (5)
- 收藏
- 关注
原创 Flutter混合开发玩Android客户端
PS:年后连续几周的回调,面对涨跌心态越来越好了。本项目使用 玩安卓 提供的 API 开发,采用 MVP 架构,项目中使用 Flutter和原生混合开发的方式实现了部分功能,如注册登录功能,使用到的优秀开源框架有 Dagger2、Retrofit、RxJava2 等,项目已经全面转换到 androidx,由于日常工作很少接触常用 App 的开发,故作为练手项目利用业务时间开发,如果你正好需要一个完整项目练手,那个这个绝对适合你。由于该项目搭建的早,其中像依赖注入框架 Dagger2 还未替换为更好用的
2021-03-22 00:02:24 395
原创 手把手教你实现实现一个Android日期选择器
通过自定义 View 来实现一个时期时间选择器,可以放在底部也可以放在中间位置弹出,先来一张效果图:下面简述一下实现过程:基本思路Baseline计算如何实现滚动具体绘制MDatePickerDoialog的实现MDatePickerDoialog的设置MDatePickerDoialog的使用基本思路日期选择器的一个最基本元素都是一个可以随意设置数据的一个滚轮,这里也是...
2019-12-09 00:08:29 1020 4
原创 音视频开发基础知识
今天学习一下音视频的基础知识,日常工作中都会接触到音视频的开发,比如目前工作中都会涉及到 TSPlayer、IjkPlayer、MediaPlayer 提供播放能力,不管是什么 Player,其上层调用都是大同小异,但是具体实现以及能够支持的能力各不相同,要想继续深入就必须深入音视频的学习,Android 开发的几个主要方向分别是应用、Framework、音视频、NDK等,如果继续在 Android 领域,这些坑还是是必须要填的,主要内容如下:视频编码音频编码多媒体播放组件帧率分辨率编码格式
2021-05-12 00:52:26 597 2
原创 虚拟机类加载机制
PS:虽然最近更新频率低了,但是学习一直没有停止,共勉!今天介绍一下 JVM 类加载器机制,主要内容如下:概述类加载的时机类加载的过程类加载器类加载器分类双亲委托模型概述JVM 把字节码(.class)文件加载到内存中,并对数据进行校验、解析和初始化,最终生成可以被 JVM 直接使用的 Java 类型,这就是 JVM 的类加载机制。在 Java 中各种类型的加载、连接和初始化过程都是在程序运行期间完成的,这种方式会在类加载时带来一些性能开销,但是具有很高的灵活性,Java 的动态.
2021-04-12 01:13:40 241
原创 Java系列之反射
最近知识比较零碎,不适合整理成文,来一篇以前的关于反射的学习笔记,主要内容如下:反射机制反射获取类的信息反射操作类的信息反射获取泛型反射获取注解信息反射机制Java 的反射机制是指在运行状态下,对于任意一个类,都能够知道这个类的所有属性和方法,反射是一种可在代码运行时动态获取类的信息的一种机制,可通过反射获取在编译期不可能获取到的类的信息,当一个任意类被类加载器(ClassLoader)首次加载之后会自动生成一个该类对应的 Class 对象,这个 Class 对象保存了对应类的所有信息。这
2021-03-15 23:32:12 166
原创 Flutter系列之Platform Channel使用详解
PS:很多情境中,80% 的已知效果源自 20% 的可能原因。前面几篇文章介绍了 Navigator 组件、Flex 布局、图片加载、Widget 生命周期、混合开发等 Flutter 开发基础知识, 文章如下:Flutter系列之Navigator使用详解Flutter系列之Flex布局详解Flutter系列之图片加载详解Flutter系列之Widget生命周期Flutter系列之混合开发Android篇Flutter系列之Platform Channel使用详解下面介绍一下 Fl.
2021-03-01 00:34:39 1040 4
原创 自定义View实现字母导航控件
PS:如果不能严格内化自己,就没有足够的心理能量进行深度工作。今天分享一个以前实现的通讯录字母导航控件,下面自定义一个类似通讯录的字母导航 View,可以知道需要自定义的几个要素,如绘制字母指示器、绘制文字、触摸监听、坐标计算等,自定义完成之后能够达到的功能如下:完成列表数据与字母之间的相互联动;支持布局文件属性配置;在布局文件中能够配置相关属性,如字母颜色、字母字体大小、字母指示器颜色等属性;主要内容如下:自定义属性Measure测量坐标计算绘制显示效果自定义属性在 v.
2021-02-24 00:18:58 183
原创 Flutter系列之混合开发Android篇
前面几篇文章介绍了 Navigator 组件、Flex 布局、图片加载、Widget 生命周期等 Flutter 开发基础知识, 文章链接如下:Flutter系列之Navigator使用详解Flutter系列之Flex布局详解Flutter系列之图片加载详解Flutter系列之Widget生命周期今天介绍一下 Flutter 混合开发模式, 以及如何在 Android 现有项目中添加 Flutter 模块等,主要内容如下:Flutter混合开发模式Flutter Module的创建方式
2021-02-01 00:05:23 822
原创 Android多进程运行机制及IPC
今天总结下 Android 多进程运行机制以及 IPC 介绍,内容如下:Android中的进程Android IPC介绍开启多进程模式Android多进程运行机制Android中的进程首先进程可以理解为独立运行的程序,当某个程序启动时,系统将会为该程序创建一个进程,并为其分配所需的系统资源,同时将该进程添加到进程就绪队列中,进程调动程序负责运行哪一个进程。Android 中的应用程序可以为一个进程,也可以配置成多进程,每个进程都在自己独立的空间中运行,Android 为每个进程分配一个虚拟
2021-01-18 01:00:45 142
原创 Flutter系列之Widget生命周期
PS:你的计划很完美,但世界变化是在太快。上篇文章学习了 Flutter 中的图片加载及源码分析,做过移动端开发的朋友都知道组件的生命周期,Flutter 中也是一样,了解和学习好 Flutter 中的组件的生命周期非常重要,同系列文章如下:Flutter系列之Navigator使用详解Flutter系列之Flex布局详解Flutter系列之图片加载详解本篇文章将主要介绍 Flutter 中 Widget 的生命周期,具体如下:StatelessWidgetStatefulWidge.
2021-01-11 00:19:14 1241
原创 Flutter系列之图片加载详解
PS:自律实践起来真的没有想象那么简单。Flutter 同系列文章如下:Flutter系列之Navigator使用详解Flutter系列之Flex布局详解Flutter 支持加载的图片类型:JPEG、PNG、GIF、WebP、BMP 和 WBMP,Flutter Image 的组件的必须参数是一个 ImageProvider ,ImageProvider 是一个抽象类,具体获取图片由子类实现,本文将从如下几个方面学习 Flutter 中的图片加载:图片加载图片预加载图片缓存清除图片.
2021-01-04 00:32:29 2391
原创 Flutter系列之Flex布局详解
PS:想做一件事很容易,真正去做一件事很困难。Flutter 是 Google 推出的跨平台 UI 框架,可以快速地在 Android 和 IOS 上构建高质量的应用程序,其主要特点是 Flutter 具有快速开发的能力、富有表现力和灵活的 Ui 以及良好的原生性能,本篇文章主要介绍 Flutter 中的 Flex 布局,如下:Flex基础Flex常用设置Row和ColumnExpanded和FlexibleSpacer总结Flex基础Flex 布局方式已经广泛使用在前端、小程序开.
2020-12-28 01:12:11 7746
原创 Flutter系列之Navigator组件使用
PS:想做一件事很容易,真正去做一件事很困难。Navigator 使用堆栈规则来管理 Widget,Navigator 记录了页面访问记录,可以使用 Navigator 来完成页面之间的跳转操作。在 Android 开发中,我们平时说的跳转都是指的是 Activity 的跳转,也称为页面跳转,在 Fluter 中都是指的是 Route 的跳转,Android 中的页面在 Flutter 中对应 Route,Navigator 负责 Route 对象堆栈的管理,并提供管理堆栈的方法,如 Navigat.
2020-12-22 23:32:24 3144
原创 编译时注解详解及实现ButterKnife
PS:人是一种很乐于接受自我暗示的生物,你给了自己消极暗示,那么你很容易变得颓废,如果你给了自己积极暗示,那么你也会变得积极起来。今天看一下编译时注解的相关知识,相信手动实践后你会更容易理解像 Dagger、ARouter、ButterKnife 等这种使用了编译时注解的框架,也更容易理解其内部源码实现,内容如下:编译时和运行时注解注解处理器APTAbstractProcessorElement和Elements自定义注解处理器使用自定义注解处理器编译时和运行时注解先了解一下编译时.
2020-12-17 23:41:14 498 2
原创 Spring Boot系列MyBatis配置详解
PS:你的状态取决于你的心态,要想不再焦虑,先把生活节奏规律起来。前面几篇文章尝试了接口开发、Thymeleaf 模板、常用语法、模板布局、项目国际化、JDBC 等,阅读本文之前可以阅读前面几篇文章:开发一个接口Thymeleaf模板入门Thymeleaf常用语法Thymeleaf模板布局项目国际化JDBC操作数据库MyBatis 是一款优秀的持久层框架,MyBatis 使用 XML 或者注解来进行配置和映射,可以方便的将 POJO 映射成数据库中的记录。MyBatis工作流程.
2020-12-11 01:11:48 20541
原创 Spring Boot系列之JDBC操作数据库
PS:原文首发于微信公众号:躬行之(jzman-blog)阅读本文之前可以阅读前面几篇:Spring Boot系列之开发一个接口Spring Boot系列之Thymeleaf模板入门Spring Boot系列之Thymeleaf常用语法Spring Boot系列之Thymeleaf模板布局Spring Boot系列之项目国际化JDBC(Java Data Base Connectivity,Java 数据库连接),主要用途就是用于数据库的连接、执行 SQL 语句、处理 SQL 执行结果.
2020-12-01 21:32:06 1284
原创 Spring Boot系列之项目国际化
PS:原文首发于微信公众号:躬行之(jzman-blog)前面几篇文章尝试了接口开发、Thymeleaf 模板、常用语法及模板布局,阅读本文之前可以阅读前面几篇:阅读本文之前可以阅读前面几篇:Spring Boot系列之开发一个接口Spring Boot系列之Thymeleaf模板入门Spring Boot系列之Thymeleaf常用语法Spring Boot系列之Thymeleaf模板布局Spring Boot 项目的国际化实现起来非常简单,为了保证 Spring Boot 系列的连.
2020-11-26 22:55:27 342
原创 Spring Boot系列之Thymeleaf模板布局
PS:原文首发于微信公众号:躬行之(jzman-blog)前面几篇文章尝试了接口开发、Thymeleaf 模板及其常用语法,阅读本文之前可以阅读前面几篇:Spring Boot系列之开发一个接口Spring Boot系列之Thymeleaf模板入门Spring Boot系列之Thymeleaf常用语法Thymeleaf 模板布局主要是为了更好的对前端页面进行划分,主要是通过 Thymeleaf 相关语法来对前端页面布局,主要内容如下:引用模板片段片段表达式语法参数化模板片段移除模.
2020-11-24 01:41:27 585
原创 Spring Boot系列之Thymeleaf常用语法
主题列表:juejin, github, smartblue, cyanosis, channing-cyan贡献主题:https://github.com/xitu/juejin-markdown-themestheme: juejinhighlight: juejin原文首发于微信公众号:躬行之(jzman-blog)上篇文章中简单介绍了 Thymeleaf 模板的依赖、基本属性以及使用方式,下面将从以下几个方面介绍 Thymeleaf 中的常见语法:表达式字符串拼接条件比较s.
2020-11-11 00:56:11 457
原创 Spring Boot系列之Thymeleaf模板入门
原文首发于微信公众号:躬行之(jzman-blog)Thymeleaf 是一个用于 Web 开发的 Java 模板引擎,能够处理 HTML、XML、JavaScript、CSS 甚至纯文本,Spring Boot 推荐使用 Thymeleaf 模板引擎而不是传统的 JSP 技术,主要内容如下:引入ThymeleafThymeleaf属性Thymeleaf的使用热部署引入Thymeleaf个人觉得 Gradle 相较 Maven 更简洁,这里是用 gradle 来构建整个 Web 项目.
2020-10-27 00:42:33 433
原创 Spring Boot系列之开发一个接口
原文首发于微信公众号:躬行之(jzman-blog)Spring Boot 是用来简化 Spring 应用程序的开发的,可以减少不必要的配置过程,其主要特性包括 Spring Boot Starter、自动配置、命令行接口、Actuator 等,作为 Android 开发者对 Spring Boot 的学习将以会使用为主,所有文章会基于对应的案例,本篇文章将从以下几个方面介绍如何使用 Spring Boot 开发一个接口:Spring Boot项目初始化使用IDEA创建Spring Boot项目.
2020-10-13 01:16:14 3275
原创 设计模式之迭代器设计模式
原文首发于微信公众号:躬行之(jzman-blog)迭代器设计模式是一种常用的设计模式,用于提供一种方法顺序访问一个聚合对象中的各种元素,但是又不暴露该对象的内部表示,迭代器设计模式属于行为型设计模式。相关概念使用场景Java实现Dart实现相关概念抽象聚合角色:定义添加、删除等操作聚合对象的方法以及创建迭代器的方法;具体聚合角色:抽象聚合角色的具体实现类;抽象迭代器角色:定义迭代器相关方法,比如 hasNxt、first、last等方法;具体迭代器角色:抽象迭代器角色的具体实.
2020-09-29 00:22:03 166
原创 Wireshark分析验证TCP协议
原文首发于微信公众号:躬行之(jzman-blog)最近特意书梳理了一下 TCP 相关的知识,并通过抓包进行了验证,并分析了从 TCP 建立连接到端来连接的全过程,相信以前和我一样上课没懂的看完这篇文章应该差不多懂了。TCP 提供的是一种面向连接的、可靠的字节流服务,也就是说两个 TCP 的应用在交换数据之前必须建立一个 TCP 连接,且在一个 TCP 连接中仅有两方进行通信,TCP 和 UDP 都使用相同的网络层。使用 TCP 发送数据时,数据会被分割成 TCP 认为最适合发送的数据块,这一点与.
2020-09-27 00:23:52 711
原创 普及一下IPTV行业
原文首发于微信公众号:躬行之(jzman-blog)机顶盒起源于 20 世纪 90 年代欧美国家,主要用于保护版权和收取收视费,有线电视台在电视机前加一个密钥盒。只有交了费的用户才能正常收看电视,这就是最初机顶盒的原型。后来随着互联网技术的不断发展出现了具备上网功能的机顶盒,但是市场反响一般。20 世纪 90 年代后期,随着美国和欧洲 DTV(数字电视)和 HDTV(高清晰度数字电视)试播之后,掀起了机顶盒发展的高潮,这次机顶盒的主要作用是普通模拟电视机收看数字电视或数字高清晰度电视,这种机顶盒就是.
2020-09-24 23:57:33 2929
原创 单链表及其反转
原文首发于微信公众号:躬行之(jzman-blog)单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点由元素和指针构成,元素是存储数据的存储单元,指针是连接每个结点的地址数据,本文将介绍什么是单链表以及单链表的翻转,主要内容如下:什么是单链表遍历反转单链表递归反转单链表什么是单链表对于单链表的每个结点,都有两块存储区域,一块存储对应节点的数据,另一块存储该节点的下一个结点的地址,可以称之为后继指针(next),单链表图示.
2020-09-22 23:55:38 832
原创 自定义View中为何match_parent和wrap_content效果一样
原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!今天来分享一个我在自定义 View 中遇到的问题,如果分析有误,还望各位指出,在自定义 View 的过程中一定会遇到一个问题,自定义 View 没有问题,唯独在自定义的 View 中 match_parent 和 wrap_content 效果一致,onMeasure() 方法如下:/** * * 测量View的宽度和高度,这个方法由 measure方法调用,一般由子类重写该方法以提供更加精确和高效的测量 * * 规定:当重.
2020-09-21 00:49:32 1018
原创 LayoutInflater.Factory使用及源码解析
PS:原文首发于微信公众号:躬行之(jzman-blog)LayoutInflater.Factory 是提供给你的一个加载布局使用的回调接口(Hook),可以使用 LayoutInflater.Factory 来自定义布局文件,实际上就是可以在 LayoutInflater.Factory 的回调中可以根据对应的 Tag 来修改某个 View,然后返回出去,LayoutInflater.Factory 源码如下:// LayoutInflater.javapublic interface Fac.
2020-09-15 23:38:17 719
原创 Android Jetpack组件之Paging Library源码篇
PS:原文首发于微信公众号:躬行之(jzman-blog)阅读本文之前,可先阅读同系列 Android Jetpack 组件文章如下 :Android Jetpack组件之Lifecycle篇Android Jetpack组件之LiveData详解Android Jetpack组件之ViewModel篇Android Jetpack组件之DataBinding详解Android Jetpack组件之使用可观察的数据对象Android Jetpack组件之Paging Library使用篇.
2020-08-31 00:31:37 173
原创 Android Jetpack组件之Paging Library使用篇
PS:原文首发于微信公众号:躬行之(jzman-blog)阅读本文之前,可先阅读同系列 Android Jetpack 组件文章如下 :Android Jetpack组件之Lifecycle篇Android Jetpack组件之LiveData详解Android Jetpack组件之ViewModel篇Android Jetpack组件之DataBinding详解Android Jetpack组件之使用可观察的数据对象本文将介绍 Paging Library 库的使用,其源码解析将在下.
2020-08-19 01:26:38 343 6
原创 Android Jetpack组件之使用可观察的数据对象
PS:原文首发于微信公众号:躬行之(jzman-blog)可观察性是指某个对象变化通知其他数据的能力,主要有三种可观察类型:字段对象集合使用数据绑定可对数据对象提供在数据更改时通知其他数据更改的能力,将一个可观察数据对象绑定到 UI 上,当数据对象的属性发生变化可自动更新 UI。字段如果某个类只有几个属性,为了使得这些对象具有观察数据变化的能力,可以使用可观察字段(Observable fields)来实现,databinding 中提供了这样的通用 Observable 类,包括八种.
2020-06-30 00:03:03 519 2
原创 Android Jetpack组件之BindingAdapter详解
PS:原文首发于微信公众号:躬行之(jzman-blog)上篇主要是 DataBinding 的基本使用,Android Jetpack 组件系列文章如下 :Android Jetpack组件之Lifecycle篇Android Jetpack组件之LiveData详解Android Jetpack组件之ViewModel篇Android Jetpack组件之DataBinding详解本篇文章主要介绍 Binding adapters 的使用方式,内容如下:databinding机制.
2020-06-12 00:02:58 8538 8
原创 Android Jetpack组件之DataBinding详解
原文首发于微信公众号:躬行之(jzman-blog)前面总结了 ViewModel、LiveData 及 Lifecycle 架构组件的使用,可先阅读下面文章详细了解:Android Jetpack组件之Lifecycle篇Android Jetpack组件之LiveData详解Android Jetpack组件之ViewModel篇本篇主要侧重 dataBinding 的基本使用,主要内容如下:dataBinding支持布局文件配置绑定数据特殊表达式事件绑定自定义绑定类O.
2020-05-25 07:36:23 914 2
原创 Android Jetpack组件之ViewModel篇
PS:原文首发于微信公众号:躬行之(jzman-blog)前面学习了 LiveData 和 Lifecycle 架构组件的使用:Android Jetpack组件之Lifecycle篇Android Jetpack组件之LiveData篇ViewModel 具有生命周期意识,会自动存储和管理 UI 相关的数据,即使设备配置发生变化后数据还会存在,我们就不需要在 onSaveInstanceState 保存数据,在 onCreate 中恢复数据了,使用 ViewModel 这部分工作就不需要我.
2020-05-11 00:04:01 976
原创 Android Jetpack组件之LiveData详解
PS:原文首发于微信公众号:躬行之(jzman-blog)LiveData 是一个可观察的数据持有者类,与常规 observable 不同,LiveData 是生命周期感知的,LiveData 也是 Android Jetpack 组件的一部分,本文将从如下几个方面学习 LiveData:什么是LiveDataLiveData的优点LiveData的使用自定义LivedataLi...
2020-04-08 00:19:36 1232
原创 Android Jetpack组件之Lifecycle-Aware组件使用及源码解析
PS:原文首发于微信公众号:躬行之(jzman-blog)Lifecycle-Aware 组件是 Android Jetpack 的一部分,该组件可以感知 Activity 和 Fragment 的生命周期状态的改变,有利于生成更易组织、更轻量化、更易于维护的代码,常用的开发方式就是在组件的对应的生命周期方法中处理相关业务逻辑,这种方式会导致不良代码的产生以及 bug 的增加,如果使用生命周...
2020-04-02 00:38:55 289
原创 HTTPS及加密算法,看这一篇就够了
PS:坚持就是最大的超越。最近交流群里有人问 HTTPS 相关的知识,虽然会用,但是却一知半解,今天专门来总结一些 HTTPS 相关的知识点,这一篇主要是相关理论知识,下一篇写个案例实践一下,主要内容如下:HTTP的缺点什么是HTTPS公开密钥加密技术HTTPS加密传输公开密钥证书SSL和TLS为什么不使用HTTPSHTTP的缺点HTTP 的缺点如下:通信使用明文...
2020-03-24 23:38:12 4131 6
原创 时间复杂度和空间复杂度
时间复杂度和空间复杂度可以帮助我们根据具体的平台选择合适的算法,要学会以空间换时间或以时间换空间的设计思想,如在单片机等一般是内存空间比较紧张,在追求最优算法时应该可以适当以时间来换空间进行设计,当然在大内存设备上可以选择以空间换时间的设计思想来设计最优算法,所以,时间和空间复杂度可在一定的限制条件下作为判断某个算法或代码块运行快慢的判断方式,主要从如下几个方面了解和学习时间和空间复杂度:数据...
2020-03-22 21:05:04 211
原创 设计模式之外观设计模式
PS:输入倒逼输出,想持续输出就得持续输入,每天的坚持很小,但是如果坚持一年呢,甚至更长时间呢,结果不一定很美好,但是过程一定很充实。今天温习一下外设计模式,可以选择阅读同系列文章:提到外观设计模式,就不得不提到设计模式的六大原则之一的迪米特法则,本篇文章将从如下几个方面介绍外观设计模式:迪米特法则如何理解外观设计模式实现外观设计模式迪米特法则开发中经常会遇到类与类之间的关...
2020-03-17 00:52:11 199
原创 Android组件化之ARouter的使用
原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!前面两篇文章分别介绍了 Android 组件化基础知识以及 Android 组件化过程 Application 的相关知识,在阅读本文之前可以先阅读下面两篇文章:Android组件化基础Android组件化之ApplicationAndroid 组件化过程中涉及到不同 module 之间界面的跳转也是分厂重要的,如...
2020-03-10 22:45:58 2546 2
原创 Android组件化之Application
上一篇文章笼统的总结了一下组件化开发的一些基础性问题,本篇文章继续组件化的学习,主要分如下三个方面介绍组件化中的 Application 如下:Application的作用合并Application动态配置ApplicationApplication的作用Androuid 应用的启动的时候最先启动的就是 Application,每个 App 运行时仅创建唯一一个 Applicatio...
2019-12-25 22:44:59 2324
录音文件amr转MP3
2018-02-09
Android使用Mina与服务器通信Demo(包括服务端)
2017-09-12
支付宝官方Demo(亲测)
2017-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人