自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

idisfkj的博客

Android成长之路分享

  • 博客(26)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android Startup实现分析

前言Android Startup提供一种在应用启动时能够更加简单、高效的方式来初始化组件。开发人员可以使用Android Startup来简化启动序列,并显式地设置初始化顺序与组件之间的依赖关系。 与此同时,Android Startup支持同步与异步等待、手动控制依赖执行时机,并通过有向无环图拓扑排序的方式来保证内部依赖组件的初始化顺序。Android Startup经过几轮的迭代已经更加完善了,支持的功能场景也更加多样,如果你要使用Android Startup的新特性,请将依赖升级到最新版本l.

2020-09-11 08:22:54 4230 1

原创 我为何弃用Jetpack的App Startup?

前言最近Jetpack又添加了新成员App Startup,官方声明这是一个在Android应用启动时,针对初始化组件进行优化的依赖库。本人第一次听到后非常高兴,因为自己负责的项目在启动时需要初始化的东西实在是太多,而且有点杂乱无章,都耦合在一起了。对于可以异步初始化的组件也没有进行异步处理,而对于已经处理过的异步组件它们之间的依赖关系或者多个异步之后的统一逻辑处理也没有一个很好的统一规范。所以针对这种情况早就想找个方案来优化了,这次终于等到了App Startup。但是,当我元气满满的去查看官方文档.

2020-08-06 07:44:44 440

原创 动态代理分析与仿Retrofit实践

我们一直都在使用Retroift,都知道它的核心是动态代理。例如在之前的文章重温Retrofit源码,笑看协程实现中也简单提及到动态代理(来填之前挖的坑…)。咳咳,大家不要关注起因,还是要回归当前的内容。这次主要是来分析一下动态代理的作用与实现原理。既然都已经分析了原理,最后自然也要动手仿照Retrofit来简单实现一个Demo。通过最后的Demo实现,相信动态代理你也基本没什么问题了。静态代理既然说到动态代理,自然少不了静态代理。那么静态代理到底是什么呢?我们还是通过一个简单的场景来了解。假.

2020-10-29 18:38:09 147

原创 从零开始的Flutter之旅: Provider

往期回顾从零开始的Flutter之旅: StatelessWidget从零开始的Flutter之旅: StatefulWidget从零开始的Flutter之旅: InheritedWidget在上篇文章中我们介绍了InheritedWidget,并在最后引发出一个问题。虽然InheritedWidget可以提供共享数据,并且通过getElementForInheritedWidgetOfExactType来解除didChangeDependencies的调用,但还是没有避免CountWidget.

2020-06-22 20:19:48 311

原创 从零开始的Flutter之旅: InheritedWidget

往期回顾从零开始的Flutter之旅: StatelessWidget从零开始的Flutter之旅: StatefulWidget在之前的文章中,介绍了StatelessWidget与StatefulWidget的特性与它们的呈现原理。这期要聊的是它们的另一个兄弟InheritedWidget。特性InheritedWidget是Flutter中的一个非常重要的功能组件,它能够提供数据在widget树中从上到下进行传递。保证数据在不同子widget中进行共享。这对于一些需要使用共享数据的场景非.

2020-06-12 18:46:27 206 1

原创 从零开始的Flutter之旅: StatefulWidget

往期回顾从零开始的Flutter之旅: StatelessWidget在之前的文章中,我们介绍了StatelessWidget的特性与它在Flutter中的呈现原理。这次我们接着来聊聊它的兄弟StatefulWidget,俗称有状态小部件。特性如果你看了我之前的文章,你可能已经非常熟悉无状态小部件StatelessWidget。它们是由一个蓝图与不可变的element配置来实现的,实际...

2020-03-16 22:54:49 161

原创 从零开始的Flutter之旅: StatelessWidget

这次要展示的是什么是Flutter的Widget,即小部件;以及如何在Flutter中使用StatelessWidget,即无状态小部件。至于Flutter,通俗的讲是开发者可以通一套简单的代码来同时构建Android与IOS应用程序。特性小部件是Flutter应用程序的基本构建模块,每一个都是不可变的声明,也是用户界面的一部分。例如button,text,color以及布局所用到的pad...

2020-03-07 10:04:51 686

原创 Android Gradle系列-进阶篇

上篇文章我们已经将Gradle基础运用介绍了一遍,可以这么说,只要你一直看了我这个Gradle系列,那么你的Gradle也将过关了,应对正常的工作开发已经不成问题了。这篇文章我要向你介绍的是关于如何使用Gradle来更加优雅的管理多个module之间的依赖关系。相信你一定有这样的经历:主项目依赖于多个子项目,或者项目间互相依赖。不同子项目间的依赖的第三方库版本又没有进行统一,升级一个版本所有...

2019-06-10 20:28:08 996 1

原创 Gradle系列-运用篇

