自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 商城类APP的商品分类页面实现,使用RecyclerView结合GridLayout减少嵌套

少啰嗦,先上图: 这样的界面实现起来还是比较简单的,具体的实现业务逻辑,可根据自己项目的需求而定。 在本例的实现中,左边和右边分别是两个RecyclerView,左边的RecyclerView在点击的时候,保证被点击的行滑动到列表的中间位置; 右边的Recy...

2019-06-26 14:04:49

阅读数 305

评论数 0

原创 应用程序中将用户默认的设置参数存入本地数据库的一种处理方式,以ObjectBox为例

一般情况下,应用中都会有些默认的配置信息,我们也会把用户的设置信息,比如某些开关按钮的状态等这些轻量级的数据,存入SharedPreferences文件中,本文尝试换一种实现的方式,将这些默认数据存入本地数据库中,同时希望在应用的不同版本开发过程中,能够尽量方便、简单的处理这些数据的增删改查操作。...

2019-06-15 13:22:33

阅读数 106

评论数 1

原创 Android应用开发中关于SQLite数据库升级、降级及数据迁移的代码示例

 SQLite数据库升级、降级及数据迁移的代码示例: import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpen...

2018-12-20 10:35:08

阅读数 107

评论数 0

原创 移动应用APP数据统计SDK部分功能实现

Monicat - SDK 简单说明: 生成JAR包或者AAR文件,可直接加入项目中使用 代码示例: import android.app.Application; import com.windfallsheng.monicat.action.MonicatManager; impor...

2018-12-06 11:02:49

阅读数 214

评论数 0

原创 基于RecyclerView实现的仿微信聊天界面,item长按根据触摸位置弹出对话框

  首先看一下实现的效果图:                       在上一篇文章 基于RecyclerView实现的实现多样化的item样式——类似IM即时通讯聊天界面的布局效果     的基础上实现的仿微信聊天界面,item长按,根据手的触摸位置弹出选项对话框,并完善小动...

2018-03-12 17:55:35

阅读数 1843

评论数 0

原创 自定义Dialog对话框(实现微信分享对话框)

首先看一下实现的效果图: 实现思路,首先要对Dialog进行自定义,使用我们自己的布局,其次我们发现Dialog中展示的数据类型、展示的样式也是略有不同的,这就需要我们在数据格式方法进行一些设置,以实现在同一个Dialog去展示不同的效果。   public class CommonS...

2018-02-08 16:48:12

阅读数 870

评论数 0

原创 RxJava简介

ReactiveX ReactiveX是一个库,用于使用可观察序列(observable sequence)组合异步和基于事件(event-based)的程序。 它扩展了观察者模式(observer pattern),以支持数据和/或事件的序列,并添加了操作符,允许您以声明的方式组合序列,同时...

2019-08-04 20:50:04

阅读数 24

评论数 0

原创 EventBus之AsyncExecutor

AsyncExecutor AsyncExecutor类似于线程池,但具有失败(异常)处理。失败是抛出异常,AsyncExecutor将把这些异常封装在一个事件中,该事件将自动发布。 免责声明:AsyncExecutor是一个非核心实用程序类。它可能会在后台线程中为您节省一些错误处理代码,但它...

2019-08-03 22:44:29

阅读数 48

评论数 0

原创 EventBus之Subscriber Index

Subscriber Index 订阅者索引是EventBus 3的一个新特性。这是一个可选的优化,以加快初始订阅者注册。 Subscriber Index在编译时(build time)使用EventBus注解处理器(annotation processor)创建。虽然不是必须要使用索引,但...

2019-08-03 22:28:51

阅读数 85

评论数 0

原创 EventBus之优先级和事件取消

优先级和事件取消(Priorities and Event Cancellation) 虽然EventBus的大多数用例不需要优先级或事件取消,但在某些特殊情况下,它们可能会派上用场。例如,如果应用程序在前台,事件可能会触发一些UI逻辑,但如果应用程序当前对用户不可见,则会做出不同的反应。 订...

2019-08-03 21:23:34

阅读数 75

评论数 0

原创 EventBus之粘性事件(Sticky Events)

