自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 实现流式布局的几种方式和FlexboxLayout的使用

Github地址依赖dependencies { implementation 'com.google.android:flexbox:2.0.1'}什么是FlexboxLayout那么FlexboxLayout 它到底是个什么东西呢?看一下Github对这个库的介绍:FlexboxLayout is a library project which brings the similar capabilities of CSS Flexible Box Layout Module to A

2021-01-11 20:02:54 2512 4

原创 Android Jetpack(10):WorkManager

WorkManager介绍作为 Android Jetpack 中的新组件,WorkManager 负责用来管理后台任务,说简单点是和异步任务Task或者 Service 作用一样,都可以处理异步任务或后台任务。WorkManager用于支持Android在后台的任务运行,提供延迟、周期性,约束性需求的后台任务。任务是交给系统统一调度的,适合一些轻量级的后台功能使用。还能支持在Doze模式下运行后台任务,WorkManager会在Doze模式的窗口期运行任务。WorkManager的设计用意就是取代后

2020-11-20 11:54:33 1009

原创 Android Jetpack(9):Paging3 的使用

Paging介绍Paging是Google 2018IO大会最新发布的Jetpack中的一个组件,主要用于大数据的分页加载,这篇文章就来探索一下关于Paging的简单使用。Paging它是什么,怎么用?一句话概述: Paging 可以使开发者更轻松在 RecyclerView 中 分页加载数据。分页效果实现方式在使用之前,我们需要搞明白的是,目前Android设备中比较主流的两种 分页模式,用我的语言概述,大概是:传统的 上拉加载更多 分页效果无限滚动分页效果(当滑动了一定量的数据时,会

2020-11-19 18:50:28 1306 2

原创 Android Jetpack(8):Room

Room介绍Room 持久性库在 SQLite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制。处理大量结构化数据的应用可极大地受益于在本地保留这些数据。最常见的用例是缓存相关数据。这样,当设备无法访问网络时,用户仍可在离线状态下浏览相应内容。设备之后重新连接到网络后,用户发起的所有内容更改都会同步到服务器。由于 Room 负责为...

2020-11-18 16:58:40 407

原创 Android Jetpack(7):Navigation

Android NavigationNavigation(导航)概述Google 在2018年Google I/O开发者大会上发布了一系列辅助android开发者的实用工具,合称Jetpack。在JetPack中有一个组件是Navigation,顾名思义它是一个页面导航组件,相对于其他的第三方导航,不同的是它是专门为Fragment的页面管理所设计的。它对于单个Activity的App来说非常有用,因为以一个Activity为架构的App页面的呈现都是通过不同的Fragment来展示的。所以对于Fra

2020-11-18 16:31:55 404

原创 Android Jetpack(6):LiveData

LiveData介绍LiveData也是Google I/O 大会上发布的架构组件, LiveData 是一个可以被观察的数据持有类,它可以感知 Activity、Fragment或Service 等组件的生命周期。LiveData是一个可被观察的数据持有者类,不过它和其他的可观察对象不同,它会与生命周期相关联,比如Activity的生命周期,LiveData能确保仅在Activity处于活动状态下才会更新。也就是说当观察者处于活动状态,才会去通知数据更新。个人觉得这是为了避免内存泄漏,可以说是很

2020-11-17 17:35:31 926

原创 Android Jetpack(4):ViewModel

ViewModel介绍ViewModel类是被设计用来以可感知生命周期的方式存储和管理 UI 相关数据,为了更好的以生命周期的方式管理界面相关的数据。ViewModel中数据会一直存活,即使configuration发生改变(比如旋转屏幕),数据仍然可以存在不会销毁。Android中的ViewModel是一个可以用来存储UI相关的数据的类那ViewModel为什么可以管理这些数据呢?主要还是因为ViewModel的生命周期比Activtiy、Fragment生命周期来的更长。ViewModel

2020-11-15 00:14:27 1681 1

原创 Android Jetpack(3):Lifecycle

什么是Lifecycle?LifeCycle是GoogleApp架构中推荐的一个组件。Lifecycles 包含有关Activity与Fragment生命周期状态的信息,并允许其他对象观察此状态。Lifecycle组件包括LifecycleOwner、LifecycleObserver。作用简单的说就是用来监听Activity与Fragment的生命周期变化,在变化时能及时通知其他组件。为什么要引进Lifecycle?前面说了,Lifecycle能够让开发者构建能感知其他组件(主要指Acti

2020-11-14 23:23:15 417

原创 Android Jetpack(2):DataBinding的使用

Android DataBinding 从入门到进阶DataBinding 介绍DataBinding 是谷歌官方发布的一个框架,顾名思义即为数据绑定,是 MVVM 模式在 Android 上的一种实现,用于降低布局和逻辑的耦合性,使代码逻辑更加清晰。MVVM 相对于 MVP,其实就是将 Presenter 层替换成了 ViewModel 层。DataBinding 能够省去我们一直以来的 findViewById() 步骤,大量减少 Activity 内的代码,数据能够单向或双向绑定到 layout

2020-11-13 00:40:42 1937 2

原创 Android Jetpack(1):Jetpack介绍

Jetpack官网Android JetpackJetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。Jetpack 包含与平台 API 解除捆绑的 androidx.* 软件包库。这意味着,它可以提供向后兼容性,且比 Android 平台的更新频率更高,以此确保您始终...

2020-11-12 00:35:50 2842 3

原创 Android 加载进度条,加载成功,数据为空,加载失败,无网络等状态不同界面的切换

https://blog.csdn.net/zhaozhuzi/article/details/73822894https://blog.csdn.net/qq_34115167/article/details/80719219?utm_source=blogkpcl0https://blog.csdn.net/qq_21376985/article/details/52847317

2020-11-11 18:39:48 1164

原创 Android多渠道打包

多渠道打包一般应用于向不同应用市场提交app后用来统计不同渠道下载量等一些信息。什么是多渠道包?渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等为什么要提供多渠道包?我们要在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计(这就是添加渠道信息的用处)。实现多渠道打包的原理一般来讲,这个渠道的标...

2020-11-10 10:56:08 2088

原创 Android 集成极光推送和厂商通道

JPush 产品简介Push 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台。消息形式JPush 提供四种消息形式:通知,自定义消息,富媒体和本地通知。创建应用1. 极光官网注册账号极光推送官网2. 登录后,点击服务中心3. 点击立即进入,进入开发者平台

2020-11-06 17:38:29 4673 4

原创 Android RxLifecycle使用详解

简单介绍RxLifecycle使用原因:在使用rxjava的时候,如果没有及时解除订阅,在退出activity的时候,异步线程还在执行。对activity还存在引用,此时就会产生内存泄漏。RxLifecycle就是为了解决rxjava导致的内存泄漏而产生的。RxLifecycle可以做到什么呢?它可以让Observable发布的事件和当前的组件绑定,实现生命周期同步。从而实现当前组件...

2020-03-11 23:29:05 4611

原创 android 实现微信分享

微信开放平台创建应用创建应用注意事项应用官网:随便写个正确格式的url。上传移动应用图片大小要符合要求。应用签名。把带签名 的apk文件安装至手机中。安装微信的签名生成工具,打开GenSignature应用程序,填写你App的包名,点击“Get Signature”即可得到签名。点击下载 签名生成工具Android接入指南官方文档1.申请你的 AppID请到 ...

2019-12-04 22:51:05 1515 1

原创 android ARouter路由框架的使用和原理

ARouter 简介是ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用。GitHub:https://github.com/alibaba/ARouter应用内简单的Activity跳转 ARouter.getInstance().build("/com/Activity2").navigation();/** *...

2019-09-20 06:32:20 676

原创 Android数据库加密

Android数据库加密一、简介SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的读写效率、资源消耗总量、延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案(如Android、iOS)。Android系统内置了SQLite数据库,并且提供了一整套的API用于对数据库进行增删改查操作,具体就不详细说明了。然而,Android平台自带的SQLite有一个致命的缺陷:...

2019-09-12 06:56:11 3734 1

原创 android sqlite数据库升级

随着我们系统的升级,数据库一般也要跟着一起变化。Android 中的 SQLite数据库根据数据库版本号来判断是否进行了升级。当数据库版本号发生变化后,Android 系统会调用 SQLiteOpenHelper 的ouUpgrade 函数,然后我们在该函数中对版本号进行判断,再根据版本号执行对应的升级数据库的 SQL 语句。数据库升级主要是调用SQLiteOpenHelper 中的onU...

2019-09-12 02:14:36 889 1

原创 Java设计模式(6):适配器模式

适配器模式的定义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式作为两个不兼容接口之间的桥梁。 这种类型的设计模式属于结构模式,因为该模式组合了两个独立接口。这种模式涉及一个单独的类,它负责连接独立或不兼容接口的功能。用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电...

2019-09-01 10:37:10 683 1

原创 Java设计模式(5):代理模式

定义为其他对象提供一种代理以控制这个对象的访问。代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。为什么要采用这种间接的形式来调用对象呢?一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难,因此通过一个代理对象来完成间接的访问。在现实生活中,这种情形非常的常见,比如请一个律师代理来打官司。代理模式...

2019-06-23 17:37:01 700 1

原创 android应用内多进程的实现

Android应用内多进程的介绍正常情况下,一个apk启动后只会运行在一个进程中,其进程名为AndroidManifest.xml文件中指定的应用包名,所有的基本组件都会在这个进程中运行。但是如果需要将某些组件(如Service、Activity等)运行在单独的进程中,就需要用到android:process属性了。我们可以为android的基础组件指定process属性来指定它们运行在指定进程...

2019-05-20 10:25:17 1280

原创 Android常用加密方式

加密解密简介加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。加密技术包括两个元素:算法和密钥。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。加迷解密分类分为不可逆和...

2019-05-16 23:56:10 3519 1

原创 Fragment懒加载

为什么需要懒加载?我们在做安卓项目的时候,经常会有一个使用场景:ViewPage与多个Fragment组合使用。然而,viewpager有着预加载机制:默认一次加载当前页面前后两个页面,即使设置setOffLimit(0)也没有效果。 虽然预加载优化了app的体验效果,但是这样把我们看不到的页面的数据也加载了,大大降低了性能,浪费初始化资源。这时候,我们就需要懒加载。什么是懒加载?页面...

2019-05-16 01:49:27 1742

原创 Android Studio的下载,安装,配置,插件

Android Studio下载下面三个地址都可以下载:https://developer.android.google.cn/studiohttp://www.android-studio.org/https://www.androiddevtools.cn/Android Studio安装步骤双击安装包:依次出现以下界面,点击next即可:设置AS安装路径:这里...

2019-05-14 22:23:49 7619 1

原创 Java设计模式(4):工厂模式

工厂模式种类简单工厂模式工厂方法模式抽象工厂模式一.简单工厂模式又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例。定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法模式属于创建型模式。UML类图Product(抽象产品类):要创建的复杂对象,定义对象的公共接口。ConcreteProduct(具体产品类):实现Product接口。Factory...

2019-03-22 17:15:29 243

原创 Java设计模式(3):建造者模式

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。建造者模式属于创建型模式。

2019-03-22 15:17:36 290 1

原创 ArcGIS for Android 100.3.0(20):加载天地图

天地图官网:http://lbs.tianditu.gov.cn/home.html需要到天地图官网去创建应用,申请应用Key。对天地图和ArcGIS参数不太清楚的可以参考:http://blog.csdn.net/arcgis_all/article/details/8848120?utm_source=tuicool&utm_medium=referral定义天地图相关参数...

2019-03-19 16:06:57 1833 4

原创 RxBinding的使用和源码解析

RxJava想要做Android都用过,即使没有过肯定也听过。RxBinding这个库是JakeWharton的大作,可以响应式的方式来处理UI的响应问题,比如按钮的点击事件,ListView的点击事件,EditText的。文本变化事件等等今天我们就来看一些RxBinding的使用场景,分析并且下源码。github地址依赖RxBinding就不需要再依赖RxJava了,内部已经包含了。依赖...

2019-03-09 14:24:07 888

原创 Android ViewTreeObserver使用总结

ViewTreeObserver这是一个注册监听视图树的观察者(observer),当视图树的布局,视图树的焦点,视图树将要绘制,视图树滚动等发生改变时,ViewTreeObserver都会收到通知,都会有回调,ViewTreeObserver不能被实例化,可以通过getViewTreeObserver()来获得。ViewTreeObserver提供了查看的多种监听,每一种监听都有一个内部类接口...

2019-01-22 14:11:01 1459

原创 Android热修复(3):Tinker的使用

github官网Tinker的基本介绍Tinker – 微信Android热补丁方案。Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用Tinker来更新你的插件。它主要包括以下几个部分:1.gradle编译插件: tinker-patch-gradle-plugin2.核心sdk库:...

2018-11-30 09:38:54 1258 1

原创 Android热修复(2):AndFix热修复框架的使用

AndFix的github地址AndFixAndFix是一个在线修复bug的解决方案,而不是重新发布Android应用程序。它是以Android库的形式发布的。Andfix是“Android热修复”的缩写。AndFix支持Android版本从2.3到7.0,ARM和X86架构,Dalvik和ART runtime, 32位和64位。AndFix补丁的压缩文件格式是.apatch。它从您自...

2018-11-30 09:36:17 242 1

原创 Android热修复(1):热修复的介绍和原理解析

一.热修复的产生概述在开发中我们会遇到如下的情况:1.刚发布的版本出现了严重的bug,这就需要去解决bug、测试并打渠道包在各个应用市场上重新发布,这会耗费大量的人力物力,代价会比较大。2.已经改正了此前发布版本的bug,如果下一个版本是一个大版本,那么两个版本的间隔时间会很长,这样要等到下个大版本发布再修复bug,这样此前版本的bug会长期的影响用户。3.版本升级率不高,并且需要很长时间...

2018-11-30 09:32:40 345

原创 OkHttp3详细使用教程

OkHttp官网地址:http://square.github.io/okhttp/OkHttp GitHub地址:https://github.com/square/okhttp implementation("com.squareup.okhttp3:okhttp:3.12.0")get同步请求 /** * 放在子线程中执行 */

2018-11-22 11:04:20 4422 1

原创 Retrofit2详解

Retrofit框架: 它是Square公司开发的现在非常流行的网络框架retrofit2.0它依赖于OkHttp,在这里我们也不需要显示的导入okHttp,在retrofit中已经导入okhttp3 性能好,处理快,使用简单,Retrofit 是安卓上最流行的HTTP Client库之一github地址使用步骤: 1、定义一个接口(封装URL地址和数据请求) 2、实例化R...

2018-11-19 10:21:06 19406 7

原创 ArcGIS for Android 100.3.0(19):WmsLayer

代表开放地理空间联盟(OGC)Web地图服务(WMS)层。 该服务可以在ArcGIS Online上的云中,第三方服务器上或ArcGIS Server上内部托管。构造方法: 预先知道感兴趣层的名称时创建WMS图层的示例: private MapView mMapView; private String wms_layer_url = "https://certmapp...

2018-09-11 11:47:47 1532

原创 ArcGIS for Android 100.3.0(18):三维地图的使用

SceneViewRuntime100是用了一个GeoView类作为地图的基类直接继承于ViewGroup,然后MapView和SceneView分别作为二维和三维地图的容器继承于GeoView。其实把SceneView当做MapView,把ArcGISScene当做ArcGISMap就行,于是我们简单尝试下。首先是在XML文件里添加SceneView: <com.esri....

2018-09-10 16:00:37 3684 3

原创 ArcGIS for Android 100.3.0(17):SketchEditor(草图编辑器)

SketchEditor表示草图编辑器,允许用户在地图视图上以交互方式绘制几何图形。通过使用相应的SketchCreationMode启动SketchEditor,可以从头开始绘制不同的几何类型,例如点,多点,折线或多边形。构造方法public SketchEditor ()常用方法//如果草图有效,则获取当前几何public Geometry getGeometry (...

2018-09-10 14:54:37 3346

原创 ArcGIS for Android 100.3.0(16):RasterLayer(栅格图层)

栅格图层(RasterLayer)用以加载展示移动端本地文件、移动镶嵌数据集、影像服务。 api地址 https://developers.arcgis.com/android/latest/api-reference/reference/com/esri/arcgisruntime/layers/RasterLayer.html1.影像服务 mMapView...

2018-09-10 11:43:09 2533

原创 ArcGIS for Android 100.3.0(15):GeometryEngine类的常用方法介绍

GeometryEngine定义用于对几何执行各种操作的静态方法。例如坐标转化,计算距离,面积等。API https://developers.arcgis.com/android/latest/api-reference/reference/com/esri/arcgisruntime/geometry/GeometryEngine.html#boundary(com.esr...

2018-09-10 10:44:56 5325 1

原创 ArcGIS for Android 100.3.0(14):移动地图包MMPK的使用

MobileMapPackage移动地图包是ArcGIS Pro里新推出的一种离线地图数据,配合ArcGIS Runtime 100使用。移动地图包是一个以“.mmpk”结尾的单独文件扩展,它可以将你的组织的maps、资源、道路网、或者坐标集成到一个文件。根据这些数据你的用户就可以清楚自己的方向,知道什么是他们所需要的,探索它们的附近的区域、有效的利用他们的资源去工作。地图数据包格式是面向...

2018-09-10 09:08:24 1841 1

空空如也

空空如也

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

TA关注的人

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