自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

延龙的博客

一起学习,一起进步,一起享受生活。

  • 博客(75)
  • 收藏
  • 关注

原创 【YLJustifyTextView】,支持文字两端对齐,折行

GitHub地址:https://github.com/ai2101039/YLJustifyTextView/tree/master大家切到Master分支在项目开发中,大家可能会遇到如下的UI情况对于这样的UI,如果按照一般的写法,可能需要,左边一个TextView,右边一个TextView,下面一个View下划线。这样的方式XML会很长,最主要的是因为会创建很多对象,每一个对象都有其对象头和字段,影响内存使用。那么自定义控件就是一个很好的选择我们说,自定义控件的原则就是

2021-04-22 11:24:51 246

原创 【YLCircleImageView】描边/间距/四个角不同弧度

github:https://github.com/ai2101039/YLCircleImageView效果:变态的需求GIF 可用属性 /** * 图片展示方式 * 0 -- 图片顶部开始展示,铺满,如果Y轴铺满时,X轴大,则图片水平居中 * 1 -- 图片中心点与指定区域中心重合 * 2 -- 图片底部开...

2019-01-23 15:36:10 774

原创 【微信支付】调起微信支付,总是显示-1的解决办法

如果你检查过 APPID,检查过商户号,检查过包名,检查过应用签名,依然显示 -1那么你可以尝试我这种方式记住下面这句话https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5商户服务器生成支付订单,先调用【统一下单API】生成预付单,获取到prepay_id后将参数 再次签名 传输给APP发起支付。参与签名...

2019-01-10 12:29:39 5544

原创 【微信支付】Demo错误

使用微信支付,运行Demo,会遇到两个问题一、error: expected reference but got (raw string) @+android:style/Animation.Translucent.解决:全局搜索(快捷键:Ctrl+Shift+F) -- “@+android:style/Animation.Translucent” -- 删除 + 号 二、com...

2019-01-08 15:41:06 420

原创 【FontMetrics】探讨

一、这个图是错误的这个 leading 的标记是不对的。 二、正确的图 三、小编的图 四、14SP的TextView,在三倍机上,高度是57px五、FontMetrics的字段值大约好像  top + bottom ≈ 高度。具体的计算需要看源码,但是从理论上来说,textView的高度 是 Top 和 Bottom 的距离。六、字段...

2018-12-19 14:16:20 2869

原创 【自定义TextView】一个Text,两段文字,两种颜色,两种大小,文字底部平行

最近做个项目,有个UI如图github:https://github.com/ai2101039/YLDiscolorTextViewUI图可能小伙伴第一时间想到,弄两个 textView,不过最近我痴迷onDraw,所以考虑自定义一个TextView,以达到最后的效果。结果图(绿色为baseLine)也许有的小伙伴问,你这数字和汉字也没有底部对齐啊。文字是以...

2018-12-19 12:20:56 664

原创 【指示器】自定义ViewPager指示器,和你见过的不太一样。

这次要说的指示器可能和大家常见的不同,这个是纯绘制出来的,即只 onDraw出来的。也许不够完善,欢迎大家提出问题。github:https://github.com/ai2101039/YLPagerIndicator有人说,这个github 有轮子,可是光使用轮子只是一个搬运工啊,而且github的轮子是为了适应各种情况,app 代码量可增加不少;有人说,你这个指示器,我们可以...

2018-12-12 18:28:37 754

原创 【一个小架构】单一Activity 与 多View展示

闲来无事,写了一个小架构,感觉还算可以,分享给大家。 案例:存在有 Activity(A,B,C,D,E),STANDARD 启动模式。A 跳转到 B,B跳转到C,C跳转到D,D跳转到E,共计启动 五个Activity。 而我们知道,Activity的存在:1、提供一个View容器,即 setContentView2、提供生命周期3、提供启动模式 理论上...

2018-12-10 16:53:02 351

原创 【软引用】--- 为HashMap 增加软引用功能