Sticky Events 有些事件在事件发布后携带有感兴趣的信息。例如,一个事件表示某个初始化已经完成。或者如果你有一些传感器或位置数据,你想要保持最近的值。您可以使用粘性事件,而不是实现自己的缓存。因此EventBus将某个类型的最后一个粘性事件保存在内存中。然后可以将粘性事件交付给订阅者或...

2019-08-03 20:53:39

阅读数 219

评论数 0

原创 EventBus之EventBusBuilder

Configuration EventBusBuilder类配置EventBus的各个方面。例如,下面是如何构建一个EventBus,在发布的事件没有订阅者时保持安静: EventBus eventBus = EventBus.builder() .logNoSubscriberMe...

2019-07-28 21:11:26

阅读数 67

评论数 0

原创 EventBus之交付线程(Delivery Threads)

Delivery Threads (ThreadMode) EventBus可以为您处理线程:事件(events)可以在不同于发布线程(the posting thread)的线程中发布(be posted)。一个常见的用例是处理UI更改。在Android中,UI更改必须在UI(主)线程中完成。...

2019-07-27 21:52:11

阅读数 36

评论数 0

原创 EventBus的特性及简单的使用介绍

EventBus是一个用于Android和Java的开源库,使用发布者/订阅者模式(publisher/subscriber pattern)实现松散(loose)耦合(coupling)。EventBus使中央通信仅用几行代码就能解耦类(decouple classes)——简化代码(simpl...

2019-07-21 15:30:00

阅读数 56

评论数 0

原创 Android事件总线框架Otto源码解析四(使用Produce注解的过程)

说明:本文的解析过程并不只是简单的讲解框架中各个方法的调用逻辑、程序的执行过程,而是依赖于示例代码,结合了具体的的示例程序的执行流程,有助于更好的理解。 有关Otto的使用方法参见另一篇文章: Android事件总线框架Otto使用介绍 package com.windfallsheng.m...

2019-07-07 21:48:23

阅读数 46

评论数 0

原创 Android事件总线框架Otto源码解析三(unregister过程)

说明:本文的解析过程并不只是简单的讲解框架中各个方法的调用逻辑、程序的执行过程,而是依赖于示例代码,结合了具体的的示例程序的执行流程,有助于更好的理解。 有关Otto的使用方法参见另一篇文章: Android事件总线框架Otto使用介绍 package com.windfallsheng.m...

2019-07-06 21:28:30

阅读数 30

评论数 0

原创 Android使用Notification通知栏功能的封装

在Android应用开发中我们经常会使用到通知栏的功能,安卓的通知栏有多种类型样式,包括基本类型、带进度条的类型、大图标类型、大段文本类型等,在Android 8.0 (API level 26) 中使用通知栏的代码示例: // Create an explicit intent for an...

2019-07-06 20:19:43

阅读数 276

评论数 0

原创 Android事件总线框架Otto使用介绍

Otto框架是square公司为Android出的一款事件总线框架,设计用于解耦应用程序的不同部分,同时仍然允许它们有效地通信。 https://github.com/square/otto 以下简单介绍一下Otto框架的使用方式: 创建Bus实例: Bus bus = new Bus(...

2019-07-02 21:47:32

阅读数 32

评论数 0

原创 Android事件总线框架Otto源码解析二(post事件过程)

说明:本文的解析过程并不只是简单的讲解框架中各个方法的调用逻辑、程序的执行过程,而是依赖于示例代码,结合了具体的的示例程序的执行流程,有助于更好的理解。 有关Otto的使用方法参见另一篇文章: Android事件总线框架Otto使用介绍 public class PostActivity e...

2019-06-30 21:13:37

阅读数 20

评论数 0

原创 Android事件总线框架Otto源码解析一(Bus的构造过程及在使用注解@Subscribe时的注册过程)

说明:本文的解析过程并不只是简单的讲解框架中各个方法的调用逻辑、程序的执行过程,而是依赖于示例代码,结合了具体的的示例程序的执行流程,有助于更好的理解。 有关Otto的使用方法参见另一篇文章: Android事件总线框架Otto使用介绍 package com.example.myotto;...

2019-06-28 15:01:25

阅读数 242

评论数 0

原创 利用断点续传原理下载文件的过程当中由于Range参数错误导致的下载问题

项目中实现的过程是,要下载的文件大小的最大值是从后台获取,如果手机端下载一部分后暂停,再重新下载,会传递断点续传下载时需要的最大值参数和已下载的文件大小的参数,但是有部分比较大的文件,Gson解析后台的文件大小字段为double类型后是用科学计数表示,比如2.305E8,而不是230500000,...

2018-12-21 18:13:53

阅读数 127

评论数 0

原创 Java并发常用类CyclicBarrier、CountDownLatch应用场景示例

 CyclicBarrier 类的应用示例:如开启5个线程,在每个线程内部打印输出"Hello World",5个线程先全部输出"Hello",之后再输出"World"。 import java.util.concurrent.Bro...

2018-12-21 10:12:45

阅读数 97

评论数 2

原创 递归求n的阶乘——Java语言描述

public class RecursiveAlgorithm { StringBuffer buffer = new StringBuffer(); public int factorial(int n) { if (n <= 1) { buffer.append(...

2018-12-19 11:18:45

阅读数 208

评论数 0

原创 Dagger错误——cannot be provided without an @Provides- or @Produces-annotated method

com.hi.app.presenter.contract.AccountContract.IAccountPresenter cannot be provided without an @Provides- or @Produces-annotated method. 产生这个错误的原因之一:...

2018-10-24 16:34:06

阅读数 187

评论数 0

原创 Json串中带有转义字符时候的解析方式示例

比如从后台返回这样一段json串,中间有个字段 reminderContent 这个String类型后面其实也是一个json串,后台封装数据之后就自动转义了其中的双引号,这个时候用Gson转换的时候会报错的,因为你的实体类中 reminderContent 这个字段是String类型,但是后台的这...

2018-04-13 11:43:25

阅读数 6172

评论数 0

原创 The specified child already has a parent. You must call removeView() on the child's parent first.

 java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.             ...

2018-04-09 10:55:22

阅读数 214

评论数 0

原创 使用DataBinding框架遇到的错误——找不到符号类 BR 程序包 com.android.databinding.library.baseAdapters app:compileDebugJav

Information:Gradle tasks [:app:assembleDebug]E:\Working_Files\projects\DataBindingDemo\app\src\main\java\com\****\databindingdemo\activity\ListActivi...

2018-04-03 15:18:08

阅读数 5533

评论数 2

原创 Java Web项目异常问题——java.lang.ClassNotFoundException: com.mysql.jdbc:Driver

Java Web项目时报出如下错误: java.lang.ClassNotFoundException: com.mysql.jdbc:Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java...

2018-03-22 15:38:23

阅读数 1051

评论数 0

原创 Apache Ant官网下载、安装及环境变量配置过程详细图文说明(以windows系统为例)

一、官网下载步骤图文说明:    1、进入官网:         https://ant.apache.org/2、找到资源地址:3、我下载的最新版本的zip包,不需要安装,下载完成后可以直接解压到我们的目标目录下,     之后再配置环境变量,然后就可以使用了。 二、Ant环境变量配置    1...

2018-03-18 09:51:07

阅读数 2493

评论数 4

原创 基于RecyclerView实现的实现多样化的item样式——类似IM即时通讯聊天界面的布局效果

首先看一下实现的效果图:RecyclerView实现多样化的item样式一般的实现代码还是比较简单的,直接上代码:ChatDetailAdapter适配器:package com.alter.popupwindowmenu.adapter; import android.content.Cont...

2018-03-12 15:07:47

阅读数 555

评论数 0

原创 错误:android studio ---> Error:(1, 0) Plugin with id 'com.android.application' not found.

在导入一个Android Studio的项目时报出这个错误:Error:(1, 0) Plugin with id 'com.android.application' not found. 解决步骤: 打下这个目录下的gradle文件,如下图: 在插入下图中红...

2017-07-20 14:35:40

阅读数 472

评论数 0

原创 Android第三方库隔离之对第三方图片加载库的隔离

在开发项目中引入第三方库总是不可避免的事,但是如果在代码中直接调用第三方库的方法,对于项目的灵活性也是不够的。如果遇到我们必须要更换其它框架的时候,那么整个项目中所有具体用到该框架的地方都需要更换,所有具体的调用方法都要一一更改,稍有疏忽还会引起不必要的bug,这个时候如果能将第三方库隔离开来,在...

2017-07-18 14:34:10

阅读数 630

评论数 0

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