
Android
文章平均质量分 88
快乐前进
zhangjinself@163.com
展开
-
android viewModel 源码与原理 观察者探索
说明viewmodel 是android 现在推出来的基于观察者模式的数据处理方式。是在androidx下的lifecycle 包名下面,LiveData 类 也是 observer类在androidx.lifecycle的lifecycle-live-core包下LiveData 是基类,下面有MutableLiveData实现类。其实也是observer类。LifecycleOwner 接口有getLifecycle方法,Activity,Fragment都是继承这个接口。...原创 2020-12-18 17:43:29 · 449 阅读 · 0 评论 -
android resultCode和requestCode的区别和使用场景分析
resultCode和requestCode是开发中经常用到的数据传递,那么他们有什么区别呢?我们以A,B,C等代码页面区别:resultCode:假设A->B,我们不用在调用页面A传递,只有在B页面结束时传递即可,这样子在B页面调用setResult()结束后,使用者A页面都可以收到。requestCode:假设A->B,我们在调用页面A页面是需要传递,页面B结束时不用再调用,是给使用者A的。使用场景:公共页面:如果这个页面B会有很多页面调用,则不适合使用resultCod原创 2020-11-13 10:52:49 · 1006 阅读 · 0 评论 -
android 悬停控件 StickyScrollView 源码分析
滚动时的操作1.定义了两个view,一个是viewThatShouldStick这个是用来悬停显示的,一个是 approachingView ,是用来替换悬停显示的。 用来获取父控件的top,但是好奇怪的是这个是一直是没有变化的。private int getTopForViewRelativeOnlyChild(View v) { int top = v.getTop(); while (v.getParent() != getChildAt(0)) { ...原创 2020-08-07 16:28:51 · 975 阅读 · 0 评论 -
android下自定义相机com.otaliastudios.cameraview源码解析(二)
目录 android下自定义相机com.otaliastudios.cameraview源码解析(一)android下自定义相机com.otaliastudios.cameraview源码解析(二)这里要分析是Engine类,下面一共有下面几个包action、lock、mappers、meter、offset五个包。分别实现不同的功能。cameraEngine是抽象类...原创 2019-11-07 15:30:41 · 3117 阅读 · 0 评论 -
android下自定义相机com.otaliastudios.cameraview源码解析(一)
目录android下自定义相机com.otaliastudios.cameraview源码解析(一)android下自定义相机com.otaliastudios.cameraview源码解析(二)前言 最近在android下相机下的开发,引入了com.otaliastudios.cameraview,这个第三方类,顺便看了下它的源码,在这里记录一下,以便以后查询,在平时的开发...原创 2019-11-05 11:45:39 · 6158 阅读 · 0 评论 -
github(四)android下wheelview源码分析
wheelview是一款模拟ios的缩放滑动的控件,wheelview继承于View父布局,整个布局是画出来的,一、构造函数初始化1.1构造函数进行了以下的操作,对CENTER_CONTENT_OFFSET(偏移量)进行适配, DisplayMetrics dm = getResources().getDisplayMetrics(); float de...原创 2019-10-24 16:44:11 · 382 阅读 · 0 评论 -
ObservableMap调用流程分析
代码一:observable.subscribeOn(Schedulers.io()).map(newResultFunc<Observable>()).observeOn(AndroidSchedulers.mainThread()).subscribe(spSubscriber);map会调用以下方法,...原创 2019-03-13 11:54:24 · 976 阅读 · 0 评论 -
android 编译错误记录
1、Android resource linking failed Daemon: AAPT2 aapt2-3.2.1-4818971-windows Daemon #0 android design_bottom_sheet_slide_in not found 没找到错误,突然出现了这个错误,说是要用androidX,网上也查不到,后来进入【.gradle\caches\tra...原创 2019-09-06 12:43:41 · 362 阅读 · 0 评论 -
RecycleView的ItemDecoration的源码分析及调用原理
前言ItemDecoration是实现了在RecyclerView对Item控件的绘制操作,因为以前研究PickView源码的时候,它是基于View的onDraw来绘制的,当时我就想着怎么实现,在ViewGroup中去执行这个onDraw,来绘制一些布局,感觉这个给了我一些思路,因此分析了一下源码,记录一下。不仅如此,这里还对接口的的使用,算是一种静态代理模式,自己也想模拟这种的使用方法,...原创 2019-10-09 15:52:34 · 913 阅读 · 0 评论 -
android-canvas(一) scale(缩放)的使用
在android下缩放可以实现onDraw下的画笔画的内容变小,这里以文本为例进行讲解。scale提供的方法 在cale提供了两个方法 public void scale(float sx, float sy) public final void scale(float sx, float sy, float px, float py)scale(float sx, float ...原创 2019-09-04 11:28:08 · 4616 阅读 · 0 评论 -
android 下图片的Bitmap.compress()占用内存的大小分析
上次研究了安卓下面图片通过缩放改变大小,这个变化是非常明显,但是失帧的情况也挺严重,这次主要是研究一下如何在不失帧的情况下压缩图片, 一、基础知识 1.1如果使用BitmapFactory.decodeResource()图片后会对图片进行缩放,造成图片变大的问题 图片在windows下显示大小为大概是374...原创 2019-05-13 17:06:00 · 3792 阅读 · 0 评论 -
android ndk 环境配置错误
一、在编译ndk时报了ndk CMake was unable to find a build program corresponding to "Ninja".,这个错误,查找了一堆资料,也去国外看了看,并没有很好的解决这个问题,这几个库卸载了,又重新装,最后发现是安装 ninja就可以了下载地址https://github.com/ninja-build/ninja/relea...原创 2019-04-02 18:37:05 · 699 阅读 · 0 评论 -
android下的自动化测试和单元测试
前言公司希望做一些安卓覆盖率的单元测试,自己面试时由于做过web端微服务的单元测试,于是公司也把安卓端的单元测试,这篇文章主要是介绍单元测试的思路和工具的介绍在安卓下,测试的思路考虑了很久,主要是要分两个方向进行单元测试,一‘、基于业务方向的测试,主要思路是从登录开始,到进入主页面,再进入到各个页面进行单元测试,这种测试思路,属于自动化测试,我这里使用的是android自带的espresso...原创 2019-04-18 17:30:11 · 335 阅读 · 0 评论 -
jni实现图片的线性透明效果
代码地址:https://github.com/zhangjinself/QQReadBg上次文章说如果图片数量比较大,可以使用jni实现,今天就来讲一下如何用jni实现线性透明效果,上篇文章https://blog.youkuaiyun.com/zhjin8510/article/details/87096478一、其实实现原理与java版差不多这里使用 jintArray 把图片的所有像素...原创 2019-03-23 20:39:51 · 154 阅读 · 0 评论 -
retrofit源码分析
一、这是创建Retrofit这个类,然后去加载IService接口文件二、在Create方法中,加载IService的时候使用了动态代理,用来对方法进行包装针对if(method.getDeclaringClass()==Object.class){returnmethod.invoke(this,args);}然而动态代理对象里面的方法都是Int...原创 2019-03-13 11:44:14 · 155 阅读 · 0 评论 -
okhttp源码分析
一、看例子,首先会去创建OkhttpClient客户端,再去构建Request请求主体。OkHttpClient client = new OkHttpClient();// Create request for remote resource.Request request = new Request.Builder() .url(ENDPOINT) .build();...原创 2019-03-13 11:40:54 · 118 阅读 · 0 评论 -
仿qq阅读书籍背景高斯模糊后的透明线性淡化(毛玻璃)效果
代码地址:https://github.com/zhangjinself/QQReadBg用到的基础知识 一、两种模糊库 工作中要用到高斯模糊的事的图片做背景图,在android下面实现高斯模糊,有两种方法, 一种是谷歌自带的RenderScript 模糊,还有一种是FastBlur 实现高斯模糊...原创 2019-02-13 11:22:57 · 682 阅读 · 0 评论 -
android图片大小优化-缩放改变大小
代码地址:https://github.com/zhangjinself/QQReadBgandroid 图片加载过多会引起oom异常,所以大多数的时候我们需要和图片打交道,那我们需要怎么样来处理图片比较多的情况呢,最近在处理图片,突然想到了一种情况,如果是图片被缩放了,是否会改变图片的大小呢,于是作了以下实验试验思路,通过一个拖动的seekBar来改变图片的缩放的大小,通过不断的改变pr...原创 2019-02-18 17:08:43 · 969 阅读 · 0 评论 -
github(二)android 模仿tablayout效果的magicindicator源码分析
前言,这个是用到了自定义控件的源码分析,感觉里面有很多基础的点,有时间觉得这些内容很简单,但是让自己写却是非常困难的,于是对源码进行了分析,这里只是仅仅分析,没有自己去实现,希望看到这篇文章的同学,如果感兴趣,最好自己去实现一遍。简单了画一个类图,作为开篇,希望对后面的阅读有所帮助。公共类 传输类PositionData,这个类是用来记录TextView中屏幕中的位置的,可以...原创 2019-07-10 14:55:40 · 892 阅读 · 0 评论 -
android 自定义控件-标签适配移除多余的子控件
前言,最近在做一个需求,要求实现一个标签的位置在屏幕的中间,固定标签为3,当屏幕显示不下时则移除不能显示的子控件,最终研究来是用自定义控件来实现,即方便自己也方便大家。 下面是给出的原型图,红色的就是标签,如果屏幕显示不下,可能显示为2个,1个。下面我们开始研究。 一、首先我们需要实现对控件的添加,代码如下,在代码中我们可以看到,我们在初始化控件时就要...原创 2019-08-28 13:44:37 · 2755 阅读 · 0 评论 -
android 视频播放 JiaoZiVideoPlayer使用分析
一、在RecyleView、ListView等列表下的使用 当列表移出屏幕的范围区域时,RecyleView会使用addOnChildAttachStateChangeListener,来表示当前子控件已经移动出了屏幕范围,这时饺子视频会重置状态,代码如下: @Override public void onChildViewDetachedFromWin...原创 2019-08-13 14:11:32 · 454 阅读 · 0 评论 -
android 下TextView 的text文本的位置的计算(getLeft,getRight,getTop,getBottom,getX,getY)
在android中用的最多的就是TextView,如果我们要获取TextView在父布局中的位置来如何处理呢,主要原理还是利用getLeft(),getRight(),getTop(),getBottom(),getX,getY来计算,这里就是对这几个方法的使用说明我们做一个实验,画了一个宽为300高100的矩形框,这时左边有,上边也有一个高有100的矩形框 前提条件 ...原创 2019-08-02 14:53:38 · 1673 阅读 · 0 评论 -
github(三)android下视频播放JiaoZiVideoPlayer源码分析
JiaoZiVideoPlayer是一个android下的视频的播放软件,主要功能是放在了播放上面,并没有视频的录制和切片加水印效果,如果是想实现这种效果,需要参考其它开源框架。这款框架使用的人还是非常多的,属于多媒体模块,这里将分析它的源码,以便以后用上的时候好进行修改源码。一、视频播放基础控件介绍TextureView控件,是一个支架性的控件,主要是用来实现承载视频的显示。源码分...原创 2019-08-12 11:31:05 · 773 阅读 · 0 评论 -
github(一)android阴影效果SuperShadow源码分析
前言 SuperShadow是一款在安卓端控件增加阴影的一款开源项目,自己在找了了代码之后觉得架构不错 ,就分析番 ,好做个标记,也为以后自己设计架构做个参考和标记。 技术亮点 一、@IntDef的使用,可以用来实现限制传值的范围,如果不是这个范围则报错 二、定义了IShadowR...原创 2019-07-18 09:50:11 · 499 阅读 · 0 评论 -
android自定义控件基础--绘制可以左右滑动的线
在分析Magic源码的时候,深受启发,发现了很多有用的点,要一步一步的剖析才能理解的更深,这里就在title的下滑线的基础上进行详细分析,一、基于HorizontalScrollView可以滚动的TextView我们定义一个LinearLayout,然后在LinearLayou中添加自定义的TextView,这时我们会发现,它并不能滚动,只是显示为了一行,代码和效果如下,在这里是循环了1...原创 2019-07-08 21:28:03 · 859 阅读 · 0 评论