自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 收藏
  • 关注

原创 RN集成原生Android应用

1.设置目录结构创建一个空目录用于存放 React Native 项目,然后在其中创建一个/android子目录,把你现有的 Android 项目拷贝到/android子目录中。2.安装javascript依赖包在项目根目录下创建一个名为package.json的空文本文件,然后填入以下内容:{ "name": "rntestthree", "version": "0.0....

2019-04-22 16:01:59 637

原创 java反射及应用

1.反射概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。反射就是把java类...

2019-04-08 17:07:44 3090

原创 Google AAC(Android Architecture Components)实现MVVM展示架构

1.AAC架构简介Android Architecture Components,实际上是android官方提供的一系列组件,用来实现MVVM架构。官方架构图如下:View层 绿色框中的Activity/Fragment,继承至LifecycleActivity\LifecycleFragment,是UI控件的宿主。核心职责是:更新UI控件显示,包括状态及数据,由ViewMod...

2019-03-07 19:58:04 3923 1

原创 混合开发: Android与H5互相调用

1.H5调起原生1.1 对WebView进行初始化:WebSettings settings = webview.getSettings();settings.setJavaScriptEnabled(true); //允许在WebView中使用js1.2 创建一个CustomWebViewClient extends继承WebViewClient,也可以专门定义一个类JavaSc...

2019-02-25 14:57:20 1681

转载 解析RecyclerView.ItemDecoration

1.简介RecyclerView.ItemDecoration的作用是给ItemView添加装饰,绘制更多内容,增强itemUI的效果。例子:1)绘制分割线2) 数据分组等2.使用方法:ItemDecoration类中仅有3个方法,具体如下:public class TestDividerItemDecoration extends RecyclerView.ItemDe...

2019-01-18 18:29:24 934

原创 RecyclerView 的ViewPageLayoutManager

实现类似抖音的的全屏上下滑动翻页效果,方案有两种:1.ViewPageViewPager来实现的时候,手机内存不够用的情况就会显现出来2.RecyclerViewRecyclerView可以帮我们处理内存的回收和利用实现过程:1.自定义LayoutManager,并且继承LinearLayoutManager,这样就得到一个可以水平排向或者竖向排向的布局PagerSna...

2019-01-17 18:43:52 3077

原创 RecyclerView扩展知识: DiffUtil

1.简介DiffUtil是support-v7:24.2.0中的新工具类,它用来比较两个数据集,寻找出旧数据集-》新数据集的最小变化量,定向刷新列表。它最大的用处就是在RecyclerView刷新时,不再使用mAdapter.notifyDataSetChanged()全部刷新,全部刷新的缺点:不会触发RecyclerView的动画(删除、新增、位移、change动画) 性能较低,毕...

2019-01-16 19:19:10 1558

原创 RecyclerView 扩展知识:SnapHelper

1.简介RecyclerView在24.2.0版本中新增了SnapHelper这个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。特别是列表横向滑动时,很多时候不会让列表滑到任意位置,而是会有一定的规则限制,这时候就可以通过SnapHelper来定义对齐规则了。SnapHelper是一个抽象类,官方提供了一个LinearSnapHelper的子类,可以让Rec...

2019-01-16 18:47:23 461

原创 模块化,组件化,插件化简析

1.架构演变1.1 单工程模式我们开发移动项目,我相信大多用的是单工程单任务的开发模式,二话不说,直接就开始写起,是不是这样呢? new Project -> 分包 -> 写起, 简单直接粗暴,但有效率,上手快,没有杂七杂八的处理方式。这是因为项目简单,业务单一。2.1 模块化Android Studio出来了,多出来了一个新的概念, Project, Module.....

2019-01-16 11:31:48 701

原创 AS升级到3.0之后的遇到的问题与解决办法

Android Studio升级到3.0以后,原来工程的gradle配置文件会有一些不匹配的地方,会出现一些错误,主要如下:1.gradle必须升级到4.0以上我们在AS中用到的Gradle其实应该被叫做 Android Gradle Plugin,也就是安卓项目上的gradle插件;Gradle插件会有版本号,每个版本号又对应有一个或一些 Gradle发行版本(一般是限定一个最低版本),也就是我...

