自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

发强

昨天太多不该,好好把握现在。

  • 博客(68)
  • 资源 (14)
  • 问答 (3)
  • 收藏
  • 关注

原创 Android Retrofit2 上传文件携带参数

ApiService 中的写法: @POST("/upload/xxx") fun xxxMethod( @Body body: RequestBody ): Observable<BaseResp>PS: 之前有印象好像可以通过 @Part 注解来一起上传,后来项目中又不好使了,不知道哪里的问题。上面接口中传递的是 Body 格式...

2019-06-13 22:28:02 6934

原创 OkHttp 添加 Https 单向认证证书(证书类型 PKCS12)

移动端需要在 Http 中添加单向或双向认证证书,防止其他非法请求操作。添加证书文件在 res 目录下添加 raw 目录,然后导入 apicer.pfx(ps:名字自定义) 证书文件。配置证书在 OkHttpClient 初始化时,配置证书类型。 val builder = OkHttpClient.Builder() //将ca证书导入输...

2019-01-10 11:21:22 3302

原创 Android 获取、移除 View 的 OnClickListener

之前在代码中设置的通过 View.isClickable 去控制 View 的重复点击,昨天突然发现即使控制了,仍然能够再次触发点击事件,让我很是懵逼。后来翻阅一系列的资料之后,发现了 View.setOnClickListener 源码中的这段代码: /** * Register a callback to be invoked when this view is c...

2018-09-02 11:53:41 8426

原创 Kotlin 自定义 kt 文件类名

假如现在是 Java 和 Kotlin 混编的情况,新建了一个 KotlinCode.kt 文件如下:package com.fq.kotlin/** * KotlinCode */fun doSomething() {}然后 Java 代码中模拟调用 KotlinCode.kt 中的 doSomething() 方法,调用代码如下:package com.fq...

2018-08-27 00:07:50 6745

原创 Android 自定义键盘整理

前一段时间,由于业务需要,了解了一下关于自定义键盘的相关操作。实现方式主要是两种实现方式,我这里就以一个数字键盘来作为实现。 方式一效果图 方式二效果图 方式一该方式是使用我们最原始的方式,自己画UI ,然后去实现监听事件, 这种方式我们就不过多废话,先来看一下自己画的 xml ,&lt;?xml version="1.0" encoding="utf-8"?&...

2018-07-28 14:30:25 12870

原创 Android 旧项目配置 Kotlin 踩到的坑。

运行条件MacOS Android Studio 3.1.2Kotlin Version 1.2.41这两天在些项目的过程中,因为是 Java 语言开发的,想给它引入 Kotlin 支持,所以就直接进行了 Kotlin 配置。至于详细配置,这里就不过多描述了,相信目前市面上相关资料已经很泛滥了。那么下面就直接来整理一下所遇到的坑,如下图:该错误是运行 app 时会报出来的,编...

2018-05-31 01:09:39 4744 3

原创 Python 字典

创建字典的几种方式:方式一 dict1 = {'1':'a','2':'b','3':'c','4':'d'}方式二dict2 = dict(((1,'b'),(2,'d'),(3,'f'),(4,'h')))方式三 dict3 = dict(([1,'1'],[2,'2'],[3,'3'],[4,'4']))方式四dict5 = dic

2018-01-23 14:24:24 436 1

原创 Python While 循环

目前处于初学阶段,使用的编辑器为 IDLE 。这里记录一下 Python While 条件语句。相关注释代码中都已经标明,这里就直接贴了:numStr = input("请输入 10 到 100 之前的数字:")# numStr 获取从 shell 中输入的字符,num = int(numStr) # 把字符转换为整形while 10 >num or num >100:

2018-01-13 13:26:15 969

原创 关于 Kotlin 自定义 View 时,引用系统属性问题

这两天在写项目进行组合自定义一个项目中频繁使用的组件时,需要一些属性,比如 text , textSize , textColor 等等,由于所需要的属性,基本上系统都有了,我这里就想偷个懒直接拿过来用,但是事与愿违,并没有使用成功。因为时间原因,就还是去老老实实的添加自定义属性去了,趁着这个礼拜天,再来调试一下(控件继承于 RelativeLayout)。使用 Java 代码去借用系统属性的