上次我们说到gradle的原理,主要是偏理论上的知识点,直通车在这Android Gradle系列-原理篇。这次我们来点实战的,随便巩固下之前的知识点。android在app module下的gradle.build中都有一个android闭包,主要配置都在这里设置。例如默认配置项:defaultConfig;签名相关:signingConfig;构建变体:buildTypes;产品风格:p...

2019-05-30 20:45:29 215

原创 Android Architecture Components Part2:LiveData

感谢你的再次光临,欢迎来到Android Architecture Components(ACC)系列文章。上篇文章我们一起讨论了Room,通过Room我们能够方便的操作App的数据库。如果你的App对本地数据库有所依赖的话,Room你值得拥有。今天这篇文章继续上篇文章的步伐,让我们一起来全面了解ACC另一强大的组件LiveData。相信你马上会喜欢上她!简述LiveData是...

2018-06-14 07:59:19 344

原创 Android Architecture Components Part1:Room

前言Android Architecture Components(AAC)首次发布与2017 GoogleI/O大会,经过近一年的维护,现在Google团队已经发布了稳定版(v1.1.1)。能够更好的帮助我们来构建自己的App应用,如果你还没有了解ACC现在时间刚刚好,来不及解释,赶紧上车吧。ACC是一个架构组件,它能帮忙我们更好的来管理我们的App,方便我们的开发。它能帮助我们...

2018-06-13 23:38:15 117

原创 Bitmap的图片压缩汇总

前言Bitmap是Android中一种重要的图片处理机制,它可以用来获取图片的相关信息,同时可以对图片进行裁剪、缩放等操作,也可以指定图片格式进行保存。相信对于OOM再熟悉不过了,OOM的产生是一个非常头疼的事情,如果在加载图片的时候未对大图进行处理,它将会占用非常大的内存,这样就非常容易产生OOM。所以我们必须要有意识的对大图进行压缩加载,这样才能更好的保证App的正常运行与性能的稳定。...

2018-04-03 07:15:30 289

原创 Fresco源码分析之Controller

如果你是第一次看我的Fresco的源码分析系列文章,这里强烈推荐你先阅读我的前面两篇文章Fresco源码分析之DraweeView与Fresco源码分析之Hierarchy。好了,下面进入正题。在上篇文章中我们提到,在Fresco中关于图片的缓存、请求与显示逻辑处理都在Controller中。那么Controller到底是如何贯穿这些功能的呢?我们先从它的出生开始。SuppilerPipelineD

2017-12-28 23:36:59 461

原创 Fresco源码分析之Hierarchy

上篇文章我们分析了Fresco中的DraweeView,对其中的一些原理以及方法进行了解析。在这过程中我们了解到,DraweeView中是通过DraweeHolder来统一管理的。而DraweeHolder又是用来统一管理相关的Hierarchy与Controller,如果想了解DraweeView相关的知识,可以先看下我的前一篇文章Fresco源码分析之DraweeView。今天这里进一步来分析F

2017-12-14 08:57:57 237

原创 Fresco源码分析之DraweeView

在Android中图片加载的框架很多,例如:Fresco、Picasso、Glide与Imageloader。它们都有各自的优点,但总的来说,使用起来方便简单、可配置性高与提供良好的缓存机制。由于平常主要用的还是Fresco,所以这里有必要对Fresco的原理进行深入研究。这样对于以后的使用与理解将会得到巨大的帮助。Fresco是专注于对图片加载而设计的框架,所以对于以图片为主的App强烈推荐使用。

2017-12-14 08:51:50 384 1

原创 Kotlin最佳实践

前一段时间开发比较轻松,所以就研究了一下google主推的kotlin语言。我一直坚信,快速学习与掌握一门语言的最好方式就是实践,边开发项目边学习。这样才能快速的将学习的知识运用到实践中,从而发现问题,总结经验。如果你也想学习kotlin或者也正在学习kotlin,那么我们不妨可以携手共济,在实践中提升自己,快速掌握kotlin。下面我要介绍的项目是完全使用kotlin编写的一个关于新闻的App,由

2017-08-23 23:43:09 477

原创 Android共享动画兼容实现

生命不息,奋斗不止前言看了一下之前的文章记录,最近的文章是在3月12日写的,今天的7月16日。不知不觉已经4个月没有坐在电脑前认真的思考与静下心来做些总结。趁着刚刚王者荣耀超神的兴奋热度,接下来说说我对Android共享动画方面的一些心得。实现方案这里我姑且都认为大家都对共享动画的效果有所了解,简单的说就是从一个界面平移缩放过度到另一个界面。在实现方面上针对不同Android系统版本,有不同的做法

2017-07-24 20:53:35 370

原创 React Native For Android