2018-07-09 16:07:36 503

原创 Gradle 使用指南

1.Gradle概述      Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。Gradle就是工程的管理,帮我们做了依赖,打包,部署,发布,各种渠道的差异管理等工作。 2. Gradle文件分析...

2018-07-05 18:46:29 1624

原创 ButterKnife使用详解

前言: ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class。

2018-04-24 19:19:28 373

原创 CoordinatorLayout自定义Behavior

1.Behavior简介Behavior是CoordinatorLayout里面的一个内部类,通过它我们可以与 CoordinatorLayout的一个或者多个子View进行交互,包括 drag,swipes, flings等手势动作。今天 我们主要着重介绍里面的几个方法方法解释boolean layoutDependsOn(Coordi

2018-03-15 17:01:19 700

原创 CoordinatorLayout使用详解: 打造折叠悬浮效果

1.简介CoordinatorLayout遵循Material 风格,包含在 support Library中,结合AppbarLayout, CollapsingToolbarLayout等 可 产生各种炫酷的折叠悬浮效果。- 作为最上层的View - 作为一个 容器与一个或者多个子View进行交互2.AppBarLayout它是继承与LinearLayout的,默认 的 方

2018-03-15 11:30:42 80693 19

转载 Java泛型详解

转载自:http://blog.csdn.net/s10461/article/details/539410911.概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的

2018-03-13 15:06:39 211

原创 Activity任务栈及启动模式详解

1.任务栈简介1). android任务栈又称为Task,它是一个栈结构,具有后进先出的特性,用于存放我们的Activity组件。2). 我们每次打开一个新的Activity或者退出当前Activity都会在一个称为任务栈的结构中添加或者减少一个Activity组件,因此一个任务栈包含了一个activity的集合, android系统可以通过Task有序地管理每个activity,并决

2018-03-12 16:13:26 850

原创 RecyclView使用详解(四): 添加Header和footer

1.方法1)其实HeaderView实际上也是Item的一种,只不过显示在顶部的位置,那么我们完全可以通过为其设置ItemType来完成。2) 封装更简便的方法按照常规的办法,打开我们的Adapter,然后按照我们上述的原理,添加特殊的ViewType。但是有个问题是,如果需要添加viewType,那么可能我们的Adapter需要修改的幅度就比较大了,比如getItemType、g

2018-03-05 18:57:13 765

原创 利用NestedScrolling实现悬浮式导航详情页

1.需要实现的效果图如下:实现方式主要有两种:1)、ScrollView内嵌软件介绍+ViewPager+ViewPager中是ScrollView,这种方式呢,纯原生,没有涉及到自定义控件,但是这样嵌套呢,涉及到测量以及事件的冲突处理。2)、将做外层的ScrollView改为了自定义的一个控件,继承自LinearLayout,叫做StickyNavLayout,利用Nes

2018-03-05 18:14:15 1054

原创 okHttp系列(三): 缓存

1.基本的cacheOKHTTP如果要设置缓存,首要的条件就是设置一个缓存文件夹,在Android中为了安全起见,一般设置为私密数据空间。通过getExternalCacheDir()获取。如然后通过调用OKHttpClient.Builder中的cache()方法。如下面代码所示://缓存文件夹File cacheFile = new File(getExternalCacheDi

2018-02-07 17:22:06 384

原创 okHttp系列(二):高级功能:下载,上传以及拦截器

1.下载文件在ResponseBody中有如下接口:byte()string()bytesStream()charStream()其中byte()和string()是一次读取,用来获取体积比较小的内容。但如果遇到大文件的话,就应该用流的方式。 所谓下载也就是将服务器返回的数据存储在本地。当体积体积较小时,用byte()或者string()获取内容

2018-02-07 15:55:39 1134

原创 Http缓存机制

1.缓存规则解析为方便大家理解,我们认为浏览器存在一个缓存数据库,用于存储缓存信息。在客户端第一次请求数据时,此时缓存数据库中没有对应的缓存数据,需要请求服务器,服务器返回后,将数据存储至缓存数据库中。HTTP缓存有多种规则,根据是否需要重新向服务器发起请求来分类,我将其分为两大类(强制缓存,对比缓存)在详细介绍这两种规则之前,先通过时序图的方式,让大家对这两种规则有个简单

