
android
文章平均质量分 82
一杯清泉
坚持初心,不负梦想!!!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android项目接入React Native方案
本篇文章主要介绍在现有的Android项目中接入React Native的接入过程,分析接入过程中的一些问题和解决方案,接入RN的平台为Android,开发环境为Mac,开发工具为Android Studio。原创 2023-01-18 15:09:31 · 6007 阅读 · 1 评论 -
Lifecycle的原理
Lifecycle是Android Architecture Components的成员,是一个生命周期感知组件,能够感知Activity、Fragment等组件的生命周期变化,并将变化通知到已注册的观察者。正确的使用有助于更好地组织代码,减少内存泄漏,增强稳定。下面分析他的实现原理,看看到底只怎么感知生命周期的。一、基本使用1、引入依赖库dependencies { def lifecycle_version = "2.5.0-alpha01" def a...原创 2022-01-27 18:52:00 · 2135 阅读 · 0 评论 -
Android内核编译
Android内核的编译需要是Mac或者ubuntu系统,centos和windows系统是不行的,磁盘需要不低于170G,如果磁盘太小编译不过,引发异常而导致中断。如果是使用的是MacOS,必须在要重新划分磁盘分区,以区分大小写,原有的磁盘不区分大小写,没法编译软件,另外换需要下载Xcode环境,配置比较麻烦, 内存下载也比较慢,很需要硬盘空间。所以我使用的是ubuntu系统统,很曲折,我执行的时候由于申请总磁盘300G,但是执行目录才100G,有没挂载其他硬盘,文件夹运行的磁盘剩余空间太...原创 2021-10-21 21:59:34 · 5639 阅读 · 3 评论 -
Android编译chromium
一、申请云服务器在Windows或者Mac下编译Android客户端是不支持的,官方推荐的是使用Ubuntu来进行编译,因此我们的编译采用的是Ubuntu服务器,事实证明镜像必须是ubuntu,如果为centos则不支持,ubuntu支持一下版本:我这边申请的是腾讯云服务器,如下:至少为8核的,100G硬盘,我这边申请的高配版16核;32G;300G。二、配置代理源申请的腾讯云服务器,默认的源为m...原创 2021-10-14 10:42:35 · 3110 阅读 · 4 评论 -
Android仿微信地图定位和位置选择(上)
原创 2021-09-05 19:36:26 · 2000 阅读 · 0 评论 -
Android仿微信地图定位和位置选择(下)
图 上篇文章介绍了基本的常用功能,这边文件介绍剩余的位置信息更新、搜索、手势绑定和显示等内容。一、获取坐标系附近的信息二、设置附近的信息到列表三、手势滑动绑定到列表数据四、搜索功能实现五、搜索指定的地址六、地址信息更新到列表...原创 2021-09-12 22:53:35 · 1729 阅读 · 9 评论 -
Android沉浸式状态栏
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowIsTranslucent">true</item> 必须 <item name="android:statusBarColor">@android:color/transparent</item> <item name="andro.原创 2021-06-16 14:38:27 · 144 阅读 · 0 评论 -
Android aar打包总结
Android通过aar方式可以把代码,资源文件等等打成一个包,提供给第三方使用或者自己使用,aar包含这所需要的依赖资源,避免了大量的模块引用,加快了编译的速度,另外在SDK开发中通常是以aar的方法或者远程依赖提供给第三方使用。下面总结下aar生成依赖的方式和应用存在的一些问题。下面举例:app依赖library,library依赖BaseLibrary,这种情况下如果library需要生成aar提供给app使用或者提供给第三方使用,就需要合理的进行打包资源,生成aar,下面介绍集中常用的方式:原创 2021-04-28 20:28:26 · 9218 阅读 · 0 评论 -
Retrofit的封装
Retrofit是Square公司基于restful风格推出的网络框架封装,截止目前github已经有了37.2kstart,可见他的受欢迎程度非常高,Retrofit基于Okhttp封装,具有非常强大的解耦特点,高度的灵活解耦导致使用起来不够简洁,下面对Retrofit进行一次二次的封装,在使用上更加简洁。封装之后具有一下特点:支持reftofit的单例模式配置,一次配置多处使用。 支持动态切换baseUrl不影响原有的baseUrl。 支持通用格式的网络请求,返回对象或者字符串。 支持快捷的请原创 2021-01-30 09:25:33 · 4856 阅读 · 2 评论 -
RadioGroup底部Tab的动态添加
本文主要实现底部Tab的动态添加,动态添加图片、文字状态选择器,支持tab的本和和网络图片,支持各自Tab各自控制,支持Tab的隐藏和显示,非常灵活。实现原理是自定义RadioGroup+RadioButton,效果图如下:...原创 2020-07-28 10:28:57 · 346 阅读 · 0 评论 -
RadioButton小红点、数字角标的实现
RadioButton通常作为RadioGroup的子布局嵌套在里面,单独使用不太常用,本文实现RadioButton小红点、数字角标,主要是利用onDraw方法进行重写,绘制小红点、数字角标。如下: public class AppRadioButton extends AppCompatRadioButton { private Paint mPaint; private boolean isShowDot; private boolean isShowNumbe..原创 2020-07-26 09:28:31 · 1815 阅读 · 2 评论 -
SmartRefreshLayout中的坑
正常使用ClassicsHeader没有问题,在自定义header中遇到的两个问题总结下。一、内存溢出问题现象描述:APP打开,放置2分钟,APP内存陆续飙升,最后OOM。原因分析:在引入SmartRefreshLayout库之后自定义header,继承自RefreshHeader,重写对应的抽象方法,之后会出现内存溢出现象。通过Android studio profile分析memory自定义的RefreshLayout extends SmartRefreshLayou...原创 2020-07-12 10:34:20 · 4079 阅读 · 0 评论 -
Android地图跳转
在开发中通常用到地图跳转,选择地址之后跳转到对应的地图,如图:对应的跳转方法在地图对应官方的SDk文档中都可以找到:百度地图http://lbsyun.baidu.com/index.php?title=uri/api/android腾讯地址https://lbs.qq.com/webApi/uriV1/uriGuide/uriMobileRoute高德地图https://lbs.amap.com/api/amap-mobile/guide/android/navigatio.原创 2020-07-05 11:52:02 · 1070 阅读 · 0 评论 -
Glide的缓存机制原理分析
一、Glide请求图片的流程当执行 Glide.with(this).load("").into(imageview)的into方法时候,该方法接收一个Target或者一个ImageView,Target是一个接口,默认的实现类包括SimpleTarget,ViewTarget,ImageViewTarget等,如果传递的是ImageView接下来回执行以下几步:调用RequestBuil...原创 2020-02-24 10:03:05 · 3830 阅读 · 1 评论 -
Glide绑定生命周期以及回调监听原理分析
Glide.with(this).load(url).into(imageview)Glide绑定fragment、Activity的生命周期是在with方法里面执行的,with可以为Fragment,Activity,FragmentActivity,Context,View,如果是Activity 或者fragment直接调用对应的get方法,如果为Context或者View则判断该...原创 2020-01-12 16:20:01 · 1013 阅读 · 0 评论 -
Glide的配置信息总结
Glide.with(this).load(url).into(iamgeView)1、全局配置继承自GlideModule,在applyOptions方法中通过参数GlideBuilder进行配置,在AndroidManifest.xml注册。 public class SettingGlideMoudle implements GlideModule { ...原创 2019-12-14 14:06:53 · 747 阅读 · 0 评论 -
Android微信抢红包功能的实现
快到过农历年了,微信红包也越来越多了,出现了好多红包外挂程序,就很好奇如何实现的,于是自己研究了一番,亲自写了个微信抢红包的APP。现在就一步一步来实现它。实现思路微信抢红包程序开启时候,他就可以随时识别、捕获红包,服务可以实现正在功能,当我们开启服务的时候,服务就不停的在后台运行,不停地轮询着微信里面的消息,当发现红包时候就立即打开微信红包所在的界面。但是他怎识别红包呢?需要找到微信原创 2017-01-09 15:51:31 · 4135 阅读 · 6 评论 -
软键盘相关问题总结
之前写了一篇文章,主要介绍一些EditText的一些属性和自定义打开链接(点击打开),最近开发中又遇到了其他的的问题,再次进行总结。包含以下几个部分:软键盘顶部添加布局方式 防止软键盘顶起布局内容 初始进入页面软键盘弹出 软键盘的弹出与收缩 软键盘弹出与收缩的监听 一、软键盘顶部添加布局方式方法一:Activity配置信息1、在清单文件中配置的该Activity...原创 2019-01-05 12:31:41 · 276 阅读 · 0 评论 -
EditText详解与自定义
一、常用属性设置 1、文字过滤设置 android:inputType="text" //软键盘为数字字母风格 android:inputType="textAutoComplete" //自动完成 android:inputType="textUri" //输入网址 android:inputType="textEm...原创 2017-03-17 11:32:29 · 3572 阅读 · 0 评论 -
RecycleView的缓存机制
一、Recyclerview的缓存类RecycleView的四级缓存是由三个类共同作用完成的,Recycler、RecycledViewPool和ViewCacheExtension。Recycler用于管理已经废弃或者与RecyclerView分离的ViewHolder,这里面有两个重要的成员,为可以看见的屏幕的内部缓存成员mAttachedScrap、mChangedScrap和滑出...原创 2018-12-15 21:21:38 · 6751 阅读 · 0 评论 -
吸顶效果的另一种实现
前面介绍过一篇文章,是使用ItemDecoration来实现吸顶效果,使用起来很解耦,简单,方便,但是优缺点是拓展性比较差,今天就通过另一种方式来实现吸顶效果,并且吸顶栏可以高度制定布局和交互,步入正题,下面来实现它,先看看效果图:一、实现原理头部的内容位于Recycleview上面,监听Recycleview的滑动,当Recycleview的分组item顶部接触到头部的内容布局...原创 2018-11-11 09:48:37 · 1614 阅读 · 0 评论 -
Recycleview的联动效果
下面我们将实现一个Recycleview的联动效果,即一个Recycleview滑动,另一个Recycleview也跟着滑动,最初想的是监听其中的一个Recycleview滑动,调用另一个Recycleview的scrollBy方法,其实跟随滑动,尝试了一下,一个监听另一个没什么问题,但是当另一个监听另一个时候就发生了问题,两个相互监听,导致陷入了一个死循环,最终内存溢出。看了这个办法是行不通,需...原创 2018-11-03 09:50:21 · 1135 阅读 · 0 评论 -
GridView横滑效果的实现
要实现一个横向滑动,通常是使用horizontalscrollview,他可以横向滚动;要实现宫格布局,一般是使用GridView。那么要实现横向滑动的表格布局就需要结合二者,进行构建。1、xml布局:horizontalscrollview作为父布局,可以横向滑动,GridView作为子布局可以设置表格布局,如果再进一步进行拓展,只需要设置横向表格布局不需要横向滑动,仅仅GridV...原创 2018-12-02 20:45:02 · 872 阅读 · 0 评论 -
okhttp源码分析
okhttp是一款强大的网络访问框架,使用很久了,通过源码分析,将理解到okhttp的加载流程和设计理念,以及一些核心OkHttpClient、Request、RealCall、Dispatcher、Interceptor等核心类的作用。按照他的加载流程进行分析,先来看看最简单的get请求: OkHttpClient okHttpClient = new OkHttpClient();...原创 2018-10-21 11:03:40 · 261 阅读 · 0 评论 -
自定义控件之固定Tab
在开发中我们通常用到固定的Tab,Tab的个数是可以动态配置的,但是不支持滑动,每个Tab均分布局并且之间被一个竖线分割开,Tab底部是一条分割线。看到如下效果如下,Tab布局、线条颜色都支持高度制定。这个Tab的难点在于首先Tab个数不固定,其次Tab竖线左右两端没有只有相邻的两个才有,而且粗细一致,最后每个Tab宽度一致。现在就通过过三种方式来实现它。下面分别介绍实现原理和步骤:: ...原创 2018-08-22 21:54:52 · 1024 阅读 · 0 评论 -
Android模块化与ARouter框架
在APP开发的初期,代码了不大,业务量比较下,一个APP作为一个单独的模块进行开发,往往问题不大,而且还能加快开发效率但是随着APP的用户量越来越多,也越来越复杂,这种开发方式显得结构特别的臃肿,特别是多个开发人员进行开发维护一个项目的时候每个人的代码质量也不相同,容易会产生代码冲突的问题。同时随着业务的增多,代码变的越来越复杂,每个模块之间的代码耦合变得越来越严重,导致代码混乱,没法进行...原创 2018-07-14 10:04:13 · 4602 阅读 · 0 评论 -
Android Architecture Components应用架构组件实战
Google IO 2017发布Android Architecture Components,这个新的架构库旨在帮助我们设计健壮、可测试的和可维护的应用程序。AAC主要提供了Lifecycle,LiveData,ViewModel ,Room等功能,在代码中使用它会使得App架构更加健壮,避免内存泄漏和一些空指针等问题。整体的架构如下: 在使用这些组件前先需要在gradle...原创 2018-07-05 22:54:12 · 1107 阅读 · 0 评论 -
Dagger2入门
Dagger2是一个基于Java依赖注入的标准的依赖注入框架,他能够在编译器自动生成代码,负责依赖对象的创建。Dagger2是Dagger的升级版第一代由Square公司共享出来,第二代则是由谷歌接手开发出来,现在来学习它的使用方法。 首先在gradle的dependencies中加入: implementation 'com.google.dagger:dagger:2.7'...原创 2018-06-30 16:48:55 · 333 阅读 · 0 评论 -
从源码角度分析View的绘制流程
上一篇文章引出了performTraversals,在内部分别调用了performMeasure,performLayout,performDraw三个方法。这三个方法分别有调用了mView.measure,mView.layout,mView.draw(canvas)三个对应的方法,因此我们找打View中对应的方法。一、onMeasure如下measure方法,省略了其他的代码:...原创 2019-01-24 22:14:36 · 251 阅读 · 0 评论 -
自定义ViewGroup之FlowLayout
先看看效果图:先自定义一个类TestViewGroup,继承自ViewGroup,重写onMeasure、onLayout方法。一、重写onMeasure方法 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMea...原创 2019-01-29 22:25:54 · 220 阅读 · 0 评论 -
RecycviewView加载更多和预加载
一、Recycleview的上拉加载更多 mRecyclerview.addOnScrollListener(mOnScrollListener); RecyclerView.OnScrollListener mOnScrollListener = new RecyclerView.OnScrollListener() { @Override ...原创 2019-08-10 23:08:43 · 1623 阅读 · 0 评论 -
Android图文混排
在开发中通常通常会遇到图文混编的情况,例如文字中插入置顶,热门等图片标签,在很多时候换行的时候TextView文字换行后都无法占满首位字符,要求TextView中要求某些文字设置其他颜色,字体,样式等等,这篇文章就是解决这种问题,如下: 一、SpannableStringSpannableString是富文本显示效果一个重要的类,是CharSequence的一种,和...原创 2019-07-31 22:02:41 · 1283 阅读 · 0 评论 -
软键盘打开和关闭监听
1、自定义软键盘监听控件代码如下,核心要点查看备注:public class KeyboardLayout extends RelativeLayout { //软键盘展开 public static final byte KEYBOARD_STATE_SHOW = -3; //软键盘隐藏 public static final byte KEYBO...原创 2019-06-13 22:34:22 · 1173 阅读 · 0 评论 -
WebView应用详解
前面几篇文章已经介绍过WebView的相关内容了,但是都是专题形式,这次算是一个综合的补充吧!Android与前端交互之JSBridgehttps://blog.youkuaiyun.com/yoonerloop/article/details/78033908Android中网页数据的抓取和修改https://blog.youkuaiyun.com/yoonerloop/article/details...原创 2019-05-11 08:55:23 · 449 阅读 · 0 评论 -
TransactionTooLargeException异常
一、问题以及解决方案TransactionTooLargeException异常是一个很不常见的异常,开发几年了,首次遇到这个异常,一部分手机会出现这种情况,当时还很惊奇。最后经查找原来是Activity启动时候intent数据传递过大发生的。当时是一个分享功能的偶发bug,在分享时候传递数据包括标题、链接,网址,截图等参数,截图传递的是截取的Bitmap,果然是Bitmap太大了,导致...原创 2019-04-27 17:07:25 · 8199 阅读 · 0 评论 -
日历时间选择器
最近一直很忙很忙,去年年底公司裁了一拨人,导致新的需求人手不够,每个人任务都很重,虽说不是996,但是加班一直在进行,想写点什么东西总结总结,但是一直没有时间,今天发一个日历选择器,效果如下:该日期选择器高度,默认选择时间,颜色,字体大小,滑动弯曲效果,标题,取消,确定等等都支持自定义。下载地址:https://download.youkuaiyun.com/download/y...原创 2019-04-13 15:05:48 · 356 阅读 · 0 评论 -
Android中类的加载以及应用
将重点介绍一下三个方面:类的加载机制 热修复原理 增量更新原理一、类加载器的分类1、Java ClassLoader(1)启动类加载器:Bootstrap ClassLoader用C++编写的,是JVM自带的类加载器,负责Java平台核心库,用来加载核心类库。该加载器无法直接获取。加载存放在JAVA_HOME\lib目录中的类。(2)扩展类加载器:Extension Cl...原创 2019-03-03 09:20:15 · 2145 阅读 · 2 评论 -
探究ZoomImageVie中的图片居中和多点触控
ZoomImageView是一个支持收拾缩放,多点触控的开源控件,这篇文章学习他的图片居中和手势缩放。要缩放的是一个图片所以要用到自定义控件,我们MyZoomImageView,继承自AppCompatImageView实现他的构造方法,既然是图片的处理,我们这里用到了一个类Matrix,他是一个3×3的一个矩阵,可以对图片进行缩放、旋转、位移、倾斜等处理。因此需要在构造方法里面进行初始化,...原创 2019-02-23 20:43:38 · 605 阅读 · 0 评论 -
Activity异常关闭时数据的存储和恢复过程分析
在正常情况下关闭Activity,例如按下返回键、返回箭头等Activity直接就被销毁。但是在Activity内存不足、异常关闭或者屏幕旋转等情况的时候,当前的Activity会被销毁,这个过程中页面上的Fragment、View等信息会被保存下来,当再次展示的时候会被重建,重建后的Activity就会恢复这些数据。一般情况下当系统配置发生改变的时候Activity都会被重建,如果我们不希...原创 2019-02-17 15:47:18 · 1380 阅读 · 0 评论 -
View绘制的三大过程
在view加载完之后android就开始进行view的绘制了,在view的绘制过程都必须经历三个最主要的过程,也就是measure、layout和draw,接下来进行逐个分析。1、measure过程measure过程主要是对view的宽高进行测量,获取view的大小,在view中对应的方法是onMeasure方法,如下: @Override protected v...原创 2016-12-28 14:38:48 · 942 阅读 · 0 评论