
Android
文章平均质量分 94
Android实践笔记。
躬行之
微信公众号:躬行之,专注Android、Flutter、音视频等领域,在这里能看到和你一样的成长足迹,希望我们在提升技术和认知的道路上走得更远。
展开
-
自定义View实现字母导航控件
PS:如果不能严格内化自己,就没有足够的心理能量进行深度工作。今天分享一个以前实现的通讯录字母导航控件,下面自定义一个类似通讯录的字母导航 View,可以知道需要自定义的几个要素,如绘制字母指示器、绘制文字、触摸监听、坐标计算等,自定义完成之后能够达到的功能如下:完成列表数据与字母之间的相互联动;支持布局文件属性配置;在布局文件中能够配置相关属性,如字母颜色、字母字体大小、字母指示器颜色等属性;主要内容如下:自定义属性Measure测量坐标计算绘制显示效果自定义属性在 v.原创 2021-02-24 00:18:58 · 202 阅读 · 0 评论 -
Android多进程运行机制及IPC
今天总结下 Android 多进程运行机制以及 IPC 介绍,内容如下:Android中的进程Android IPC介绍开启多进程模式Android多进程运行机制Android中的进程首先进程可以理解为独立运行的程序,当某个程序启动时,系统将会为该程序创建一个进程,并为其分配所需的系统资源,同时将该进程添加到进程就绪队列中,进程调动程序负责运行哪一个进程。Android 中的应用程序可以为一个进程,也可以配置成多进程,每个进程都在自己独立的空间中运行,Android 为每个进程分配一个虚拟原创 2021-01-18 01:00:45 · 160 阅读 · 0 评论 -
编译时注解详解及实现ButterKnife
PS:人是一种很乐于接受自我暗示的生物,你给了自己消极暗示,那么你很容易变得颓废,如果你给了自己积极暗示,那么你也会变得积极起来。今天看一下编译时注解的相关知识,相信手动实践后你会更容易理解像 Dagger、ARouter、ButterKnife 等这种使用了编译时注解的框架,也更容易理解其内部源码实现,内容如下:编译时和运行时注解注解处理器APTAbstractProcessorElement和Elements自定义注解处理器使用自定义注解处理器编译时和运行时注解先了解一下编译时.原创 2020-12-17 23:41:14 · 522 阅读 · 2 评论 -
普及一下IPTV行业
原文首发于微信公众号:躬行之(jzman-blog)机顶盒起源于 20 世纪 90 年代欧美国家,主要用于保护版权和收取收视费,有线电视台在电视机前加一个密钥盒。只有交了费的用户才能正常收看电视,这就是最初机顶盒的原型。后来随着互联网技术的不断发展出现了具备上网功能的机顶盒,但是市场反响一般。20 世纪 90 年代后期,随着美国和欧洲 DTV(数字电视)和 HDTV(高清晰度数字电视)试播之后,掀起了机顶盒发展的高潮,这次机顶盒的主要作用是普通模拟电视机收看数字电视或数字高清晰度电视,这种机顶盒就是.原创 2020-09-24 23:57:33 · 3039 阅读 · 0 评论 -
自定义View中为何match_parent和wrap_content效果一样
原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!今天来分享一个我在自定义 View 中遇到的问题,如果分析有误,还望各位指出,在自定义 View 的过程中一定会遇到一个问题,自定义 View 没有问题,唯独在自定义的 View 中 match_parent 和 wrap_content 效果一致,onMeasure() 方法如下:/** * * 测量View的宽度和高度,这个方法由 measure方法调用,一般由子类重写该方法以提供更加精确和高效的测量 * * 规定:当重.原创 2020-09-21 00:49:32 · 1071 阅读 · 0 评论 -
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 · 750 阅读 · 0 评论 -
HTTPS及加密算法,看这一篇就够了
PS:坚持就是最大的超越。最近交流群里有人问 HTTPS 相关的知识,虽然会用,但是却一知半解,今天专门来总结一些 HTTPS 相关的知识点,这一篇主要是相关理论知识,下一篇写个案例实践一下,主要内容如下:HTTP的缺点什么是HTTPS公开密钥加密技术HTTPS加密传输公开密钥证书SSL和TLS为什么不使用HTTPSHTTP的缺点HTTP 的缺点如下:通信使用明文...原创 2020-03-24 23:38:12 · 4616 阅读 · 6 评论 -
Android组件化之Application
上一篇文章笼统的总结了一下组件化开发的一些基础性问题,本篇文章继续组件化的学习,主要分如下三个方面介绍组件化中的 Application 如下:Application的作用合并Application动态配置ApplicationApplication的作用Androuid 应用的启动的时候最先启动的就是 Application,每个 App 运行时仅创建唯一一个 Applicatio...原创 2019-12-25 22:44:59 · 2373 阅读 · 0 评论 -
Android组件化基础
原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!当 App 项目复杂一定的程度,将项目组件化是必不可少的,组件化可以更好的进行功能的划分,提到组件化有人可能会想到模块化,其实组件化和模块化的本质是一样的,都是为了代码重用的业务解耦,模块化主要按照业务划分,而组件化主要按照功能划分,从组件化最基础的几个方面打开组件化的大门。组件之间的跳转动态创建资源冲突静态常量...原创 2019-12-22 23:34:34 · 243 阅读 · 0 评论 -
如何正确编译ijkplayer
原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!最近项目中可能需要视频播放,而且后期还可能要支持播放 rtsp 协议的视频,权衡了一下还是通过编译 B 站开源的 ijkplayer 吧,ijkplayer 是一个基于 ffmpeg 的轻量级的可在 Android 和 Ios 上使用的跨平台播放器,可以通过编译来实现更多格式的支持,可以说只要是 ffmpeg 支持的格式...原创 2019-12-17 21:59:45 · 372 阅读 · 0 评论 -
如何上传Android库项目的到JCenter
原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!上篇文章实现了一个日期时间选择器,github 地址如下:https://github.com/jzmanu/MDatePickerSample直接使用 gradle 依赖即可:compile 'com.manu:MDatePicker:1.0.0'也可以查看上篇文章的详细介绍或在文末点击阅读原文查看,这里顺便将...原创 2019-12-11 23:41:49 · 218 阅读 · 0 评论 -
手把手教你实现实现一个Android日期选择器
通过自定义 View 来实现一个时期时间选择器,可以放在底部也可以放在中间位置弹出,先来一张效果图:下面简述一下实现过程:基本思路Baseline计算如何实现滚动具体绘制MDatePickerDoialog的实现MDatePickerDoialog的设置MDatePickerDoialog的使用基本思路日期选择器的一个最基本元素都是一个可以随意设置数据的一个滚轮,这里也是...原创 2019-12-09 00:08:29 · 1051 阅读 · 4 评论 -
onTouch和onClick 的那些事儿
原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!事件的分发流程可以说基本上已经阐述清楚,在阅读本篇文章之前,请先阅读下面几篇文章:Android 事件分发之基础Android事件分发之源码分析Android事件分发之流程分析还有一个问题是 Android 事件传递过程中 onTouch 和 onClick 事件在整个事件过程中是如何进行事件传递的,下面主要是关...原创 2019-12-04 21:48:14 · 362 阅读 · 0 评论 -
Android事件分发之流程分析
原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!上篇文章中主要针对 Activity、ViewGroup 以及 View 中的相关事件方法进行了基本概述,下面主要以案例的方式对 Android 中的事件传递进行归纳。默认的事件分发流程事件分发事件处理事件拦截总结阅读本篇文章之前请先阅读:Android 事件分发之基础Android事件分发之源码分析...原创 2019-12-01 22:41:43 · 181 阅读 · 0 评论 -
Android事件分发之源码分析
原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!上篇文章中叙述了 Android 事件分发的大致流程,下面从 Activity、ViewGroup、View 三个方面介绍事件的相关方法,小节如下:ActivityViewGroupView阅读本篇文章之前请先阅读:Android 事件分发之基础ActivityActivity中主要两个与事件传递相关...原创 2019-11-24 18:04:00 · 289 阅读 · 0 评论 -
Android 8.0自适应图标
原文首发于微信公众号:jzman-blog,欢迎关注交流!Android 8.0 引入了自适应应用启动图标,可在不同的设备中显示不同的图标,如自适应图标可以在一台设备上显示为圆形,在另一台设备上显示为方形,每个 OEM 厂商都会提供一个 mask,系统会自动将自适应图标渲染成相同的形状,自适应图标也可以使用到设置、分享等想保持统一图标风格的位置。自适应图标支持的 mask 因不同设备而不同...原创 2019-09-25 22:47:51 · 1556 阅读 · 0 评论 -
Android 7.0应用之间共享文件
原文首发于微信公众号:jzman-blog,欢迎关注交流!开发中经常需要将某个文件向另一个应用程序传递,如图片上传到另一个应用程序、文件在不同存储路径之间的复制粘贴等都需要共享文件,可以这样理解接收文件的应用是在向提供文件的应用发送请求。从 Android 7.0 开始,Android 执行 StrictMode 策略,禁止在应用外部公开 file://URL,如果在 Android 7....原创 2019-09-23 22:24:27 · 520 阅读 · 0 评论 -
Android动画系列之属性动画
原文首发于微信公众号:jzman-blog,欢迎关注交流!属性动画相较帧动画和补间动画更强大,帧动画和补间动画只能应用于 View 及其子类,而属性动画可以修改任何对象的属性值,属性值可在指定的一段时间内自动改变,根据对象属性值的变化进而实现更复杂的动画。属性动画的常用设置ValueAnimatorObjectAnimator关键帧插值器和估值器属性动画的常用设置下面是属性...原创 2019-09-21 22:56:41 · 128 阅读 · 0 评论 -
Android动画系列之帧动画和补间动画
原文首发于微信公众号:jzman-blog,欢迎关注交流!Android 提供三种动画:帧动画、补间动画和属性动画,本篇文章介绍帧动画以及补间动画的使用,属性动画的使用将在后面的文章中分享,那就来复习一下这两种动画的使用吧。FrameAnimationFrameAnimation 即逐帧动画,通俗来说就是按照图片动作顺序依次播放来形成动画,创建 FrameAnimation 可用 xml...原创 2019-09-19 00:21:22 · 232 阅读 · 0 评论 -
Android如何使用注解进行代码检查
原文首发于微信公众号:jzman-blog,欢迎关注交流!Android Studio 内置了代码检查工具 Lint,可在菜单栏选择 Analyze > Inspect Code 执行相应的代码检查,代码检查能够根据推断一些不合法的潜在问题,有助于在开发阶段发现开发者因为主管原因导致的一下代码问题,Android 官方提供了注解库 support-annotations 来帮助开发者...原创 2019-06-20 23:47:08 · 1435 阅读 · 0 评论 -
Android数据库框架DBFlow的使用
原文首发于微信公众号:jzman-blog,欢迎关注交流!DBFlow 是一个基于注解处理器开发的使用方便的 ORM Android 数据库,该库简化了很多多余的代码,并且提供了好用的 API 来处理与数据库的交互,让开发者专注 App 的开发。下面将从以下几个方面来学习 DBFlow 数据库框架的使用,具体如下: 1. DBFlow 的优势 2. 配置 DBFlow 3. 创建...原创 2018-04-19 23:41:27 · 1994 阅读 · 0 评论 -
Material Design组件之AppBarLayout
AppBarLayout 是一个垂直方向的 LinearLayout,它实现了许多符合 Material Design 设计规范的状态栏应该具有的功能,比如滚动手势。AppBarLayout 一般直接用作 CoordinatorLayout 的直接子对象,如果 AppBarLayout 在别的布局中使用,其大部分功能会失效,AppBarLayout 需要一个标示才能够知道滚动视图什么时候滚动,...原创 2018-07-24 00:24:49 · 430 阅读 · 0 评论 -
Material Design组件之FloatingActionButton
Material Design 设计规范在 Google I/O 2014 推出,这种设计理念一经推出就受到广大开发者的喜爱,主要侧重于纸墨化创作和突出设计的实体感,使得设计更接近于真实世界,力求平滑、连续的交互方式与用户体验,这种设计规范更能促进 Android 生态系统的发展,为此,Google 提供了一系列的符合 Material Design 风格的控件,如 FloatingActionB...原创 2018-07-15 16:55:05 · 497 阅读 · 0 评论 -
Material Design 组件之 CollapsingToolbarLayout
CollapsingToolbarLayout 主要用于实现一个可折叠的标题栏,一般作为 AppBarLayout 的子 View 来使用,下面总结一下 CollapsingToolbarLayout 的使用。Material Design 系列文章: - Material Design 组件之 FloatingActionButton - Material Design 组件之 AppB...原创 2018-07-27 00:12:20 · 298 阅读 · 0 评论 -
Material Design 组件之NavigationView
今天来看一下 NavigationView 的使用,NavigationView 是一个标准的导航菜单,其菜单内容由菜单资源文件来填充,NavigationView 一般和 DrawerLayout 一起搭配使用构成抽屉菜单,分别由内容页和菜单页组成。基本布局可以直接使用 DrawerLayout 作为根布局,里面依次是内容布局和菜单布局,切记内容布局一定是在菜单布局的前面,可以这样理...原创 2018-07-31 21:08:51 · 706 阅读 · 0 评论 -
天地图之定位信息详解
最近的项目涉及到百度地图的使用,项目组通知使用天地图替代百度地图,一个原因是天地图是国家测绘地理信息局建设的,企业可以使用其公众版本进行开发以提供相关的地图信息服务,较其他地图具有权威性,当然天地图提供的服务是否较其他地图更具有权威性和实时性,这个作为普通开发者是不能确定的,另一个原因是减少运用成本,我觉得是否真能达到这样的目标真不一定,毕竟商业地图输出能力还是较免费版本更强。还是先来开始天地图 ...原创 2018-08-15 00:23:32 · 10233 阅读 · 6 评论 -
Mob之短信验证集成SMSSDK
开相关发中总会遇到短信验证这些操作,这周没有来得及写新的东西,借此分享一篇以前学习短信验证的笔记,本文使用的是 Mob 提供的 SMSSDK .下载 SMSSDK官网下载地址:SMSSDK集成 SMSSDK将 MobCommons.jar、MobTools.jar、SMSSDK-2.0.1.aar、SMSSDKGUI-2.0.1.aar 放到了app 的 libs 目...原创 2018-08-28 00:07:51 · 760 阅读 · 5 评论 -
Mob之社会化分享集成ShareSDK
接着上篇顺便分享一篇自己使用 ShareSDK 的笔记,上篇我们集成了 SMSSDK 完成了短信接收验证码的功能,请参考Mob 之 短信验证集成 SMSSDK,如何在项目已经集成 SMSSDK 的情况下集成 ShareSDk 到项目中,上一篇中我们集成 SMSSDK 使用的是导入 jar 包的形式,这里我们使用创建 module 的方式引入 ShareSDk,主要内容如下:下载ShareSD...原创 2018-09-10 22:25:07 · 525 阅读 · 0 评论 -
封装一个通用的PopupWindow
上篇文章是关于建造者设计模式的,今天顺便封装一个通用的 PopupWindow 来实践一下, 同时也方便以后使用 PopupWindow,本文将从下面几个方面来介绍 PopupWindow 及其封装,具体如下:概述常用方法基本使用封装 PopupWindow使用封装后的PopupWindow显示效果概述PopupWindow 表示一个弹窗,类似于 AlertDialog,相较 ...原创 2018-10-17 19:27:38 · 335 阅读 · 0 评论 -
WebView的基本使用及相关特性
WebView 是一个显示网页内容的组件,可以显示网络上的一些在线内容并且可以作为 Web 浏览器滚动显示的内容,它使用 WebKit作为渲染引擎来显示网页,里面包括放大、缩小、执行文本搜索等进行前后导航的方法。注意 :如果要在 WebView 中显示在线网页等内容时,需要在 AndroidManifest.xml 文件中添加网络权限,参考如下:<uses-permission andr...原创 2018-12-18 23:52:33 · 443 阅读 · 0 评论 -
WebView中Java与JavaScript的交互
Android 开发过程中 WebView 的使用比较广泛,常用来加载网页,比如使用 WebView 加载新闻页面、使用 WebView 打开本应用的链接以及用 WebView 显示支付信息页面等,那么如何 Android 开发中如何与 WebView 中的内容进行交互呢,这种交互主要就是 Java 与 JavaScript 之间的互相调用。下面实现一下如何响应 WebView 中图片的点击事件。...原创 2019-01-10 23:26:20 · 953 阅读 · 1 评论 -
Bitmap之位图采样和内存计算详解
Android 开发中经常考虑的一个问题就是 OOM(Out Of Memory),也就是内存溢出,一方面大量加载图片时有可能出现 OOM, 通过采样压缩图片可避免 OOM,另一方面,如一张 1024 x 768 像素的图像被缩略显示在 128 x 96 的 ImageView 中,这种做法显然是不值得的,可通过采样加载一个合适的缩小版本到内存中,以减小内存的消耗,Bitmap 的优化主要有两个方...原创 2019-03-01 00:09:01 · 843 阅读 · 0 评论 -
Bitmap之内存缓存和磁盘缓存详解
原文首发于微信公众号:jzman-blog,欢迎关注交流!Android 中缓存的使用比较普遍,使用相应的缓存策略可以减少流量的消耗,也可以在一定程度上提高应用的性能,如加载网络图片的情况,不应该每次都从网络上加载图片,应该将其缓存到内存和磁盘中,下次直接从内存或磁盘中获取,缓存策略一般使用 LRU(Least Recently Used) 算法,即最近最少使用算法,下面将从内存缓存和磁盘缓...原创 2019-03-20 23:46:07 · 790 阅读 · 0 评论 -
Android进阶AIDL使用自定义类型
原文首发于微信公众号:jzman-blog,欢迎关注交流!上篇文章中主要介绍从 AIDL 的使用方式以及 Android 开发中不同进程之间的通信,遗留的问题是如何在 AIDL 中使用自定义类型,具体步骤如下: 1. 创建自定义类型 2. 声明自定义类型 3. 定义与自定义类型相关的业务 4. 重写业务实体类 5. 远程调用 6. 验证 AIDL1. 创建自定义类型...原创 2018-04-08 00:21:25 · 2426 阅读 · 0 评论 -
天地图之添加覆盖物
最近多少还是会有一点焦虑,其实很大一部分原因是考虑的比较多罢了,适当的放弃一些东西,一切就会变的明朗起来。接着上一篇继续来学习天地图 Android SDK ,地图开发中除了常见的定位需求,还有就是覆盖物的添加,比如最近的项目是有关风险管控的,在地图上就要显示对应的风险点,下面的今天的内容:单个覆盖物多个覆盖物集合覆盖物文字覆盖物总结测试效果单个覆盖物这里...原创 2018-08-22 00:13:05 · 4970 阅读 · 0 评论 -
RecyclerView实现拖动排序和滑动删除功能
RecyclerView 的拖动排序需要借助一下 ItemTouchHelper 这个类,ItemTouchHelper 类是 Google 提供的一个支持 RecyclerView 滑动和拖动的一个使用类,下面使用该类实现 RecyclerView 的滑动删除和拖动排序功能。首先大概介绍一下 ItemTouchHelper 的一个内部抽象类 Callback 类。 ItemTouchHelper原创 2017-07-31 23:20:57 · 749 阅读 · 0 评论 -
Android进阶之AIDL的使用详解
原文首发于微信公众号:jzman-blog,欢迎关注交流!AIDL(Android 接口定义语言),可以使用它定义客户端与服务端进程间通信(IPC)的编程接口,在 Android 中,进程之间无法共享内存(用户空间),不同进程之间的通信一般使用 AIDL 来处理。主要流程就是在 .aidl 文件中定义 AIDL 接口,并将其添加到应用工程的 src 目录下,创建完成之后 rebui...原创 2018-03-20 22:52:08 · 1253 阅读 · 0 评论