2018-02-05 17:07:16 216

原创 RecyclerView系列(三): 滑动事件检测

1.概述这是一个关于RecycleView滑动事件检测RecycleView滑动到顶部或者底部的状态. 可用于实现RecycleView加载更多或者刷新(虽然刷新可以直接用SwipeRefreshLayout).也可用于某些滑动相关的需求,如FloatingActionButton的隐藏与显示之类的.2.滑动监听RecycleView本身已经提供了滑动的监听接口,OnScrollLis

2018-02-01 20:57:59 1734

原创 ViewPager轮播详解

主要包括以下内容: ViewPager 基本使用(简介、适配器) ViewPager + TabLayout + Fragment 的使用 ViewPager 轮播图的使用(指示器、标题、自动轮播、首尾循环) ViewPager 的切换效果(PageTransformer)ViewPager 切换效果进阶1.ViewPage的基础使用常用的方法有以下几个: setA

2018-01-19 18:13:00 6209

原创 Fresco的解析和使用

1.概念介绍Fresco是Facebook开源Android平台上一个强大的图片加载库,也是迄今为止Android平台上最强大的图片加载库。优点:相对于其他开源的第三方图片加载库,Fresco拥有更好的内存管理和强大的功能,基本上能满足所有的日常使用场景。缺点:整体比较大,不过目前的版本已做了拆分,你只需要导入你使用到的功能相关的库。从代码层面来说侵入性太强,体现在要使用它需要用F

2018-01-18 19:14:00 3605

原创 Android消息机制:从源代码分析

1.概念介绍1)、成员介绍 Message:主要功能是进行消息的封装,同时可以指定消息的操作形式; Looper:消息循环泵,用来为一个线程跑一个消息循环。每一个线程最多只可以拥有一个。 MessageQueue:就是一个消息队列,存放消息的地方。每一个线程最多只可以拥有一个。 Handler:消息的处理者,handler 负责将需要传递的信息封装成Message,发送给Loo

2017-12-27 17:06:55 186

原创 自定义View(二): OnLayout详解