前言React Native有点大势所趋,所以前段时间研究了下它,看了它的官方文档同时也在Github浏览了前辈们的杰作,所以自己也写了一个简单的Demo也算是一个好的入门。配合官方文档与代码实例相信都能很快的进入React Native的世界。下面我介绍的不会很详细,是针对React Native语法有一定会基础的同学。React Native介绍这里简单的介绍下React Native它是借助

2016-08-29 16:15:07 475

原创 LoopView-循环轮播控件

这次我们来学习一下日常看到的广告轮播器,几乎每个App中都拥有这样的控件。这种使用频繁的控件,我们应该懂得它们的实现原理,这样我们在使用的工程中就能更加熟练与轻松。先来看下效果吧。效果图原理其实这个控件的实现本质就是一个ViewPager,相信大家对ViewPager不会很陌生,例如ViewPager+Fragment实现新闻的界面。首先我们要明确我们所要的需求,我们要实现ViewPager滑动切换

2016-08-09 20:22:24 670

原创 RecyclerView下拉刷新与上拉更多

前言在原来的文章中我提及了如何使用RecyclerView添加header与footer,今天我们来更深入的扩展一下使用RecyclerView实现常用的下拉刷新与上拉加载更多的功能。当然这些功能的实现也是基于前面的RecyclerView添加header与footer为基础来实现的,不是很了解的可以先看看前面的文章可能能更好的帮助理解。依赖为了方法大家的使用我已经把他上传到Jcenter中了,所以

2016-08-03 19:02:31 252

原创 android 软键盘显隐

前言最近遇到软键盘的显隐判断问题,原来也遇过一次,所以这次针对这类问题的解决方法做下记录,也希望帮助后面碰到相同问题的你们。根据自己的经验,这里有三种解决方法,其实原理都是一样的。我们都知道软件盘的弹出,视图的布局会发生改变,所以可以通过布局的改变来判断是否显示了软件盘。自定义方法个人觉得它的灵活性相对于别的更高。因为这只是在类中定义一个方法,来判断是否软键盘触发了。这样你可以运用到任何监听事件中来

2016-05-25 09:28:31 362

原创 Android高仿微信之mvp实现(四)

前面把聊天的基本功能都实现了,最近有点忙,因为快到学期末了,考试就来了,所以后面可能会慢点。大家都反映没有消息提醒,所以抽了点时间把聊天的提醒简单的实现了下,下面简单的介绍下。原理我这里用到得原理主要就两个知识点NotificationBadgeView只要你解决了这两项以后的消息提醒神马的都能轻松搞定。首先来解释下他们的应用,对于Notification我想应该很多都接触了,但还是简单的说下

2016-05-15 17:26:36 762

原创 Android高仿微信之mvp实现(三)

前面说到如何使用小米的推送来实现简单的聊天系统,虽然简单实现了,但是对于你们来说想要真正的体验效果就只能跟我互动,为了解决这个缺点,我最近完善了下,增加了添加朋友的功能,这样你们就可以自己拿两个测试机互相测试。就能体验整个过程,下面还是简单的说下。原理其实主要用到的就是对数据库的操作,但我这里不讲对数据库方面的操作,因为这方面的内容有点多,就不到这里展开,以后有时间再展开。上篇文章Android高仿

2016-05-08 13:33:09 1369

原创 Android高仿微信之mvp实现(二)

前言上次说了下简单的框架构架,主要是解释了下MVP的原理实现。虽然上次的功能没有很多,但主要是把框架搭好,才能更好的进行下面的操作。如果还有不了解的可以先看下我前面的文章:Android高仿微信之mvp实现(一) 好了,这次我们要介绍的是微信聊天界面功能的简单实现。原理其实知道了原理你就会发现它是多么的简单。这里没有服务器所以是基于推送实现的,网上也有一些这方面的资料,一般是基于百度云的,我这里是

2016-05-02 10:07:35 587

原创 Android二维码扫描

前言微信的二维码扫描用的越来越多,所以最近就想弄明白它的实现,于是找了点资料,发现都是说使用zxing的开源库。这是一个很强大的开源项目,引用该项目只要简单的几步代码就能实现一个简单的二维码扫描与生成的效果。这里做点笔记记下,还不知道如何实现的也可以来学习下。准备工作先下载zxing项目,不过推荐下载精简版,BarCodeTest这个就足够实现该功能了。把下载的项目添加到自己项目的依赖中,引用该项目

2016-04-18 16:51:38 264

原创 PickerView的开源依赖

前言上个月的滑轮选择器,今天趁着放假把它修改了下,上传到了开源库中,方便大家的使用,下面说下简单的变化.实例化类的改变原先是使用TextPicker类来实例化,现在修改成MyPicker.MyPicker picker = new MyPicker();对外方法的增删删除了原来的获取确定控件 getOK()方法增加了显示滑轮选择的个数 setShowNum()方法增加了完成监听事件 setSe

2016-04-10 11:00:47 313

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除