HashMap是常用的数据结构,1.7是数组+链表,1.8是数组+红黑树,之前我写过AVL树的文章,过几天写一下红黑树的。github:https://github.com/ai2101039/SoftHashMap今天的主题是:给HashMap增加软引用功能。也许有人想,我直接 HashMap的 V使其继承软引用不就可以了?我想说,你说的对,只是不全面。...

2018-12-10 15:20:17 1791 3

原创 【数据结构】二叉树

二叉树网上的资料有很多,我这个博文做一些要点的记录 遍历分为:前序、中序、后续 public void traversal(BaseNode node) { if (node != null) { // ① System.out.print(node.key.toString() + " "); ...

2018-11-22 14:14:28 117

原创 【数据结构】平衡二叉树(AVL树)详解

平衡二叉树,又称AVL树。是一种高度平衡的二叉排序树。这里的”高度“ 大家理解为 height。也就是节点的左子树和右子树的高度差绝对值不超过1。重点一:高度平衡指的是 节点 左子树高 与 右子树高,差值绝对值不超过1。重点二:AVL的插入函数先按照二叉树原理插入节点,然后再看当前树是否平衡。 ******* 一定要自己写一遍 ,重点看插入函数******** ht...

2018-11-20 16:48:34 1238

原创 【数据结构】KMP算法中的next数组解释

博主说几个重要的理解点,便于各位朋友理解next数组 解惑next数组的求解一、先理解前缀后缀如:abcdef前缀为:a,ab,abc,abcd,abcde    含头不含尾。后缀为:bcdef,cdef,def,ef,f    含尾不含头。二、子串如:abcdef子串为  a,ab,abc,abcd,abcde,abcedf从左到右。三、举例模式串...

2018-10-17 16:48:29 8892 4

翻译 引导 -- 技能点

转载来源:鸿洋的公众号  (hongyangAndroid) 1、Java 基础  Java Object类方法 HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 HashMap 和 HashTable 区别 HashCode 作用,如何重载hashCode方法 ArrayList与LinkList区别与联系 G...

2018-10-08 14:19:34 213

原创 【数据结构】Unicode 与 UTF-8

一、UnicodeUnicode 是数学问题,用某一数字代表某一字符,如97代表 a 98 代表b 99 代表c大家看过周星驰的电影,9527代表周星星,可能9526代表达叔,一样的道理。二、转换为二进制字母 a 对应的 十六进制为 \u0061,二进制为 01100001汉字 “呡” 对应的 十六进制为 \u5461 二进制为01010100 01100001其中 \u ...

2018-09-29 16:22:11 439

原创 关于对数运算

今天群里有人说 3的n次方是81,如何运算。首先想到的是循环,即 81 执行 n 次 /3 = 1然后一想,这不就是 求以3为底 81的对数Math.log函数可用本来想着 Math.log(81) / Math.log(3) 是说以 2为底 81的对数 除以 以 2为底 3的对数。后来查看资料不对。使用的是自然数 eMath.log(81) / Math.log(3)...

2018-09-20 12:07:05 1766

原创 源码理解ThreadLocal

目录源码解析: 一、new ThreadLocal二、set函数三、get函数首先说一下使用方法。1、创建ThreadLocal 对象 threadLocal。2、创建线程 A 、线程 B。3、在线程 A 和线程 B中 调用 threadLocal.set()   get() 函数常见疑惑:内存 堆里面只有一个 ThreadLocal,那么一般理解上,线程...

2018-08-24 17:39:57 217

原创 模拟弱网

charles https://www.zzzmode.com/mytools/charles/

2018-07-25 15:31:05 232

转载 Android 7.0以上(包含8.0), popupWindow弹窗位置异常, 解决方案

文章转载:https://blog.csdn.net/zhihui_520/article/details/79097161通常我们的App中, 在标题的位置, 点击需要弹出菜单, 效果如下:这很难吗? 拿起键盘就是干…public void showAsDropDown(View anchor, int xoff, int yoff) { showAsDropDown(anchor, x...

2018-07-13 12:00:28 314

原创 CreateProcess的错误= 2 更新as到3.1.1后 编译不了

更新AS后,导致运行时,提示找不到文件,查看后是 NDK缺少 XXX。操作如下1:file -- other settings -- default project structure2/ 去掉 use embedded JDK。选择你本机 jdk3/ SDK Tools -- 点掉 NDK...

2018-06-07 15:47:40 1930 3

转载 APK反编译

1/APK反编译详细步骤https://blog.csdn.net/s13383754499/article/details/789145922/修改 smalihttps://blog.csdn.net/sxk874890728/article/details/804862233/重新打包 1https://blog.csdn.net/huaxun66/article/details/52288...

2018-06-04 16:31:18 122

原创 SwipeLayout 可以左滑的一个控件

先看一下效果图 1、左右两个控件都可以自己设置点击事件2、右侧控件有个动画,300ms3、右侧的临界点是 右侧控件宽度/24、最大的亮点是没有任何侵入,大家可以直接使用源码。看布局代码就能了解注意点:只能用两个直接子View,并且第一个子View 是具体内容,第二个子View是隐藏控件 reset ()函数 用于复用时候的重置状态import andr...

2018-04-24 18:37:31 1888

原创 gradle冲突,清单文件冲突

implementation('依赖包名称') { //不同版本同时被依赖时,那么强制依赖这个版本的,默认false force = true //exclude可以设置不编译指定的模块,有三种写法: exclude module: 'cglib' exclude group: 'org.jmock' ...

2018-04-24 09:58:37 637

转载 所有权限

转载:http://blog.csdn.net/qq220011qq/article/details/61204531<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.r...

2018-04-20 10:46:06 363

原创 引入statusBarUtil依赖包错误

// statusbarutilimplementation ('com.jaeger.statusbarutil:library:1.5.0'){ exclude group:'com.android.support',module:'support-v4'}按照这种方法写

2018-04-13 17:34:39 1564

原创 腾讯X5,视频全屏崩溃解决方法

很简单,Demo写错了,所以大家不好做。 /** * 全屏播放配置 */ @Override public void onShowCustomView(View view, CustomViewCallback customViewCallback) { FrameLayout normalView = (FrameLayout) findView...

2018-04-10 10:24:11 3875 6

原创 依赖包SDK冲突或依赖冲突

今天遇到一个问题,依赖包的SDK是 25.3.1,我的是 25.3.0 导致出错方法如下:implementation ('com.github.ai2101039:BottomTab:1.0.2'){ exclude group:'com.android.support',module:'appcompat-v7' exclude group:'com.android.suppo...

2018-04-04 12:02:46 1814

原创 创建属于自己的依赖包

对于依赖包,我的理解是别人写好能用的东西,压缩后,给一个依赖地址,我们添加依赖后把压缩包下载下来,然后直接使用。流程如下:1、创建项目,这时候项目module 只有 APP2、创建 library3、APP module 关联 library4、编写 library 在 APP中引用调试5、调试好后,复制一份工程,删除 app module6、关联github,传上去7、点github 的rele...

2018-04-04 09:56:01 601

原创 腾讯X5,下载监听不管用

这里需要说明一下,具体为什么我也很迷惑。如果你遇到 用android studio 运行你程序,腾讯X5的下载监听不管用。也许你可以尝试一下我的方法。将APK打包,然后进行安装,这时候下载监听就管用了。然后,你再用android studio 运行你程序,这时候下载监听就管用了。...

2018-03-06 10:00:01 908 1

原创 自定义ProgressBar,类似浏览器加载显示进度

比较简单,记录一下,以便于以后复制粘贴用1、控件原生<ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="3dp...

2018-03-04 16:02:27 477

原创 当腾讯X5启动失败时,很有可能是你WebView 的创建在X5初始化完成之前

最近一个小伙伴用腾讯X5时总是出错,所以有了这篇文章,就像标题写的,你的WebView的使用及创建,一定要在腾讯X5初始化完成之后。说下他的场景,MainActivity直接就打开X5WebView 去加载网页。导致使用的是原生WebView。http://res.imtt.qq.com/TES/x5%20api%20-simple_1493283262924.pdf但是,很重要一点,如果我们按照...

2018-03-01 16:26:18 14251 5

转载 史上最全的WebSettings说明

文章来源:http://blog.csdn.net/KevinsCSDN/article/details/52241334setAllowContentAccess (boolean allow) 是否允许在WebView中访问内容URL(Content Url),默认允许。内容Url访问允许WebView从安装在系统中的内容提供者载入内容。setAllowFileAccess (boolean ...

2018-02-27 17:08:47 4099

原创 获取 SHA1 的方法

最近集成高德地图,需要SHA1值,记录一下重要:JDK环境变量配好,在任意目录下输入 java 及 javac 均可正常显示内容一、两个keystore1、发布时用的keystore 使用 360加固助手,辅助工具--制作签名 具体参考说明手册  打开cmd -- 输入 keytool -list -v -keystore E:\sign.keystore(E:\sign.

2018-02-06 14:12:13 189

原创 Handler、Looper、MessageQueue、ThreadLocal

根据一个简单的Demo,分析一波package com.example.yanlong.aidlclient;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.support.v7.app.AppC...

2018-01-16 00:43:34 235

原创 线程池及参数 以及 AsyncTask

常用方式一般常用的是第一和第二种,阿里巴巴推荐的是使用带有 ThreadFactory,也就是第二种 或者 第四种源码参数说明/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters and default rejected execution handl

2018-01-15 19:33:53 291

原创 3、AIDL传递序列化数据

1、简单的传递数据场景:客户端传递数据 i,j,服务端计算i+j这个具体流程就不贴了,流程可以参考第一篇直接贴代码和结果,这个不是今天要记录的重点。2、传递序列化数据场景:User类,变量 name 和 age,返回 包含 name 和 age 的字符串服务端①、在AIDL包下,新建 User.java,新建User.aidl重点:名称要一样。不一样会报错。...

2018-01-15 14:44:05 1499

原创 2、AIDL中线程问题

AIDL在谷歌官方描述中推荐在 不同应用、多并发任务时使用。在上一篇的基础上,做一些打印和修改。主要修改:getName方法为耗时方法。即为 getName方法增加 Thread.sleep(20000);操作演示1、修改getName为耗时2、打印客户端代码点击TextView,开始进行AIDL连接,在 onServiceConnected 中 使用耗时方法 ge...

2018-01-14 16:54:47 3047

原创 1、AIDL创建流程及简单Demo

如果觉得图片显小,请放大网页,Ctrl + 滚轮AIDL进程间通讯,创建流程如下:1、有个服务端 AIDLService,服务端写好AIDL文件2、有个客户端 AIDLClient,客户端将服务端写好的AIDL所在的包整体复制粘贴过来演示的AIDL功能也很简单,只要客户端 连接 到服务端,服务端就告诉你一个名字。一步一步开始先有服务端,后有客户端服务端1、创建名为 ...

2018-01-14 16:08:59 1033

原创 进程间通信之 -- Messenger

网上关于Messenger的文章很多,但是通俗易懂的少,这里简单介绍一下我的理解。一言以蔽之即:消息Message 可以 绑定 信使Messenger触发流程:A 收到 一个消息Messge,里面有个信使 Messenger_B,那么这时候 A 就可以通过 Messenger_B.send(msg); 将消息msg发给 B,B 内直接回调 Messenger

2018-01-12 18:28:15 274

原创 2、Activity启动模式

Activity 启动模式,熟知的就是 standard、singleTop、singleTask、singleInstance注意点:任务栈 -- 所有Activity继承Application 的任务栈名称,即包名。只有 singleTask 启动模式的Activity 单独设置任务栈名称有意义。任务栈名称不可与包名一致,设置方式为在清单文件。android:taskA

2018-01-11 15:35:06 181

原创 1、Activity 生命周期

异常关闭,重新创建两个方法。onSaveInstanceState(Bundle outState)onRestoreInstanceState(Bundle savedInstanceState)方法名称写的很明确。注意点:1、onSaveInstanceState 和 onPause 调用时机不分前后,但是会在 onStop之前;2、onRestoreInstanceS

2018-01-11 14:46:20 133

空空如也

空空如也

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

TA关注的人

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