android
厚德.
这个作者很懒,什么都没留下…
展开
-
LeakCanary简单分析
在使用LeakCanary的时候要引入:debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4'debugImplementation :debugImplementation 只在debug模式的编译和最终的debug apk打包时有效LeakCanary的初始化是利用ContentProvider进行初始化的, <provider android:name="le..原创 2020-12-13 11:31:25 · 565 阅读 · 0 评论 -
实现ImageView的双指缩放
在支持双指的缩放的时候,首先要了解一下Android支持缩放的工具类ScaleGestureDetector,这个缩放是根据这个工具类来实现的。ScaleGestureDetector是用于处理缩放的工具类,用法与GestureDetector类似,都是通过onTouchEvent()关联相应的MotionEvent事件。OnScaleGestureListener回调方法的介绍:public interface OnScaleGestureListener { /**原创 2020-07-12 12:07:02 · 1783 阅读 · 2 评论 -
自定义可以点击缩放的ImageView
在开发时会遇到双击放大,放大后可以拖动的ImageView,就跟腾讯朋友圈一样的效果。下面我们就手撸一个这样的自定义控件。先介绍下要用到的知识点:双击的点击事件的获取,放大缩小的动画,在滑动Filing的惯性滑动处理。双击的点击事件,我们交给GestureDetectorCompat去处理。先介绍下OnGestureListener// 步骤1:创建手势检测器实例 & 传入OnGestureListener接口(需要复写对应方法)// 构造函数有3个,常用的是第二个// 1. Ge原创 2020-07-11 23:07:52 · 320 阅读 · 0 评论 -
Android中gradle的配置
Android中gradle的配置gradle文件的创建在config.gradle中创建变量在项目中使用config.gradle中的变量首先在根目录的build.gradle中引入config.gradle文件在自己项目或者Library中使用config.gradle中的变量gradle中各种配置的含义gradle文件的创建在项目上新建一个File文件输入config.gradle在config.gradle中创建变量ext{ username = "houde" //定义原创 2020-05-16 13:12:33 · 294 阅读 · 0 评论 -
Retrofit的一次请求源码分析
Retrofit是如何完成一次Http请求的:public interface ApiService { @FormUrlEncoded @POST(Api.COMMON_LOGIN) Call<BaseBean<TokenResult>> refreshToken(@HeaderMap Map<String, String> head...原创 2019-12-14 14:13:18 · 156 阅读 · 0 评论 -
TabLayout的使用及使用中的问题总结
改变Tab字体颜色设置默认字体颜色:app:tabTextColor="#ffffff"设置字体被选中后的颜色app:tabSelectedTextColor="#e40707"设置指示器颜色app:tabIndicatorColor="#30e407"设置指示器高度(如果希望选项卡不显示指示器效果只需要把指示器高度设置为0就行了) app:tabIndic...原创 2019-12-14 11:13:02 · 580 阅读 · 0 评论 -
CoordinatorLayout嵌套多个Recyclerview
RecyclerView嵌套横向RecycleView 要做一个界面,CoordinatorLayout嵌套AppBarLayout和RecyclerView来实现折叠滑动,我的RecycleView里面布局较多,计划再嵌入RecyclerView来实现,当我用到RecyclerView添加GrideLayoutManager实现GrideView时,怎么都滑动不了,参考官方demo,很容易使用...转载 2018-12-05 15:13:52 · 1604 阅读 · 0 评论 -
Material Design之 AppbarLayout 开发实践总结
原文链接:https://www.jianshu.com/p/ac56f11e7ce1前一篇文章是Material Design 系列的第一篇文章,讲了Toolbar 的使用,《Material Design 之 Toolbar 开发实践总结》,还没看过的同学可以去看一下,这篇是Material Design 系列的第二篇文章,这次我们讲AppbarLayout。一说到AppbarLayout...转载 2018-11-02 18:25:19 · 219 阅读 · 0 评论 -
RecyclerView 截屏
截取整个RecyclerView的,使其是一张完整的图片。思路就是调用每个ItemView的setDrawingCacheEnabled(true)方法,通过View的getDrawingCache()获得Bitmap,然后把这些ItemView 产生的Bitmap保存起来,然后,把这些小的Bitmap整合成一张的大Bitmap。public static Bitmap shotRecycl...原创 2018-10-31 23:00:16 · 1586 阅读 · 2 评论 -
ListView滚动的方法
除了手动滑动Listview之外,用来滑动listview的方法有这么几个:setScrollY(int Y)setPostion(int position)setPostionFromTop(int position, int offset)scrollTo(int x, int y)scrollBy(int x, int y)scrollListBy(int y)...原创 2018-10-23 14:26:30 · 3359 阅读 · 0 评论 -
解析Activity、Window、View三者关系
前言从问题出发,往往能更明确的找到所求。本文将带着一个个的问题,结合源码,逐步解析Activity、Window、View的三者关系。什么地方需要window?一句话总结:有视图的地方就需要window Activity、Dialog、Toast...PopupWindow和Dialog有什么区别?两者最根本的区别在于有没有新建一个window,PopupWindow没有新建,...转载 2018-10-11 07:03:57 · 1905 阅读 · 1 评论 -
Context详解
Activity mActivity =new Activity()作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言,Activity本质上也是一个对象,那上面的写法有什么问题呢?估计很多人说不清道不明。Android程序不像Java程序一样,随便创建一个类,写个main()方法就能运行,Android应用模型是...转载 2018-10-12 07:39:42 · 297 阅读 · 0 评论 -
RadioButton的setChecked(true)无效或者是点击状态不改变
问题:在ListView中Item是个RadioGroup,在Adapter中动态添加RadioButton,并通过setChecked为RadioButton设置选中和未选中的状态,中间会通过Adapter的notifyDataSetChanged方法改变数据源的方法,改变RadioButton的状态,中间就出现了点击RadioButton无效的状态,其实OnCheckedChangeListe...原创 2018-06-01 17:43:27 · 10313 阅读 · 3 评论 -
Butterknife插件不能使用
今天撸代码突然发现butterknife不能生成快速初始化控件代码了,提示插件异常,要我停止使用,我以为插件坏了,重装一下,再次尝试,还是这个问题,试了一下别的Activity都能用,就这个有问题,然后就部分布局注释掉,一个个的尝试,终于发现问题了: 没错,就是多了个下划线,去掉就好了。。 异常如下: ...原创 2019-01-03 10:44:49 · 1407 阅读 · 0 评论 -
关于ConstraintLayout的部分属性总结(强化版RelativeLayout,包含LinearLayout的比例属性,减少层级利器)
原文链接https://blog.csdn.net/u013187628/article/details/60751812一、使用方式:Android studio 2.2以上 并添加依赖compile ‘com.android.support.constraint:constraint-layout:1.0.1’二、相对位置属性如下:layout_constraint...转载 2019-01-09 14:07:07 · 591 阅读 · 0 评论 -
Android Jetpack之Paging初探
原文地址:https://www.loongwind.com/archives/367.htmlPaging是Google 2018 IO大会最新发布的Jetpack中的一个组件,主要用于大数据的分页加载,这篇文章就来探索一下关于Paging的简单使用。Paging介绍Paging主要由三个部分组成:DataSource PageList PageListAdapterDataSo...转载 2019-01-28 13:56:12 · 3584 阅读 · 1 评论 -
Android面向切面编程(AOP)
转自:https://www.jianshu.com/p/aa1112dbebc7一、简述1、AOP的概念如果你用java做过后台开发,那么你一定知道AOP这个概念。如果不知道也无妨,套用百度百科的介绍,也能让你明白这玩意是干什么的:AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AO...转载 2019-04-01 20:05:18 · 253 阅读 · 0 评论 -
ijkplayer编译支持HTTPS和采坑记录
编译之前要准备好编译环境:sdkndk(这个地方希望是用你ndk14)再次不在赘述,只是贴出我的环境变量:#android adbexport PATH=${PATH}:/softdata/android-sdk-macosx/platform-tools:/softdata/android-sdk-macosx/toolsexport PATH=/softdata/android-s...原创 2019-04-09 11:19:14 · 1282 阅读 · 0 评论 -
android NDK 不生成SO库采坑
如果在创建完CMakeLists.txt后,C++文件已经准备就绪,但是你发现无论怎么build或者是run这个项目,当你在类中System.loadLibrary("xxxx-lib");时,就是一直报错,java.lang.UnsatisfiedLinkError :dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app...原创 2019-04-18 17:21:05 · 2104 阅读 · 0 评论 -
android studio 配置ffmpeg
1)把编译生成的so库复制到libs文件夹下,同时把include里面的头文件也复制到libs文件夹下。2)在build.gradle中添加一下代码defaultConfig { applicationId "com.houde.ffmpeg.test" minSdkVersion 21 targetSdkVersion 28 ...原创 2019-05-10 11:29:54 · 1012 阅读 · 0 评论 -
OkHttp中的Socket连接
Java网络连接超底层分析看完这篇博客,感觉网络请求框架自己都可以撸一个。OSI网络模型 TCP/IP模型物理层数据链路层 网络连接层网络层 网际层传输层 传输层会话层 表示层应用层 应用层这个源码分析,感觉不会超过网络上大神的分享,但是还是要写份自己的。先说说这个OKHttp请求的需要...原创 2019-08-30 17:24:47 · 9066 阅读 · 0 评论 -
用SpannableString打造绚丽多彩的文本显示效果
引语TeXtView大家应该都不陌生,文本展示控件嘛! 就用TextView显示普普通通的文本,OK,很简单,Android入门的都会,没入门的在门缝外看两眼也都会,哈哈,开玩笑。那要是设计在开发需求中要求类似微信聊天表情一样在TextView中插入表情图片呢? 有的小伙伴就会说啦,“TextView添加图片我会啊,不就是drawableLeft,drawableRight嘛!” 嗯 ~ 也行,转载 2018-06-14 13:40:14 · 250 阅读 · 0 评论 -
RecyclerView的基本用法
RecyclerView已经出来很长时间了,我相信现在用recyclerview的肯定要比ListVIew的多,今天就总结一下这个RecyclerView的基本使用。第一种:添加LayoutAnimator上效果...原创 2018-05-29 23:44:44 · 388 阅读 · 0 评论 -
ItemTouchHelper.Callback 详解
ItemTouchHelper是在操作RecyclerView时,堆Item进行长按移动,左右滑动删除效果的一个辅助类,但是我们要考虑,为什么这个辅助类就可以实现移动跟左右删除Item的效果呢?我们的touch事件是怎么作用到RecyclerView的Item上呢?我们通过源码的解析都是可以知道这是为什么的。下面开始:创建一个ItemTouchHelper,需要传入一个继承自ItemTouchHe...原创 2018-06-05 22:49:14 · 11686 阅读 · 1 评论 -
RecyclerView 四周带分割线的ItemDecoration
这是效果图:这是代码(用kotlin写的有点装):class GridLayoutDivider(width:Int,color:Int) : RecyclerView.ItemDecoration() { private var mWidth = width private var mColor = color private var mPaint = Paint(Pai...原创 2018-05-27 20:43:57 · 692 阅读 · 1 评论 -
Retrofit 源码解析
对于现在Android最流行的网络框架Retrofit,我相信用的同学应该很多,但是我们不应该只停留在用这一层上,而应该针对这个框架有个原理上的理解,最起码要读下源码知道是怎么实现的,然后在学习下架构,用的设计模式,对于以后自己的架构能力还是会很有帮助的。我分析的肯定不如大牛分析的好,但是我在努力,如果有不对的地方请留言指出。先从Retrofit的创建开始吧:Retroft在创建时,使用的是建造者...原创 2018-03-11 16:05:03 · 264 阅读 · 0 评论 -
Android 带你彻底理解 Window 和 WindowManager
原文地址:http://blog.csdn.net/yhaolpz/article/details/68936932有时候我们需要在桌面上显示一个类似悬浮窗的东西,这种效果就需要用 Window 来实现,Window 是一个抽象类,表示一个窗口,它的具体实现类是 PhoneWindow,实现位于 WindowManagerService 中。相信看到 WindowManagerService 你会...转载 2018-03-16 09:51:27 · 177 阅读 · 0 评论 -
android 消息机制
android的消息机制,这肯定是被大家源码解析,分析坏了的一部分。首先这个消息机制用的比较频繁,主要用在子线程更新UI,再一个就是这个源码比较少,也是很好理解的,我感觉每个人都会来一篇消息机制的文章。Android消息机制概述说到Android的消息机制,大家肯定会想到Handler。是的,Android的消息机制主要是指Handler的运行机制以及Handler所附带的MessageQueue...原创 2018-03-15 10:44:02 · 159 阅读 · 0 评论 -
Java Gson 使用,Gson将字符串转为list
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。对象转为字符串String ps =gson.toJson(person);字符串转为对象Person person =gson.fromJson(json, Person.class转载 2017-10-19 11:20:51 · 4389 阅读 · 1 评论 -
Android 自定义控件系列文章
原文地址感谢原博主的分享,在此作为自己学习大纲。这是一个从零起步,从入门到懵逼的自定义View教程。本教程从最基础的内容讲解,并且深入到了相关的各个细节,不论你是刚入门的菜鸟,还是有一定经验的工程师相信本系列文章都会对你有所帮助。你既可以将本教程当作学习资料来学习自定义View相关的各种知识,也可以作为工具来使用,在需要的时候查询相关的知识细节。基础篇安卓自定义View基础 - 坐标系安卓自定义V...原创 2017-09-23 20:52:19 · 274 阅读 · 0 评论 -
gradle 自动配置
前提要做到,我们在 gradle做了一些配置,然后我们在 java 代码中能够读取到对应的配置值, 这点很重要.这里就需要用到 BuildConfig 这个类了BuildConfig 这个类是 gradle 在编译的过程中自动生成的一个类先看看我们吗项目中生成的BuildConfig文件:public final class BuildConfig { public sta转载 2017-08-25 13:06:31 · 242 阅读 · 0 评论 -
android tween动画
Android中一共提供了三种动画,其一便是tween动画,tween动画通过对view的内容进行一系列的图像变换(包括平移,缩放,旋转,改变透明度)来实现动画效果,动画效果的定义可以使用xml,也可以使用编码来实现。 下面我们逐一查看tween能够实现的动画效果。 先看看工程的整体结构吧:我们要实现的效果图如图点击按钮则执行相应的动画操作。布局文件activity_main.xml<Lin...转载 2017-08-21 16:10:12 · 250 阅读 · 0 评论 -
源码分析Activity启动过程
早就想搞一篇这样的启动过程的文章,但是局限于自己能力有限一直没有敢写,今天要写是因为最近一直在研究这个启动流程,感觉自己已经研究明白了,可以写出来加深一下记忆了。这是用的sdk26的源码也就是Android 8 的源码。先上Activity的继承关系,如果想看到这个界面可以用快捷键Ctrl + h,然后双击打开这个Activity,开始神奇的源码之旅。我们都会用startActivity(Inte...原创 2018-03-30 15:40:29 · 272 阅读 · 3 评论 -
Android Okio应用及解析
自从Google官方将OkHttp作为底层的网络请求之后,作为OkHttp底层IO操作的Okio也是走进开发者的视野,这个甚至是取代了java的原生IO库的存在到底有什么特殊的本领呢?这篇文章主要是对Okio的实现做一个详尽的解析,当然由于笔者分析中可能有纰漏的地方,也烦请指出,Okio的代码比较精巧,核心的代码大约5000行,对文章不尽兴的也可以直接通读源码,这样就能理解的更清晰。全文较长,这里...转载 2018-03-25 15:05:13 · 970 阅读 · 0 评论 -
Android使用OKHttp3实现下载(断点续传、显示进度)
OKHttp3是如今非常流行的Android网络请求框架,那么如何利用Android实现断点续传呢,今天写了个Demo尝试了一下,感觉还是有点意思准备阶段我们会用到OKHttp3来做网络请求,使用RxJava来实现线程的切换,并且开启Java8来启用Lambda表达式,毕竟RxJava实现线程切换非常方便,而且数据流的形式也非常舒服,同时Lambda和RxJava配合食用味道更佳打开我们的app ...转载 2018-05-10 08:26:32 · 1039 阅读 · 0 评论 -
Android 使用三级缓存实现对图片的加载
一、概述:现在android应用中不可避免的要使用图片,有些图片是可以变化的,需要每次启动时从网络拉取,这种场景在有广告位的应用以及纯图片应用(比如百度美拍)中比较多。现在有一个问题:假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响。当然,我想,向百度美拍这样的应用,必然也有其内部的图...转载 2018-05-09 20:09:27 · 141 阅读 · 0 评论 -
Android 屏幕适配:最全面的解决方案
作者:Carson_Ho 原文链接前言Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合:Google的官方权威适配文档郭霖: Android官方提供的支持不同屏幕大小的全部方法Stormzhang:Android 屏幕适配鸿洋:Android 屏幕适配方案凯子: Android屏幕适配全攻略(最权威的官方适配指导)自身的思考&实践给你带来一种全新、全面而逻辑清...转载 2018-05-09 20:06:49 · 112 阅读 · 0 评论 -
Android性能全面分析与优化方案研究—几乎是史上最全最实用的
结合以下四个部分讲解:性能问题分类性能优化原则和方法借助性能优化工具分析解决问题性能优化指标性能问题分类1、渲染问题:过度绘制、布局冗杂2、内存问题:内存浪费(内存管理)、内存泄漏3、功耗问题:耗电性能优化原则和方法1、性能优化原则坚持性能测试(开发和测试同学的测试方法略有不同):不要凭感觉去检测性能问题、评估性能优化的效果,应该保持足够多的测量,用数据说话(主要针对测试同学)。使用各种性能工具测...转载 2018-05-10 08:27:44 · 409 阅读 · 0 评论 -
使用ActivityLifecycleCallbacks管理Activity和区分App前后台
一、ActivityLifecycleCallbacks接口介绍API 14之后,在Application类中,提供了一个应用生命周期回调的注册方法,用来对应用的生命周期进行集中管理,这个接口叫registerActivityLifecycleCallbacks,可以通过它注册自己的ActivityLifeCycleCallback,每一个Activity的生命周期都会回调到这里的对应方法。之...原创 2018-04-03 10:54:55 · 481 阅读 · 0 评论 -
android 错误记录
java.lang.IllegalArgumentException: reportSizeConfigurations: ActivityRecord not found for: Token{eb0b21 ActivityRecord{5435588 u0 com.e3ketang.project/.module.phonics.letter.activity.LetterUnitActivi...原创 2018-04-03 10:07:31 · 6239 阅读 · 1 评论