2018-01-07 01:45:44 2023

转载 Kotlin 便捷的实现 Parcelable 序列化

Android中的序列化在开发中,如果有需要用到序列化和反序列化的操作,就会用到 Serializable 或者 Parcelable,它们各有优缺点,会适用于不同的场景。SerializableSerializable 的优点是实现简单,你只需要实现一个 Serializable 接口,并不需要任何额外的代码,但是它的序列化和反序列化,实际上是使用反射做的,所以效率会略低,并且它会在序列化的过程中

2018-01-04 09:17:29 15670

原创 Dagger2 同时引用多个 Module 的三种写法

在一个界面中,我们很多时候会同时用到两个或者以上的 Module ,这里整理一下 Dagger2 添加多Module 的用法,这里先贴一些示例需要的代码: ApiServicepublic class ApiService { OkHttpClient okHttpClient;// @Inject public ApiService(OkHttpClient okHttpCl

2017-12-11 22:52:40 4102

原创 快速集成 JPush(极光) 推送整理

应用内部控制消息通知的声音,和震动: /** * 设置极光推送通知样式 */ fun setNotificationStyle(context: Context) { val builder = BasicPushNotificationBuilder(context) builder.statusBarDrawable = context

2017-12-04 14:02:52 768

原创 快速接入百度地图定位、描点

这里整理一下接入 百度地图 的流程,做一下记录(基于 Kotlin 语言开发)。第一步,肯定还是注册账号,创建应用了。先来到百度地图 首页 登录自己或公司的 百度账号(公司项目,一般都是由公司提供账号)。 登录成功之后,首页有一个控制台点击上图标记的控制台,然后选择 【创建应用】这里只是针对 Android 项目,所以你需要选中 【应用类型】 为 Android SDK , 剩下的就是输入

2017-11-24 00:24:48 5618

原创 SwipeRefreshLayout、RecyclerView、BaseRecyclerViewAdapterHelper 三者组合的刷新加载View

这里是利用系统的 SwipeRefreshLayout,RecyclerView ,加上开源库 BaseRecyclerViewAdapterHelper 组合而成的一个View ,可控制是否刷新,加载,不用每次都去写一个 SwipeRefreshLayout 嵌套 RecyclerView 。使用 RecyclerView 和 BaseRecyclerViewAdapterHelper 版本如下

2017-11-20 15:17:06 1348

原创 Android Studio 获取开发版和发布版 SHA1 和 MD5

获取 开发版 MD5 和 SHA1打开 Studio 中的 Terminal 命令行 输入命令:keytool -list -v -keystore /Users/[电脑用户名]/.android/debug.keystore回车之后输入密码,密钥口令为 android , (输入时不可见,输入完成点击回车)获取 发布版 MD5 和 SHA1获取发布版 SHA1 等值也是在 Terminal 中

2017-11-14 19:50:40 687

原创 MediaPlayer 暂停再播放的 IllegalStateException 问题

前两天写项目的时候有一个播放背景音乐的功能,使用 MediaPlayer 的时候,进行 暂停-> 重置-> 播放 流程时总是莫名其妙的抛出异常。这里记录一下解决问题的代码:private var mediaPlayer: MediaPlayer? = null /** * 开始播放 */ private fun playMedia() { if (m

2017-11-12 23:47:59 3208 1

原创 Android Studio 3.0 正式版 踩坑记录

记录一下更新 Studio 3.0 之后所遇到的一些坑~!1 , Error:Could not find commons-coder.jar(commons-codec:commons-codec:1.6). Searched in the following locations:file:/Applications/Android Studio.app/Contents/gradle/m2rep

2017-10-27 16:22:51 12140 1

原创 Kotlin 静态类,静态方法

整个静态类: object StaticUtil{ fun method() ...}类中的部分静态方法class StaticUtils { companion object {// 包裹范围内 属于静态方法 fun method() ... }}全局静态 直接新建一个 Kotlin file

2017-09-21 12:41:41 34082 3

原创 Android 一个另类的 '进度条' 效果

转载请注明出处:http://blog.csdn.net/lv_fq/article/details/77837482 – [发强博客]之前一个朋友问我一个类似于广播电台频率的进度条,可能很多人看到图的第一时间就是 自定义View 。 跟他聊天的过程中提到了 H5 的实现方式,我突然想起来,Android 端好像也可以用类似的方式去实现一下。效果图:这个你能否想到是什么实现方式 ? 自定义Vie

2017-09-05 15:21:42 2955

转载 Android 朋友圈之点赞列表

转载请注明出处:http://blog.csdn.net/lv_fq/article/details/77837482 – [发强博客]系列博客Android 朋友圈之多图显示 Android 朋友圈之评论回复列表 Android 朋友圈之点赞列表正文效果图:具体实现代码LikesViewpublic class LikesView extends TextView { private

2017-09-04 14:53:23 4789

转载 Android 朋友圈之评论回复列表

转载请注明出处:http://blog.csdn.net/lv_fq/article/details/77836700 – [发强博客]系列博客Android 朋友圈之多图显示 Android 朋友圈之评论回复列表正文还是老流程,先来看一下效果图:然后是主要实现代码: CommentsViewpublic class CommentsView extends LinearLayout {

2017-09-04 13:53:52 14282

转载 Android 朋友圈之多图显示

转载请标明出处: http://blog.csdn.net/lv_fq/article/details/77800928 [发强博客](http://blog.csdn.net/lv_fq)先看一下效果图:MultiImageView:public class MultiImageView extends LinearLayout { public static int MAX_WIDT

2017-09-02 14:10:56 7084 13

原创 整理一下 PagerSlidingTabStrip

很久之前用的,这几天改其他项目又提到了这种效果,使用 TabLayout 有些效果无法达到预期,所以这里再来整理一下,方便以后再次使用。还是先来贴一下效果图吧:代码里我稍微调整了一下,加了几个自定义属性,下面来描述一下相关属性:indicatorColor 指示器颜色indicatorHeight 指示器高度indicatorPaddingLeftRight 指示器左右内边距

2017-09-01 18:44:45 386

原创 Mac 环境下安装 apk 文件到手机

打开 Studio 的 Preferences 界面 (快捷键 command + , ), 搜索 SDK 找到之后复制出 Android SDK Location 路径。然后回到 Finder (也就是桌面), 使用快捷键 shift + command + G ,贴入刚刚复制出来的路径,定位到 sdk 目录下,确认一下 platform-tools 目录中是否有 adb,补全 adb 的绝

2017-08-30 10:28:54 9190

原创 Androd 多语言国际化设置

用于控制当前 App 显示的不同语言(我这里是适配的法语):Resources resources = getContext().getResources();DisplayMetrics dm = resources.getDisplayMetrics();Configuration config = resources.getConfiguration();String curLangua

2017-08-16 21:22:42 372

原创 Retrofit 中设置 OkHttp 拦截器,保存和添加 Cookie

整理一下 Retrofit 使用过程中给 OkHttp设置拦截器,并且在请求体中添加用户登录生成的 Cookie 来确认当前用户。之前设置拦截器一般是用来添加公共的请求头,要求比较单一,只需要加进去就行了。后来,因为项目需要先获取登录 Cookie , 然后再给每一个请求加入 Cookie 信息,这个时候我的写法是这样的:new OkHttpClient().newBuilder().addInt

2017-08-13 00:37:19 5972 2

原创 Collections 对List 进行排序

使用 Collections 中的一些方法来进行对于 List 进行排序:sortModel Data: List<Integer> list = new ArrayList<>();list.add(0);list.add(3);list.add(4);list.add(2);list.add(1);list.add(9);list.add(6);升序Collections.sor

2017-08-07 16:55:47 649

原创 入门级 MVP

前段时间在腾讯课堂看了一个关于 MVP 模式讲解的直播,整体看下来感觉还是相当适用于一直对于 MVP 处于理论了解的新手。 这里对于理论知识我就不多说废话了,相信大多数朋友都有所了解。 那么我们就直接开始进行贴代码。最后我会附加一个讲解 MVP 的视频地址(不会的童鞋推荐去看一下)。MVP中的 V首先,我们先来新建一个 V 的接口:public interface IBaseMvpView {}

2017-07-26 13:50:14 836 1

原创 Kotlin 双冒号 :: 使用

Kotlin 中 双冒号操作符 表示把一个方法当做一个参数,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法。先来看一下例子:fun main(args: Array<String>) { println(lock("param1", "param2", ::getResult))}/** * @param str1 参数1 * @param str2 参数2 */fun

2017-06-05 17:08:25 41657 15

原创 注解+代理 模仿 Retrofit 传参

前几天学习了一下注解和代理。这里记录一下使用自定义注解 + 动态代理,来模仿 Retrofit 的传参方式。注解Java 元注解有四种,这是系统定义的用于定义注解时,区分他们的不同作用。@Target@Retention@Documented@Inherited@Target用于描述注解的使用范围(即:被描述的注解可以用在什么地方) 取值类型有: ElemenetType.CONSTR

2017-05-31 11:11:10 1013

原创 Kotlin 创建 main 函数

测试 Kotlin 的时候,我们需要一个和 Java 语言一样的 main 函数入口,这里要注意一下创建的方式。右键 -> New -> Kotlin File/Class 这里新建的时候要选择 File 类型。 点击确定之后,创建的是一个 .kt 文件,里面基本上除了一个 package xx 之外什么都没有。 然后输入 main 回车,最终生成的 main 函数:fun main(ar

2017-05-27 16:54:02 26937 7

原创 Android Studio 上传 Library 至 Jcenter 生成依赖的两种方式(菜鸟级教程)

之前感觉 Studio 中直接使用 compile ‘xxxxxxx’ 感觉挺方(装)便(逼)的。然后网上翻阅了老多的资料,不停的去尝试。虽然当时也成功了,后来才发现原来账号都注册错了(注册成组织账号了 /尴尬)。这里整理一下上传的完整步骤。注册Bintray官网首页默认注册是组织 , 个人的正确注册地址是:https://bintray.com/signup/oss这里注意一点 不能使用国内的邮箱

2017-05-20 00:02:57 3558 4

原创 Android 为应用桌面 Logo 添加数字提醒

很早之前,项目中提到要在手机桌面上显示应用的消息数量角标,当时找了很多,最终效果都不理想。这两天又提到这个问题,今天在 GitHub 上找到了一个开源库 ShortcutBadger ,代码拉下来测试一番,公司的三星(5.0),华为(6.0),Vivo(5.1),小米(5.1)都能成功。用法要么直接下载 Demo, 把 Library 引入项目,或者使用开源库首页介绍的用法。除了小米之外,其他的机型

2017-05-09 23:43:58 3873 6

原创 Java 线程池

内置线程池JDK 中提供了一个线程控制的类 Executors , 他扮演着线程工厂的角色,通过 Executors 可以创建特定功能的线程池。 创建线程池的方法: newFixedThreadPool(int count) 返回一个固定数量的线程池,该方法的线程数量始终不变,当一个任务提交,若线程池中有线程空闲,则立即执行。若没有,则会被暂存在一个任务队列中等待有线程空闲再去执行。newS

2017-05-02 15:55:03 371

原创 Java Master-Worker模式

Master-Worker 模式是常用的并行计算模式。它的核心思想是系统由两类进程协作工作:Master 进程和 Worker 进程。Master 负责接收和分配任务,Worker 负责处理子任务。当各个 Worker 子进程处理完成后,会将结果返回给 Master , 由 Master 进行归纳和总结。其好处是能将一个大任务分解成若干个小任务,并行执行,从而提高系统的吞吐量。整理流程就是上图所表示

2017-04-27 14:25:48 2616

原创 Android 图片添加水印

拍照或者本地图片添加水印,效果图: 添加水印方法:/** * @param src 添加水印的图片 * @param title 水印文字 * @return */ public Bitmap createBitmap(Bitmap src, String title) { if (src == null) {

2017-04-24 13:14:21 915 1

原创 Java 多线程的设计模式之 Future

Future 设计模式核心原理图:client端通过 FutureData 发送一个执行耗时操作的请求,FutureData 则直接返回一个回调接口的引用(Data 接口,用于返回获取到的真正结果),然后在 FutureData 内部再另起一个线程去执行真正的耗时操作。当 client 端 执行了获取结果的方法时,如果执行完成,则返回结果。如果还在执行中,则会进入线程等待状态,一直等到执行完成进行线

2017-04-23 18:37:49 545

原创 Java Volatile 关键字

volatile我们在代码中开启一个线程之后,想要依据某些条件去控制线程是否结束的时候,可以通过定义一个 volatile 关键字修饰的变量去进行操作。示例代码如下:public class RunThread extends Thread { private volatile boolean isRunning; public void setRunning(boolean runni

2017-04-14 10:09:16 399

原创 Android 统一为项目中的所有 Activity 添加自定义TopBar

出处这两天在查看 GitHub 上的一个比较火的开源库 BaseRecyclerViewAdapterHelper 的 demo 过程中,学到了一项新的技能。这里整理出来,与大家分享一下。实现的功能我们在写项目的过程中,几乎每个 Activity 中 都是有一个 标题栏的。我的常规写法就是:每创建一个新的 Activity , 都会在布局文件中添加一个 toolbar (可以是自定义的,或者是系统

2017-04-12 23:47:56 4962 6

原创 Glide ImageViewTarget 加载图片监听

引发场景:使用 Glide 加载高清大图的时候,在加载过程中,显示一个加载进度条,加载结束之后,取消进度条。Glide ImageViewTarget API相关方法介绍: void onLoadCleared(Drawable placeholder) 加载时调用生命周期回调,取消了和它的资源释放。一般情况不需要我们操作。void onLoadFailed(Exception e, Drawab

2017-04-06 22:43:35 15196

Android源码设计模式解析与实战 pdf 版

Android源码设计模式解析与实战 pdf 版,此处需要大于50字。

2017-12-05

Kotlin 中文文档pdf版

Kotlin for android developers 中文文档 pdf 版

2017-05-18

AndroidAddTopBar

http://blog.csdn.net/lv_fq/article/details/70149052

2017-04-13

应用详情页

博客介绍地址:http://blog.csdn.net/lv_fq/article/details/53903135

2016-12-28

方便实用的 嵌套 ListView 写法

效果介绍 : http://blog.csdn.net/lv_fq/article/details/53350428

2016-11-26

Android 简易的动态标题栏

相关博文:http://blog.csdn.net/lv_fq/article/details/53166322

2016-11-14

Android 带动画的底部弹出视图

博客地址:http://blog.csdn.net/lv_fq/article/details/53154026

2016-11-14

Android ListView使用不同对象加载不同布局

http://blog.csdn.net/lv_fq/article/details/52976463

2016-11-11

WheelView 实现日期和时间同时选择

博客地址 : http://blog.csdn.net/lv_fq/article/details/51957721

2016-07-19

Android 多图选择

支持图片单选,多选,设置最大选择数量,Android studio版本直接作为Module使用 稍微的调整即可使用。

2016-07-11

Android 自定义Dialog,文字动态加载效果

继承AlertDialog 实现自定义Dialog ,"加载中..." 动态效果

2016-06-26

Android自定义水平进度条圆角进度

定义水平进度条的圆角进度,

2016-06-26

简化Fragment+Activity实现选项卡

对主界面的Activity根据选项卡切换Fragment做一个整理,方便快速接入项目

2016-06-21

Android Activity+Fragment选项卡整理

Android Activity+Fragment实现主界面选项卡代码整理

2016-06-19

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

TA关注的人

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