AndroidKt
分享 Android、Kotlin、Flutter 以及 OpenCV 等移动开发知识。
展开
-
Retrofit SOAP协议实践
前言作为 Android 开发,平时和后端聊得最多的除了喝酒就是接口。常用语:Restful 和 WebService,前者现在聊得多,后者以前聊得多。默认含义分别为:Restful:HTTP 协议 和 JSON 格式WebService:特指 Soap 协议 和 XML 格式针对基于 HTTP 协议且格式为 JSON 的 Restful 接口,Android 客户端一般采用 Retrofit + Gson/Moshi 的方案解决。而针对 Soap 协议 和 XML 格式的 Soap Web原创 2022-02-11 08:14:25 · 252 阅读 · 0 评论 -
Paging 3 分组列表
前言为什么命名为 “Android Jetpack” ?Android JetPack = Android Jet Pack = 安卓喷气发动机组件。再看看下面这个直冲云霄的 Android 机器人,是不是觉得还挺有意思?虽说天天混迹技术社区耳濡目染 Android Jetpack,但是鲜有机会实践。今天就从 Paging3 开始,上手这套组件。Paging3 是 Google 推出的一个应用于Android平台的分页加载库。相较于历史版本,Paging3 功能更丰富、更易用。主要优势如下:原创 2022-01-23 16:28:15 · 1868 阅读 · 0 评论 -
Activity Result API,顺手
今天打开 Typora 写作时,发现这款陪伴自己多年的工具终于发布了正式版本且以购买序列号的形式落地产品变现,毫无迟疑,第一时间购买序列号支持,付费是对产品和知识的助力,用爱发电很难持续,希望开发这款工具的开发者伴随工具越来越好。前言启动另一个 activity(无论是应用中的 activity 还是其他应用中的 activity)不一定是单向操作。很多场景下,我们启动另一个 activity 是为了接收返回的结果。例如,应用可启动相机应用并接收拍摄的照片作为结果。在过去的很长一段时间里,开发者皆是.原创 2021-11-28 17:51:07 · 759 阅读 · 0 评论 -
inline, noinline, crossinline傻傻分不清楚
本文同步发表于我的微信公众号,扫描左侧二维码即可关注。概念内联函数(inline function):在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展);也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方(上下文),从而节省了每次调用函数带来的额外时间开支。但在选择使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多的比较复杂的函数进行内联扩展将带来很大的存储资源开支。另外还.原创 2021-02-18 19:31:08 · 1028 阅读 · 0 评论 -
结合Android去水印程序谈谈分区存储
前言为了方便个人更新微信状态,上周花半天时间编写简单的抖音去水印APP。热心的小伙伴发现在Android11上无法保存视频。震惊,土豪竟然都是高端大气Android11。于是乎,分区存储的适配工作必须给土豪安排上。分区存储为了让用户更好地管理自己的文件并减少混乱,以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被赋予了对外部存储空间的分区访问权限,即分区存储。此类应用在不请求任何与存储相关的用户权限时,只能访问外部存储空间上的应用专属目录,以及本应用所创建的特定类型原创 2021-02-12 18:15:43 · 354 阅读 · 0 评论 -
Kotlin Flow场景化学习
目录结构何为Kotlin Flow?Flow,直接翻译就是“流”,如何理解呢?生活中,我们有水流,人流,车流等;开发中,我们有字节流,视频流等。参考这些内容,我们就很好理解”流“的概念,连续的内容输出形成“流”。Android技术层面上,使用过RxJava的朋友对生产者-消费者模式以及数据流的概念如数家珍,而Kotlin Flow是以协程为基础进行连续内容输出的开发库,实现与RxJava相似的功能,但是与Android结合更紧密,因为它是“亲儿子”。为何需要Kotlin Flow?RxJava相原创 2021-01-17 16:32:45 · 2204 阅读 · 4 评论 -
Kotlin协程场景化学习
何为Kotlin协程?协程是一种并发设计模式,Kotlin协程是一个线程框架。为什么需要Kotlin协程?提供方便的线程操作API,编写逻辑清晰且简洁的线程代码。协程是Google在 Android 上进行异步编程的推荐解决方案。具有如下特点:轻量:您可以在单个线程上运行多个协程,因为协程支持挂起,不会使正在运行协程的线程阻塞。挂起比阻塞节省内存,且支持多个并行操作。内存泄漏更少:使用结构化并发机制在一个作用域内执行多项操作。内置取消支持:取消操作会自动在运行中的整个协程层次结构内传播。J原创 2021-01-03 10:18:48 · 583 阅读 · 0 评论 -
Jetpack ViewModel 基本使用
简介ViewModel,直接翻译过来就是"视图模型",再换个说法,其实就是"界面模型"。界面,在Android系统中通常采用Activity和Fragment来承载。那么,“界面模型”,我理解就是用于处理界面数据,界面逻辑等内容的载体,便于分担传统MVC架构中Controller角色的职责。由此,可总结ViewModel的基本作用:数据持久化如果系统销毁或重新创建界面控制器,则存储在其中的任何临时性界面相关数据都会丢失。例如,应用的某个 Activity 中可能包含用户列表。因配置更改而重新创建原创 2020-08-29 15:25:06 · 1862 阅读 · 0 评论 -
Jetpack Paging3 基本使用
Paging3Paging3,是Jetpack提供给开发者用来显示本地或者网络数据集的分页库。针对这类场景,传统的做法是用RecyclerView的加载更多来实现分页加载,很多逻辑需要自行处理且不一定完善。Paging3相当于是官网提供的一套解决方案。特点每一页的数据会缓存至内存中,以此保证处理分页数据时更有效的使用系统资源内置请求重复数据删除功能,确保应用有效地使用网络带宽和系统资源支持Kotlin协程、Flow、LiveData以及RxJava内置错误处理支持,如刷新和重试功能。逻原创 2020-08-02 21:34:08 · 5501 阅读 · 6 评论 -
Moshi
Moshi文章为对Moshi官方介绍的简单翻译。方便个人学习,加深印象。官方介绍:https://github.com/square/moshi基础用法依赖Maven<dependency> <groupId>com.squareup.moshi</groupId> <artifactId>moshi</artifactId> <version>1.9.2</version></depend翻译 2020-05-24 18:45:00 · 634 阅读 · 0 评论 -
《Android 进阶( 六)》Simple SlideToggleView For Android
SlideToggleView原创 2019-01-12 09:22:41 · 484 阅读 · 0 评论 -
《Android 进阶(五)》应用分享简单实现-LazyApkShare
LazyApkShare分享当前应用的简单实现。添加依赖Gradle步骤一. 根目录下build.gradleallprojects { repositories { maven { url 'https://jitpack.io' } }}步骤二. 添加依赖dependencies { implementation 'com.github...原创 2018-10-28 11:23:17 · 747 阅读 · 0 评论 -
《Android 基础(四十九)》Navigation Of JetPack【译】
介绍Jetpack是Android软件组件的集合,可以使你更轻松地开发出色的Android应用程序。这些组件可帮助你遵循最佳实践,免除编写样板代码并简化复杂任务,因此你可以专注于开发者更关系的业务代码。Jetpack包含androidx.*库中,与平台API分开。这意味着它提供向后兼容性并且比Android平台更频繁地更新,确保你始终可以访问最新和最好的Jetpack组件版本。Navigat...翻译 2018-10-14 17:13:24 · 1285 阅读 · 0 评论 -
《Android 进阶(四)》自定义组织机构图-LazyOrgView
LazyOrgView通过自定义View简单实现组织结构图。在网上搜索并没有发现类似的View,由于项目需要,快速实现一个满足项目需求。另外一种实现方式:Google OrgChart或者其他OrgChart.js。源码地址LazyOrgView添加依赖Gradle步骤 1. 工程根目录build.gradle 添加如下allprojects { ...原创 2018-08-12 10:24:43 · 1287 阅读 · 6 评论 -
《Android 基础(四十八)》ConstrainLayout【译】
原文地址https://developer.android.google.cn/reference/android/support/constraint/ConstraintLayout介绍ConstrainLayout是一个允许开发者灵活地设置控件的位置和大小的ViewGroup。只要你使用的Android系统版本在9以上,你便可以通过添加依赖的方式来使用ConstrainLayout...翻译 2018-10-01 10:43:23 · 914 阅读 · 0 评论 -
《Android 基础(四十七)》FileProvider
简介FileProvider,是ContentProvider的子类,通过构建以”content://”开头的Uri取代之前以”file://”开头的Uri,以此实现应用间的文件共享。由来官文Android7.0行为变更说明:对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在应用外部公开 file:// URI。如果一...原创 2018-06-30 11:33:31 · 1688 阅读 · 0 评论 -
《Android 进阶(三)》 自定义安全键盘-LazyKeyboard
LazyKeyboardA SecurityKeyBoard for Android. Supporting three kinds of keyboard: Letter, Number, Symbol.InstallationGradleStep 1. Add it in your root build.gradle at the end of repositorie...原创 2018-06-22 21:16:56 · 3583 阅读 · 18 评论 -
《Android 基础(四十六)》 LayerDrawable & layer-list
介绍LayerDrawable 是管理其他可绘制对象阵列的可绘制对象。列表中的每个可绘制对象按照列表的顺序绘制,列表中的最后一个可绘制对象绘于顶部。每个可绘制对象由单一 &amp;lt; layer-list &amp;gt; 元素内的 &amp;lt; item &amp;gt; 元素表示。语法&amp;lt;?xml version=&quot;1.0&quot; encodi原创 2018-06-09 08:34:04 · 648 阅读 · 0 评论 -
《Android 基础(四十五)》 RecyclerView.ItemDecoration源码浅析
前言RecyclerView目前来说,是日常开发中使用最多的控件,功能强大而且复杂。而Item Decoration作为RecyclerView开发过程中不可或缺的部分,需要深入的了解一下。源码分析 /** * An ItemDecoration allows the application to add a special drawing and layout off...原创 2018-04-09 21:48:29 · 378 阅读 · 0 评论 -
《Android 进阶(四)》 自定义View之仿Emui开关控件
仿写一个开关控件自定义View原创 2017-11-09 20:29:23 · 903 阅读 · 0 评论 -
《Android 进阶(三)》 自定义View之支持Gravity的ViewGroup
支持Gravity的自定义ViewGroup自定义View的学习记录原创 2017-10-20 09:39:36 · 2841 阅读 · 0 评论 -
《Android 进阶(一)》 自定义View之仪表盘进度条
自定义View之仪表盘进度条原创 2017-10-13 16:30:18 · 2764 阅读 · 0 评论 -
《Android 进阶(二)》 自定义View之Dota2能力雷达图
1. 前言最近看Dota2的比赛的时候无意在一个应用中看到来一个能力分析的雷达图,就是展示你的各方面数据。你可能看见过这个图。2. 实现思路继承View,复写onDraw。确定N边形和每个边对应的角度;确定多边形外接圆的半径以及圆心(也就是中心点)确定每条半径上的所有点的坐标。确定每条数据在图形上的坐标;确定文字在图形上的位置;采用合适的绘制方式绘制;3...原创 2017-10-17 21:55:47 · 5982 阅读 · 1 评论 -
《Android 基础(四十四)》 View事件分发机制
View&ViewGroup 事件分发原创 2017-09-20 06:57:39 · 937 阅读 · 0 评论 -
《Android 基础(零)》 Android知识框架梳理
我需要学习的Android知识原创 2017-09-23 18:53:55 · 962 阅读 · 0 评论 -
《Android 基础(四十三)》 SnapHelper
SnapHelper学习记录原创 2017-09-16 07:26:09 · 2423 阅读 · 0 评论 -
《Android 基础(四十二)》 MultiDex
MultiDex原创 2017-09-12 21:23:09 · 947 阅读 · 0 评论 -
《Android 基础(四十一)》 ExpandableListView
ExpandableListView简单学习原创 2017-08-27 13:04:27 · 1413 阅读 · 0 评论 -
《Android 基础(四十)》 FlexboxLayout
1. 简介Flexbox-layout,是Google推出的流式布局。具体的基本介绍可以参考Github上的Wiki。看一下类的英文说明: /** * A layout that arranges its children in a way its attributes can be specified like the * CSS Flexible Box Layou...原创 2017-08-19 17:03:46 · 3563 阅读 · 3 评论 -
《Android 基础(三十九)》 SpannableString
SpannableString简单使用原创 2017-08-11 20:13:57 · 1899 阅读 · 2 评论 -
《Android 基础(三十八)》 FragmentTabHost
FragmentTabHost简单实用原创 2017-08-08 13:46:54 · 1122 阅读 · 0 评论 -
《Android 基础(三十七)》 自定义ViewPagerIndicator
Kotlin学习,自定义View学习。实现简单的ViewPagerIndicator原创 2017-07-28 13:48:44 · 1265 阅读 · 0 评论 -
《Android 基础(三十六)》 Spinner
Spinner源码&实战原创 2017-04-09 16:17:23 · 1903 阅读 · 0 评论 -
《Android 基础(三十五)》 RecyclerView多类型Item的正确实现姿势
简介RecyclerView是我们开发过程中经常使用到的一个元素,原生的RecyclerView.Adapter基本上可以满足一般的需求,关于RecyclerView的基础介绍请移步:RecyclerView基础使用关于多类型的Item,原生的Adapter可以通过getItemViewType返回对应的ViewHolder类型,然后在onCreateViewHolder传入的type...原创 2017-01-13 16:12:32 · 6523 阅读 · 9 评论 -
《Android 基础(三十四)》 TabLayout 从头到脚
1. 简介 1.TabLayout给我们提供的是一排横向的标签页 2.#newTab()这个方法来创建新的标签页,然后用过#setText()和#setIcon方法分别修改标签页的文本和图标,创建完成之后,我们需要使用#addtab()方法把他加到TabLayout中显示出来 3.第二种添加标签的方式就是直接在TabLayout布局下添加#TabItem控件 ...原创 2017-01-02 20:33:55 · 2453 阅读 · 0 评论 -
《Android 基础(三十三)》 TabHost ~ 仿微信底部菜单
TabHost介绍和基本使用方式原创 2016-11-30 08:50:44 · 4245 阅读 · 0 评论 -
《Android 基础(三十二)》 ViewFlipper
ViewFlipper的基本使用原创 2016-11-28 09:13:15 · 1273 阅读 · 0 评论 -
《Android 基础(三十一)》 ObjectAnimator
ObjectAnimator简单使用原创 2016-11-23 10:29:45 · 1152 阅读 · 0 评论 -
《Android 基础(三 十)》Fragment (3) ~ PreferenceFragment
PreferenceFragment基本介绍与使用原创 2016-11-18 11:14:19 · 1175 阅读 · 0 评论 -
Android Studio 小技巧(1):如何导入AAR文件
1. 导入AAR/JAR包2. 快速添加Material Design Drawable原创 2016-06-24 23:56:19 · 1331 阅读 · 0 评论