1.源码分析探讨自定义控件的第二步onLayout即确定控件的位置,上篇文章我们说到performTraversals方法中会调用host.measure方法,在调用完host.measure方法后,就会调用host.layout对View进行定位,这也是今天我们要讨论的内容。首先我们来看看layout的源码 public final void layout(int l, int

2017-12-26 15:15:11 527

原创 自定义View(一): OnMeasure详解

1.从示例开始自定义一个View,显示"HelloWorld"import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSe

2017-12-26 13:54:11 271

原创 ANR日志分析方法

1.ANR的类型ANR一般有三种类型:1:KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应A key or touch event was not dispatched within the specified time(按键或触摸事件在特定时间内无响应)具体的超时时间的定义在framework下的Activi

2017-12-25 16:08:37 1218

转载 Android属性动画完全解析(三):Interpolator和ViewPropertyAnimator的用法

转载自:http://blog.csdn.net/guolin_blog/article/details/441711151.Interpolator的用法Interpolator这个东西很难进行翻译,直译过来的话是补间器的意思,它的主要作用是可以控制动画的变化速率,比如去实现一种非线性运动的动画效果。那么什么叫做非线性运动的动画效果呢?就是说动画改变的速率不是一成不变的,像加

2017-11-23 19:16:16 269

转载 Android属性动画完全解析(二):ValueAnimator和ObjectAnimator的高级用法

转载自:http://blog.csdn.net/guolin_blog/article/details/435363551.valueAnimator的高级用法在上篇文章中介绍补间动画缺点的时候有提到过,补间动画是只能对View对象进行动画操作的。而属性动画就不再受这个限制,它可以对任意对象进行动画操作。那么大家应该还记得在上篇文章当中我举的一个例子,比如说我们有一个自定

2017-11-23 18:43:01 229

转载 Android 属性动画解析(一): 基本用法

转载自:http://blog.csdn.net/guolin_blog/article/details/435363551.为什么引入属性动画Android之前的补间动画机制其实还算是比较健全的,在android.view.animation包下面有好多的类可以供我们操作,来完成一系列的动画效果,比如说对View进行移动、缩放、旋转和淡入淡出,并且我们还可以借助Anima

2017-11-23 18:19:02 155

原创 RecyclerView详细使用(二):Herder添加以及adpter封装

1.RecyclerView的优势:它自带ViewHolder来实现View的复用机制,再也不用ListView那样在getView()里自己写了 使用LayoutManager可以实现ListView,GridView以及流式布局的列表效果通过setItemAnimator(ItemAnimator animator)可以实现增删动画(懒的话,可以使用默认的ItemAnimator对象

2017-11-15 14:20:35 320

原创 Android屏幕适配详解

1.屏幕适配中的基本概念1.1 测量单位in:英寸inch,物理尺寸,1in =2.54厘米(cm)。4.2寸手机等等就是这个in,通常说的手机4.2寸,都是手机对角线4.2in。dpi:这个知道英文名有助于理解意义,its english name is:  Dots Per Inch.每英寸的点数嘛,每英寸的像素个数。例如:320X480分辨率的手机,宽2in,高3in,那么每

2017-10-16 11:15:40 488

原创 Android 5.x theme: AppCompatActivity与toolbar的结合

1.概述Android 5.x theme 是material design风格的主题。在API22之前我们使用标题栏基本都是在ActionBarActivity的Activity中处理的,而API22之后,谷歌遗弃了ActionBarActivity,推荐我们也可以说是强制我们使用AppCompatActivity。编译版本和匹配的支持库:compileSdkVersion

2017-10-12 11:15:40 497

原创 RxLifecycle解决RxJava内存泄漏

1.RxJava导致内存泄漏使用RxJava发布一个订阅后,当页面被finish,此时订阅逻辑还未完成,如果没有及时取消订阅,就会导致Activity/Fragment无法被回收,从而引发内存泄漏。写段代码测试一下,定义一个Activity,布局中显示一张图片,这样可以直观的看到此Activity的内存占用情况,然后在Activity中发布一个订阅后,关闭Activity,订阅逻辑如下

2017-10-10 16:15:46 1482

转载 RecyclerView使用解析

1.概述该控件用于在有限的窗口中展示大量数据集,可以实现ListView,GridView的功能,通过导入support-v7对其进行使用。那么有了ListView、GridView为什么还需要RecyclerView这样的控件呢?整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoratio

2017-07-26 14:01:19 290

原创 RxJava详解(一)

1.RxJava 项目地址及依赖GitHub 链接和引入依赖的 gradle 代码: Github: https://github.com/ReactiveX/RxJava https://github.com/ReactiveX/RxAndroid 引入依赖: compile 'io.reactivex:rxjava:1.0.14' compile 'io.reactiv

2017-07-11 18:18:36 706

原创 Retrofit2完全解析(二)

1. Retrofit源码解析1.1 retrofit如何为我们的接口实现实例通过上文的学习,我们发现使用retrofit需要去定义一个接口,然后可以通过调用retrofit.create(IUserBiz.class);方法,得到一个接口的实例,最后通过该实例执行我们的操作,那么retrofit如何实现我们指定接口的实例呢?其实原理是:动态代理。Java中已经提供了非常简单的API帮

2017-07-04 11:12:23 455

原创 Retrofit2 完全解析(一)

1.概述     在对Android 开发中,我们都是从原生的HttpUrlConnection到经典的 Apache公司的HttpClient,再到对前面这些网络基础框架的封装(比如Volley、AsyncHttpClient等)。Http请求相关开源框架还是很多的,今天我们讲解 Square 公司开源的Retrofit。Square 公司的框架总是一如既往的简洁优雅!Retrofi

2017-07-03 18:38:48 535

转载 Android Service解析(二):远程Service的使用

转载自:http://blog.csdn.net/guolin_blog/article/details/9797169关于Service其实还有一个更加高端的使用技巧没有介绍,即远程Service的用法。使用远程Service甚至可以实现Android跨进程通信的功能,下面就让我们具体地学习一下。本篇文章的主题是介绍远程Service的用法,如果将MyService转换成一个

2017-05-18 11:42:36 300

空空如也

空空如也

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

TA关注的人

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