Android高级开发
文章平均质量分 90
mrRuby
这个作者很懒,什么都没留下…
展开
-
了解原码、反码、补码以及Java中byte的读写
一、前言平时的App应用层开发中,很少和byte打交道,最近刚做了一个和硬件设备交互的产品,通信使用UDP,交互协议就是自己定义的协议,每个数据包中分别定义不同的字节数来代表不同的意义,比如:字节号信息内容字节数码值说明1-2数据头20x3e80x3e83工作状态1bit0-bit70x00:待机;0x01:发射……………要了解这块内容,必须要了解二进。字节是二进制数据的单位,一个字节通常为8位长,其中位(bit)使用的0或1表示,通常原创 2021-11-05 16:22:30 · 594 阅读 · 0 评论 -
运用弹簧物理学原理为图形运动添加动画
一、前言Android系统已经给我们提供了属性动画,ValueAnimator以及ObjectAnimator,这两个动画效果已经满足我们开发中的大多应用场景,但是基于物理特性的动画用上述的两个动画效果就很难实现,但是官方也给我们提供了运用弹簧物理学原理的动画效果库dynamicanimation,让我们在开发中快速的使用。下面的这个效果就是实际项目中基于dynamicanimation来完成的.二、使用流程2.1 添加支持库implementation 'androidx.dynamicanim原创 2021-03-31 19:45:46 · 672 阅读 · 0 评论 -
多指触摸处理
一.前言在开发中,我们经常会使用自定义View进行拖动和缩放,拖动一般是单指触摸,但是实际情况我们也可以使用多指进行触摸移动,如果这是我们进行抬起二.了解触摸事件2.1 了解MotionEvent中手指的index和id在MotionEvent中,存储了每个手指的index和id:Index: 每个MotionEvent在数组中存储了手指的信息,index表示手指在数组中的位置,开发中我们也是通过index作为参数来获取相关信息,比如event.getX(int pointerIndex),ev原创 2021-03-12 19:23:31 · 624 阅读 · 0 评论 -
属性动画技能实践
前言通过 属性动画原理解析,我们了解属性动画的整个运行机制,对底层的原理有了一定的了解,也学习一些知识点,但是学习过的知识点在没有自己实践都是别人的,只有自己实践后才属于自己的。接下来分享一些属性动画的一些知识点运用项目中的经历。实践实践一:屏幕刷新机制我们知道属性动画基于屏幕刷新回调机制来实时更改属性的值,而在实际的项目应用用,也会很多实时刷新屏幕的需求,接下来我们通过秒表计时器需求来分析刷新机制在实际应用。秒表计时器的效果图如下所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下原创 2021-01-19 19:03:10 · 237 阅读 · 0 评论 -
属性动画原理解析
前言属性动画作为现在开发中常用的动画,我们需要对他有比较详细的了解,才能够在开发中随心和高效的使用。在了解属性动画之前我们先了解Android前期的视图动画一、视图动画视图动画是为View对象添加动画效果的功能,如果想为非对象动画添加效果,则必须自己实现自己的代码才能做到。视图动画仅公开 对象的部分方面来供您添加动画效果,比如旋转、错放、移动视图动画只是在绘制视图的位置进行修改,而不会修改实际的视图本身。例如,为某个按钮添加了移动动画,该按钮会正确绘制,但能够点击按钮的实际位置并回修更改,我们必须原创 2021-01-15 19:01:44 · 928 阅读 · 1 评论 -
自定义视图组件流程
一、前言Android提供了一个复杂且强大的组件化模型,帮我我们根据布局类View和ViewGroup来构建界面。Button、TestView、EdiText,LinearLayout、FrameLayout、RelativeLayout 等,然而在开发过程,一些系统通过的控件不能满足我们的要求,因此需要我自定义视图组件。二、自定义视图组件的方式完全自定义视图组件,继承View或者ViewGoup来完成复合控件,结合现有的视图组件组合为满足我们需求的控件修改现有的View类型,比如继承自Ima原创 2020-12-31 18:32:18 · 332 阅读 · 0 评论 -
Android-事件分发-嵌套滑动
前言在前期做一些Android酷炫效果并遇到嵌套滑动问题的算是一大难点,没有标准的规范,开发人员根据自己的需求进行随意控制,导致做的一些组件缺少复用性,同时也不利于后期的维护。后期官方出了自己的嵌套滑动标准,主要由NestedScrollingChild、NestedScrollingChildHelper、NestedScrollingParent、NestedScrollingParentHelper进行控制,从而规范了嵌套滑动事件的处理标准。下图展示的一个嵌套滑动的效果图,这里我们定义:A:表原创 2020-12-24 18:55:14 · 331 阅读 · 1 评论 -
Android-ViewGoup事件分发机制
前言Android的事件分发机制是从上往下进行分发,了解了View的事件分发后,我们还需要了解ViewGroup的事件分发原理。实际中View是和ViewGroup结合使用的,同时这两者之间还存在嵌套滑动。ViewGoup事件分发源码解析 @Override public boolean dispatchTouchEvent(MotionEvent ev) { ....... boolean handled = false; if (onFilt原创 2020-12-18 19:03:23 · 221 阅读 · 0 评论 -
Android-View事件分发机制
前言Android开发中一些简单的UI开发其实用不到事件分发,但是要做一些特殊的功能的时候会用到触摸事件的处理,那么我们就需要了解View和ViewGoup的事件分发机制,这样才能在触摸屏幕的时候在不同的View和ViewGroup直之间切换事件处理。下面将从源码入手分析View的的事件分发机制。View事件分发源码分析事件的分发机制由dispatchTouchEvent进行控制,根据里面的逻辑进行判断是执行OnTouchListener还是OnClickListener;所以要了解事件的分发原理,就原创 2020-12-18 19:02:02 · 218 阅读 · 0 评论 -
Retrofit实现流程分析
文章目录一、前言二、基本使用流程三、创建Retrofit对象以及网络接口对象3.1 Builder(建造者)模式创建Retrofit3.2 代理模式3.3 模拟简单的请求操作3.4 对OkHttp的二次封装3.4.1 重新定义Response3.4.2 重新定义Call3.4.3 定义OkHttpCall,执行网络请求操作3.4.4 Converter,满足开发中的各种需求工厂模式3.5 定义CallAdapter ,灵活扩展各种类型的返回值5.1 CallAdapter 适配器模式四、对接口中定义的方法的原创 2020-11-05 21:17:53 · 404 阅读 · 0 评论 -
Android架构组件-LiveData扩展使用
文章目录前言扩展LiveDataLiveData-MediatorLiveDataTransformations 对LiveData进行转换处理1,map1,switchMap前言LiveData的优势以及实现原理已经在上一篇中介绍,那么接下来接触一些扩展用法,从而更能体会该组件的设计意图,方便在业务中进行相应的扩展。扩展LiveData以下为股票价格监听StockLiveData,只有观察者生命周期处于STARTED或者RESUMED状态,则LiveData会认为观察者处于活跃状态,再进行相关连接原创 2020-09-08 19:52:25 · 394 阅读 · 0 评论 -
Android 架构组件-Lifecycle
前言在使用一个新的组件之前,我们需要了解为什么需要使用它、如何使用、使用过程中的注意事项、可扩展或可提升的地方。当我们深入透彻理解这些后,开发中遇到任何问题都可以迎刃而解。当然需要了解这些内容,我们必须熟悉源码的实现过程,这样才能做到心中有数。为什么需要使用Lifecycle从APP的开发过程历程来讲,没有Lifecycle这个组件,我们的APP一样开发,一样好好的运行,从这个层面来讲,是可...原创 2019-06-20 00:19:35 · 313 阅读 · 0 评论 -
Android架构组件-LiveData实现原理分析
前言在使用一个新的组件之前,我们需要了解为什么需要使用它、如何使用、使用过程中的注意事项、可扩展或可提升的地方。当我们深入透彻理解这些后,开发中遇到任何问题都可以迎刃而解。当然需要了解这些内容,我们必须熟悉源码的实现过程,这样才能做到心中有数。为什么需要使用LiveDataLiveData 是一种可观察的数据存储器。应用中的其他组件可以使用此存储器监控对象的更改,而无需在它们之间创建明确且严...原创 2019-06-20 00:21:44 · 603 阅读 · 0 评论 -
Android架构组件-ViewModel
前言在使用一个新的组件之前,我们需要了解为什么需要使用它、如何使用、使用过程中的注意事项、可扩展或可提升的地方。当我们深入透彻理解这些后,开发中遇到任何问题都可以迎刃而解。当然需要了解这些内容,我们必须熟悉源码的实现过程,这样才能做到心中有数。为什么需要使用概念ViewModel主要是为了保存和管理UI相关的数据,能够在我们的配置发生变化的时候保存数据,比如在屏幕旋转时,可以直接使用上次保...原创 2019-07-03 23:51:07 · 929 阅读 · 0 评论 -
Android架构组件-WorkMannager
前言WorkManager作为谷歌推出的架构组件之一,相比其他的组件,应用场景要少一些,不是每个APP都需要的。但是如果有后台任务需要执行,那么,它是一个不错的选择。WorkManager是什么WorkManager是一个针对后台任务处理的方案,无论在应用或设备重启的情况下都能可靠地帮助您的应该管理和执行延迟的后台任务,同时能兼容到Android 4.0以及以后的版本,能减轻适配工作。我们知...原创 2019-07-17 23:53:28 · 556 阅读 · 0 评论 -
volatile不会用,怎么办?
前言volatile是java虚拟机提供的一个轻量级的同步机制,大多数情况下比锁的开销更低,因此在合适的条件下我们有必要使用它。但是要使用他,我们必须对他的具体作用,使用场景,使用限制进行透彻的了解。才能避免在开发中误用带来的不安全问题。作用变量修饰符,保证变量的可见性以及禁止指令重排优化。下面将对可见性和指令重排做详细的介绍,从而更好的认清他的作用。可见性指当一个线程修改了这个变量的值...原创 2019-09-01 20:21:27 · 232 阅读 · 0 评论 -
App被逆向,修改了其中的会员权限怎么办?
前言最近公司的APP被逆向了,修改了其中的会员判断逻辑,并且还增加了广告,对公司带来了一定的影响和损失。特别是会员这块,修改了以后,让非会员用户也享受了会员的权益,影响了公司的收益,后果大家知道的…。所以说一个好的产品在架构设计的时候就应该考虑到各种情况。如何解决方案一 app加固加固是一个快速的方案,用一些高级的第三方加固方案,常用的360加固保,收费从18000元/年-72000元/...原创 2019-09-01 21:16:20 · 2730 阅读 · 0 评论 -
EvenBus的正确使用姿势-index
前言最近在学习商学院的一些知识,有一些学习心得,在这里分享给大家。我在看一篇博客或者一些书籍的时候,都会按照下面的模式进行学习:讲什么(作者需要讲了什么)如何讲明白(作者通过什么样的方式讲明白自己的观点)如何运用(实际应用场景)拓展思考(结合自己的理解,进行发散性思考)这样在学习的过程中有思考,有总结;更能抓住重点和提升学习效率。eventBusIndex的性能提升在没有使用E...原创 2019-09-19 00:32:16 · 542 阅读 · 0 评论 -
通过阅读EventBus源码,可以学习的一些知识点
前言随着技术的发展,各种开源的工具原来越多,在项目开发阶段,我们很多时候都是直接将开源的库拿过来直接使用,慢慢的就变成了轮子的使用者,技术的提升也就变得缓慢了。因此在使用开源库的过程中,我们都有必要去熟悉库的源码,了解作者的设计思想以及用到哪些技术,并将这些技术进行提炼,为自己后期有机会创造轮子打下基础。EventBus作为我们项目中常用的开源库,在这里提炼了一下这个库中自己觉得有必要了解的知...原创 2019-09-19 23:20:07 · 251 阅读 · 0 评论