- 博客(49)
- 资源 (224)
- 问答 (1)
- 收藏
- 关注
转载 Android Hack Retrofit 增强参数(固定参数)
今天为大家分享Prinln的文章: Android 下午茶:Hack Retrofit 之 增强参数谁是 Retrofit此处省去几百字。。。。可以看原文介绍。需求是折腾的动力源泉话说我最近开始忙活一个跟服务端交互颇多的项目,其中涉及到的全部 HTTP 请求都需要传入 5 个相同的参数,并需要根据其他所有参数动态生成一个参数。当时也没多想,用 retrofit 匆匆写完接口,结果就像这样:publ
2016-07-29 14:44:44 4080 2
原创 Retrofit2.0 公共参数(固定参数)
请先阅读: Retrofit 动态参数(非固定参数、非必须参数)(Get、Post请求)在实际项目中,对于有需要统一进行公共参数添加的网络请求,可以使用下面的代码来实现:RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(ctx).setRequestInterceptor(new Req
2016-07-29 13:32:11 29799 14
原创 RxJava 自定义操作符(实现自己的操作符)
你可以实现你自己的Observable操作符,本文展示怎么做。如果你的操作符是被用于创造一个Observable,而不是变换或者响应一个Observable,使用 create( ) 方法,不要试图手动实现 Observable。另外,你可以按照下面的用法说明创建一个自定义的操作符。如果你的操作符是用于Observable发射的单独的数据项,按照下面的说明做:Sequence Operators 。
2016-07-29 09:30:18 3306
转载 使用 RxJava 从多种来源中加载数据
假设我需要从网络上查询一些数据。显然我可以在每次需要时都从网络上查询,但是将数据缓存在硬盘和内存中将更加高效。具体点说,我想要这么做:1.只有在需要从服务器更新数据的时候,才通过网络查询。2.其他情况则从通过缓存之前查询的数据,实现快速的读取。接下来,我将通过使用 RxJava 来实现上面的想法。基本模式为每一个数据源(网络、磁盘和内存)准备一个Observable ,然后我们就可以通过使用conc
2016-07-28 10:52:52 2963
转载 android 虚拟键适配PopupWindow显示位置
先上图:可以发现,虚拟键位,挡住了取消按钮的触控区域,网上百度一下,大多是在布局内家加上(android:fitsSystemWindows=”true”) ,BUT我的控件不是布局,里面写好的啊!我采用的自定义布局,SO 问题就是如何让取消按钮的触控区域显示出来。解决办法:获取虚拟键高度,然后定位显示布局的位置public static Point getNavigationBarSize(Con
2016-07-26 14:48:10 4728 1
转载 Android坐标getLeft,getRight,getTop,getBottom,getLocationInWindow和getLocationOnScreen
Android中获取坐标点getLocationInWindow和getLocationOnScreen的区别location [0]—>x坐标,location [1]—>y坐标int[] location = new int[2] ;获取在当前窗口内的绝对坐标,getLeft , getTop, getBottom, getRight, 这一组是获取相对在它父窗口里的坐标。view.getL
2016-07-26 14:08:31 2930
转载 Android 自定义PopupWindow 显示提示帮助信息
PopupWindow is used to show floating view on display at specified position. It’s a floating container that appears on top of current activity. PopupWindow can have their own layout and can be set after
2016-07-26 13:22:24 2880
转载 Android 自定义PopupWindow指定位置或给定View坐标弹出
PopupWindowHelper是一个根据View的位置显示PopupWindow的一个工具类、弹出PopupWindow的位置会根据指定的View出现的位置而动态改变、本Demo是用Android Studio开发的、分为两个Module、但我个人更习惯合到一起、所以看个人需要了、代码很简单、就一个PopupWindowHelper工具类、然后直接可以在Activity上面使用了、效果如下:Po
2016-07-26 11:12:51 9971 1
原创 Android 初识Retrofit
什么是 Retrofit ?Retrofit是Square开发的一个Android和Java的REST客户端库。这个库非常简单并且具有很多特性,相比其他的网络库,更容易让初学者快速掌握。它可以处理GET、POST、PUT、DELETE…等请求,还可以使用picasso加载图片。常用注解Retrofit 2.0底层依赖OkHttp实现,也就是说Retrofit本质上就是对OkHttp的更进一步封装。R
2016-07-24 18:14:00 34722 21
转载 Android 封装popwindow类,实现所有activity共用
popwindow是一个弹出window,在此对其进行封装,使这个popwindow可以在所有页面都显示。在CSDN上有类似的封装类供下载,可以去自行下载然后做修改。附上地址:http://download.csdn.net/download/duanyu218/5045677这样一来就会出现一个问题,定义popwindow上的item的点击事件做相应的动作的时候,就会提示空指针异常,从而强制退出程
2016-07-22 23:19:28 3731
原创 Android 商品倒计时(DigitalClock实现倒计时 )
自定义DigitalClock控件:package com.veally.timesale;import java.util.Calendar;import android.content.Context;import android.database.ContentObserver;import android.os.Handler;import android.os.SystemClock
2016-07-22 16:49:49 4727 3
原创 Android ImageView设置边框
ImageView设置边框其实很简单,一个shape就能搞定,无需自定义image view。shape_gray_square_bg.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radi
2016-07-22 09:27:34 22771 1
原创 Android: 使用JitPack发布你的Github开源库
首先说一下LRecyclerView的Gradle地址:在根build.gradle配置中加入JitPack仓库allprojects { repositories { jcenter() maven { url "https://jitpack.io" } }}model中引用依赖compile 'com.github.jdsjlzx:LRecyc
2016-07-21 13:27:48 5089 12
原创 Java的接口
定义Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。接口的特点Java接口中的成员变量默认都是public,static,final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量(大写,单词之间用”_”分隔);Java接口中的方法默
2016-07-20 23:39:28 4312 1
转载 Android IPC 进程间通信
IPC (进程间通信)本文转自:http://blog.csdn.net/lisdye2/article/details/51775856博客导读:什么是IPCIPC(Inter-Process Communication) 进程间通信,是指两个不同进程之间数据交换的过程。在明确其之前,需要先搞懂几个概念:线程:CPU可调度的最小单位,是程序执行流的最小单元;线程是进程中的一个实体,是被系统独立调
2016-07-20 22:42:24 6724 1
原创 Retrofit 2.0 自定义Converter补充篇
请先阅读: Retrofit 2.0 自定义Converter在使用Retrofit请求数据时,一般都用Gson解析Json数据。有时候请求得到的 Json 字符串与返回值类型不对应,比如:{"err":0, "content":"This is a content.", "message":"OK"}返回值类型class Result{ int code;//等价于 err St
2016-07-19 21:21:50 15706 2
转载 Android RecyclerView Item动画(Checkbox全选、单选)
对RecyclerView Item做动画,刚刚开始研究的时候一些坑,在这里把一些设计思路分享出去: 添加动态位移,静态位移,缩放等动画,保证了动画状态的平滑衔接。效果图:RecyclerView,ListView这些具有Item复用性的View,想要对其Item做动画需要注意以下几点:如果要一点击,让所有Item做动画的效果。例如,上图的编辑和取消,这样的动态动画。可以对所有ViewHolder
2016-07-13 22:32:43 8607 1
转载 Android 使用PLDroidPlayer播放网络视频 根据视频角度自动旋转
现在市面上有几个比较主流好用的第三方框架Vitamio ( 体积比较大,有商业化风险 github:https://github.com/yixia/VitamioBundle/) ijkplayer(B站下开源的框架 体积大 配置环境比较麻烦 github:https://github.com/Bilibili/ijkplayer ) PLDroidPlayer(七牛根据ijkplayer二次
2016-07-11 23:07:29 7361 2
原创 Retrofit+RxJava 优雅的处理服务器返回异常、错误
开始本博客之前,请先阅读: Retrofit请求数据对错误以及网络异常的处理 异常&错误实际开发经常有这种情况,比如登录请求,接口返回的 信息包括请求返回的状态:失败还是成功,错误码,User对象等等。如果网络等原因引起的登录失败可以归结为异常,如果是用户信息输入错误导致的登录失败算是错误。假如服务器返回的是统一数据格式:/** * 标准数据格式 * @param <T> */publ
2016-07-11 17:32:39 61319 28
原创 XXTea算法Java版
第一个版本:public class XXTEA { private XXTEA() {} /** * Encrypt data with key. * * @param data * @param key * @return */ public static byte[] encrypt(byte[] data, byte[] k
2016-07-09 23:36:57 7829
原创 RxJava 并发之数据流发射太快如何办(背压(Backpressure))
RxJava系列教程:1. RxJava使用介绍 【视频教程】 2. RxJava操作符 • Creating Observables(Observable的创建操作符) 【视频教程】 • Transforming Observables(Observable的转换操作符) 【视频教程】 • Filtering Observables(Observable的过滤操
2016-07-09 21:18:38 16394 1
转载 RxJava 并发之意外情况处理
Rx 尽量避免状态泄露到数据流之外的场景。但是有些东西本身就带有状态。比如服务器可以上线和离线、手机可以访问Wifi、按钮被按下了等。在 Rx 中国,我们在一段时间内看到这些事件,并称之为窗口(window)。其他事件在这个窗口内发生可能需要特殊处理。例如,手机在使用移动收费上网的时候,会把网络请求优先级降低,来避免天价流量费的情况。 注意:上面的一段话估计是翻译的,有点语句不通。更多参考官网:
2016-07-09 11:12:40 3917
转载 RxJava 并发 之测试
在开发软件的时候,我们需要确保代码正确执行。为了快速的获取每次修改后的反馈,通常开发人员使用自定义测试。在同步的 Rx 中测试和普通 Java 中的单元测试没有太大的区别。如果要测试异步代码,可能会有点需要注意的地方,比如要测试下面的代码:Observable.interval(1, TimeUnit.SECONDS) .take(5)上面的 Observable 发射一个数据流,需要 5秒
2016-07-09 10:11:00 3215
转载 RxJava 并发之线程调度
由于 Rx 目标是用在异步系统上并且 Rx 支持多线程处理,所以很多 Rx 开发者认为默认情况下 Rx 就是多线程的。 其实实际情况不是这样的,Rx 默认是单线程的。除非你明确的指定线程,否则所有 onNext/onError/onCompleted 以及各个操作函数的调用都是在同一个线程中完成的。例如下面的示例:final BehaviorSubject<Integer> subject = Be
2016-07-08 23:21:04 8166 1
转载 RxJava 驯服数据流之自定义操作函数
RxJava 提供了很多操作函数。加上各种重载函数,一共有 300 多个操作函数。这些函数中只有很少一部分是核心的操作函数,离开这些核心的函数根本就没法使用 RxJava 了。其他的大部分函数只是一些便捷函数,方便开发者使用,并且他们的名字基本都说明了他们的用法。比如 如果操作函数 source.First(user -> user.isOnline()) 不存在,则我们依然可以使用 source.
2016-07-08 23:02:28 3627
原创 android studio代码混淆注意问题
Java 是一种跨平台的、解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中。由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成 Java 源代码。为了防止这种现象,我们可以使用 Java 混淆器对 Java 字节码进行混淆。语法-include {filename}
2016-07-08 15:45:39 29321 4
原创 Retrofit 2.0 自定义Converter
requestBodyConverter 不执行的解决办法:**参数要使用@Body这种形式,否则 request 方法会不起作用。**在Retrofit中,无论是发送数据和接收数据,都是通过OKHttp的RequestBody和ResponseBody来实现的。在实际项目中,有时候原始的RequestBody或是ResponseBody并不能满足我们的需求(如接口加密),就需要对它进行转换。
2016-07-08 14:27:11 33889 9
转载 5分钟搞定android混淆
前言混淆是上线前挺重要的一个环节。android使用的ProGuard,可以起到压缩,混淆,预检,优化的作用。但是很多童鞋还没有掌握正确的写混淆文件的姿势。我希望搞个模板化的东西,让大家轻松搞定混淆。那么,开始写一个项目的混淆吧。。。我是不是很直接。。。。五步搞定1打开项目中的proguard-rules.pro,将下面的代码复制进去。我的思路是将混淆分为2个主要部分定制化区域。这里边的内容是我们
2016-07-07 18:26:03 9454 4
转载 Android Studio多渠道打包和代码混淆教程
什么是GradleGradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的领域特定(DSL)语言。Android Studio中新建项目成功后自动下载Gradle。 Gradle有几个基本组件:1.整个项目的gradle配置文件build.gradle// Top-level build file where
2016-07-07 16:58:13 2475 1
转载 Android ToolBar修改返回按钮图标
使用Toolbar时,有时因为不同的手机设备,不能使用系统默认的主题样式或者图标,必须指定特定的资源,防止APP在不同设备上的效果不一样! 我在使用Toolbar时,把这个布局作为一个公共的了,所以修改起来比较容易,下面是该Toolbar的布局文件:<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.Toolbar
2016-07-07 10:33:51 20725 2
转载 在Android Studio中使用Lambda
大家都知道,Java8开始支持lambda表达式,出来之后受到大家追捧,但遗憾的是Android Studio本身并不支持Lambda,即使是新出来的2.0+版本。为了在Android Studio中使用Lambda,需要在gradle中添加retrolambda插件,具体步骤如下:添加lambda插件前提:更新机器上的jdk至jdk8;在项目(Project)的build.gradle中添加如图
2016-07-06 23:07:05 4117
转载 基于Retrofit+Okio+RxBus实现文件下载(带下载进度)
一、前言 Retrofit是一个非常优秀、非常流行的简化HTTP请求的库,有个小的不足是下载文件时,没有提供显示文件下载进度的回调,这在下载文件时无疑会影响用户体验,本文基于Retrofit+Okio+RxBus实现了带下载进度的文件下载功能。二、效果三、实现过程3.1 下载文件的代码 接下来我们从代码入手,分析如何使用及其实现原理。假如现在要下载 http://hengdawb-app.os
2016-07-06 23:05:41 5549 2
转载 RxJava 驯服数据流之 hot & cold Observable
Observable 数据流有两种类型:hot 和 cold。这两种类型有很大的不同。本节介绍他们的区别,以及作为 Rx 开发者应该如何正确的使用他们。Cold observables只有当有订阅者订阅的时候, Cold Observable 才开始执行发射数据流的代码。并且每个订阅者订阅的时候都独立的执行一遍数据流代码。 Observable.interval 就是一个 Cold Observab
2016-07-06 15:10:29 6877
转载 RxJava 驯服数据流之时间平移
Rx 最大的特征之一就是无法预测何时会有数据发射。有些 Observable 会同步的即可发射所有的数据,比如 range ,有些按照一定的时间间隔发射数据、有些根本无法确定到底何时发射数据。例如,鼠标移动时事件和 UDP 数据包到达的时刻。我们需要合适的工具来处理这些无法确定何时发射的事件。Buffer 缓存Buffer 可以收集数据并缓存起来,等缓存到固定的数目后一起发射,而不是来一个发射一个。
2016-07-06 14:00:41 3791
转载 RxJava 驯服数据流之组合数据流
组合数据流到目前为止我们介绍了如何创建数据流以及如何把数据流中的数据转换成我们需要的数据。然而,大部分应用都需要处理多个数据源的数据。需要一种把多个数据源组合一起的方法。在前面的介绍中,也看到了一些数据流会使用多个 Observable。本节介绍如何把多个数据源的数据组合为一个数据源的操作函数。Concatenation一个数据流发射完后继续发射下一个数据流是一种很常见的组合方法。concatcon
2016-07-06 11:39:15 3241
转载 RxJava 驯服数据流之高级错误处理
在实际项目代码中可能出现各种各样的异常情况,并不是每一个异常都需要告诉上层代码的。在传统的 Java 中,你可以捕获一个异常,然后决定是自己处理该异常还是再次抛出去。同样,在 RxJava 中,你也可以根据异常来执行不同的逻辑而无需结束 Observable,也不再强迫 Observer 处理所有情况。ResumeonErrorReturnonErrorReturn 操作函数的功能是:当发生错误的时
2016-07-06 10:00:11 7917
转载 RxJava 驯服数据流之避免monad
monad 是函数式编程中的抽象概念,是一种高度的数学抽象,关于 monad 的详细介绍请看这里: Functors, Applicatives, And Monads In Pictures ,不要百度搜索其他的资料, 关于 monad 的介绍,在网上有 90% 都是错误的,误导人的。在 www.introtorx.com 中也有一个简短的定义: Monad 是一种在模型域对象中封装了计算逻辑而
2016-07-05 23:11:58 2205
转载 RxJava 驯服数据流之副作用
前面两部分,我们学习到了如何创建 Observable以及如何从 Observable 中获取数据。本部分将介绍一些更高级的用法,以及一些在大型项目中的最佳实践。Side effects(副作用)没有副作用的函数通过参数和返回值来程序中的其他函数相互调用。当一个函数中的操作会影响其他函数中的返回结果时,我们称该函数有副作用。写数据到磁盘、记录日志、打印调试信息都是常见的副作用表现。Java 中在一个
2016-07-05 22:45:29 2778
转载 RxJava 事件流之转换数据流
Transformation of sequences本节介绍转换数据流中数据的方法。在真实世界中, Observable 中的数据可以是任意类型的,可能在你的应用中无法直接使用这些数据类型,你需要对这些数据对象进行一些转换。 map 和 flatMap 是本节中操作函数的基础。 下面是三种转换方式的示意:Ana(morphism) T –> ObservableCata(morphism)
2016-07-05 21:57:48 4027
转载 RxJava 事件流之聚合
Aggregation前面介绍了如何过滤掉不需要的数据、如何根据各种条件停止发射数据、如何检查数据是否符合某个条件。这些操作对数据流来说都是非常有意义的。 本节介绍如何根据数据流中的数据来生成新的有意义的数据。本节的操作函数会使用源 Observable 中的事件流中的数据,然后把这些数据转换为其他类型的数据。返回结果是包含一个数据的 Observable。如果你从头开始阅读本系列教程,则会发现前面
2016-07-05 18:35:48 4831
Android将list数据通过LitePal保存到本地(集合保存到本地)
2016-06-17
AndroidDownLoad-多线程断点续传下载
2016-06-14
DownloadEngine-Android多线程下载断点续传
2016-06-14
android-rsa-http
2016-06-12
RxJava在Android中内存泄漏解决以及RxJava的封装
2016-05-23
Android H5做的商城客户端
2016-04-29
Android通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
2016-03-31
Android Bluetooth蓝牙通信文件传输
2016-03-27
Android蓝牙聊天程序的扩展开发(基于Google Sample,类QQ设计)
2016-03-26
Android蓝牙聊天程序优化版
2016-03-26
Android 通过Socket 和服务器通讯
2016-02-16
android RangeSeekBarView 选定范围值的控件
2016-02-01
Android仿天天动态上拉播放界面控件
2016-01-31
Flutter编程指南-多线程
2022-02-21
java数据结构与算法之美(物超所值)
2022-02-09
flutter_macos_2.8.1-stable.zip
2022-01-05
mac_apktool.zip
2021-03-25
Postman-osx-5.3.2 for Mac
2017-10-31
CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar
2016-08-19
android自定义进度条渐变色View的实例代码
2016-07-26
Android多行文本折叠展开效果
2016-07-25
Android封装popwindow类(下拉菜单弹出和收缩效果)
2016-07-22
Android自定义spinner下拉框
2016-07-16
Android DigitalClock实现倒计时
2016-07-12
Android 带箭头有光晕效果的ProgressBar
2016-07-04
android webview与 js交互通信
2016-06-20
Android项目webview中做与js交互
2016-06-20
Android客户端提供Socket服务与pc通过USB通信
2016-06-17
Android 使用Socket,ServerSocket编程网络通信
2016-06-17
Android socket即时通信Demo
2016-06-17
自定义view和自定义动画怎么学习比较好呢?
2016-11-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人