自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SkylarLiuu的博客

不断奋进!

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

原创 Android自定义View实现喜马拉雅播放状态切换

最近在喜马拉雅听书发现它的播放和暂停状态切换的动画挺有意思的. 在脑子里想了下如何实现, 画了画图, 就开始肝了. 最开始是用贝塞尔曲线去做点的位置的移动效果, 虽然做出来了, 但发现两个path的变化不对称, 看着不美观.睡一觉起来顿悟其实只要旋转圆的角度就可以了, 用不上贝塞尔控制点这么复杂. 先来看下实现效果: 实现效果喜马拉雅的效果:我实现的效果:动画分析View有两种状态, 一种是播放,如下图左边的Start, 一种是暂停, 如下图右边的End. Start和End都是两个Pat

2022-04-28 21:06:10 1912

原创 Android自定义时钟View

最近在练习自定义view, 想起之前面试的时候笔试有道题是写出自定义一个时钟的关键代码. 今天就来实现一下. 步骤依然是先分析, 再上代码.实现效果View分析时钟主要分为五个部分: 中心点: 圆心位置圆盘: 以中心点为圆心,drawCircle画个圆刻度: paint有个aip, setPathEffect可以根据path画特效, 那么刻度就可以根据圆的path画一个矩形path的特效, 并且这个api只会画特效, 不会画出圆. /*** shape: 特效的path, 这里传一

2022-04-27 15:32:06 1796

原创 问题记录:依赖LeakCanary后闪退 Unable to get provider leakcanary.internal.AppWatcherInstaller$MainProcess

app一打开就闪退,报错: java.lang.RuntimeException: Unable to get provider leakcanary.internal.AppWatcherInstaller$MainProcess: java.lang.reflect.InvocationTargetException at android.app.ActivityThread.installProvider(ActivityThread.java:5017) at an

2021-12-28 15:18:09 1665

原创 Java基础(03):泛型

文章目录为什么要有泛型?一、泛型接口、类定义泛型类、接口泛型类派生子类不存在泛型类二、类型通配符类型通配符的上限类型形参的上限三、泛型方法泛型方法和类型通配符的区别泛型构造器通配符下限Java8改进的类型判断四、擦除和转换为什么要有泛型?在没有泛型之前,一旦把一个对象“丢进”Java集合里,集合就会忘记对象的类型,把所有对象当成Object类型处理。当从集合中取出对象后,就需要进行强制类型转换...

2019-05-23 15:23:01 188

原创 Java基础(02):多线程

文章目录一、概述二、线程的创建和启动继承Thread类创建线程类实现Runnable接口创建线程使用Callable和Future创建线程三种方式比较三、线程的生命周期四、控制线程join后台线程线程睡眠:sleep线程让步:yield线程优先级五、线程同步同步代码块同步方法释放同步监视器的锁定同步锁(Lock)死锁线程通信传统的线程通信使用Condition控制线程通信使用阻塞队列Blockin...

2019-05-23 15:20:24 98

原创 Java基础(01):异常处理

文章目录重点概述一、异常处理机制1.使用try...catch捕获异常2.异常类的继承体系3.使用finally回收资源4.Java7自动关闭资源的try语句二、Checked异常和Runtime异常体系1.使用throws声明抛出异常2.使用throw自行抛出异常3.自定义异常类4.Java7增强的throw语句5.异常链6.访问异常信息重点概述Java异常机制主要依赖于try、catch...

2019-05-15 12:56:12 118

原创 问题记录:dlopen failed: cannot locate symbol "XXX" referenced by "XXX.so"

1. 报错logdlopen failed: cannot locate symbol "avcodec_find_encoder" referenced by "/data/app/<包名>/lib/arm/libettwo-media.so"2. 现象编译正常。运行之后加载so库时崩溃,找不到指定方法。 static { System.loadLi...

2019-05-06 13:09:28 13334 1

原创 问题记录:No toolchains found in the NDK toolchains folder for ABI with prefix

1. 报错log编译报错ERROR: No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android2. 现象编译报错。项目本来可以正常运行的。升级了AS到3.2,就编译失败了。3. 问题出现原因ndk包下缺少mipsel-linux-android。4. 解决方案...

2019-05-06 13:02:16 225

原创 问题记录:Unable to add window -- token android.os.BinderProxy@XXX is not valid;

1. 报错logUnable to add window -- token android.os.BinderProxy@XXX is not valid;is your activity running2. 现象弹框有时候不显示出来。第一次显示弹框都是正常的。app从后台进入到前台,弹框能够正常显示出来;退出app(不杀进程)再重新进入,弹框不会正常显示。3. 问题出现原因因...

2019-05-06 12:42:27 4369

原创 问题记录:Execution failed for task ':app:transformClassesWithMultidexlistForRelease

1. 报错logExecution failed for task ':app:transformClassesWithMultidexlistForReleaseCaused by: com.android.build.api.transform.TransformException: Error while generating the main dex list.2. 现象直接...

2019-05-06 12:38:31 5318

原创 设计模式之策略模式

1.定义策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的用户。同样以计算器的例子来展示策略模式。2.UML:3.CodeOperation.class:abstract class Operation{ public double numberA; public double numberB; ...

2018-05-31 14:42:02 232

原创 设计模式之简单工厂模式

1.定义简单工厂模式:工厂负责按照需求生产出指定的产品供客户使用。以实现加减乘除功能的计算器的实例,来看一下简单工厂模式 要怎么操作的。2.UML图:3.CodeOperation.class:abstract class Operation{ public double numberA; public double numberB; abs...

2018-05-31 14:28:51 127

原创 Android App性能优化之UI流畅度优化

一、卡顿的问题本质UI流畅度的优化主要是解决UI卡顿的现象,而UI卡顿的源头就是渲染性能的问题。布局太复杂或者是一个元素重复绘制多次等原因,Android系统无法及时完成那些复杂的界面渲染操作,这样就发生了丢帧,用户就会感觉到不流畅,卡顿。Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60f...

2018-04-13 14:28:44 2338

原创 设计模式之模板方法模式

1.定义模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2.UML图3.CodeAbstractClass.java public abstract class AbstractClass{ public abstract void Operation1();...

2018-04-10 23:12:20 127

原创 AsyncTask源码分析

1.AsyncTask基本使用AsyncTask主要用来执行耗时操作,同时它把执行进度和结果传递给UI线程,因此很适合一些需要在执行完耗时操作后更新UI或者执行耗时操作过程在UI上显示进度的场景。AsyncTask基本使用如下:①首先自定义一个类继承AsyncTaskclass MyAsyncTask extends AsyncTask&lt;URL,Integer,Integer...

2018-04-09 12:56:16 134

原创 设计模式之代理模式

1.定义代理模式:为其他对象提供一种代理以控制对这个对象的访问。2.UML图Subject类定义RealSubject和Proxy的公共行为,所以RealSubject出现的地方都可以由Proxy进行替代。在Proxy内部实际上是通过RealSubject对象调用RealSubject的相关方法实现代理操作的。举个栗子。打游戏经常有找代理刷级的,刷级时需要用钱买装备,这钱谁...

2018-04-01 23:57:05 120

原创 设计模式之装饰模式

0.写在前面的话设计模式看了不少,看了又忘,忘了又看,死循环,记笔记才是王道,UML图自己画,示例代码在记事本里敲的,有错误还望指正。看了不少设计模式的文章,不少文字性的大道理,高深莫测的语言让人望而生畏。我打算尽量找一些简单易懂贴近生活,符合设计模式的例子,直接show code。其实最重要的是把模式运用到自己的工程中,代码敲得多、敲得快并没什么,敲得可维护、灵活性高、可扩展、可复用,才是真...

2018-03-31 23:12:01 135

原创 RecyclerView常见的问题以及解决方案

2018第一个星期过了,第一篇博客东拼西凑出来了,之前的博客一直都是东拼西凑总结别人的内容,我暂时没有什么原创,就记录一下平时开发中遇到的问题吧,也算是进步的开始了。以下详细描述问题以及解决方法:1.ScrollView中嵌套RecyclerView时会导致RecyclerView中item的布局显示不完整,或者设置的长宽参数失效这个问题主要是由于inflate方法参数不正确引起的

2018-01-10 21:50:54 1775

原创 支付宝支付的服务端接入流程

支付宝支付的服务端接入流程0、写在前面的话支付宝支付官网上服务端没有提供C++语言的SDK,所以如果要用C++接入的话要自己实现签名验证,醉了,当然是用Java了。。。官网上的流程不清不楚的,所以自己整理了一下。1、RSA密钥应用公钥:商户自己生成的RSA公钥,需要上传到支付宝平台,以便支付宝验证交易是否由商户发起的应用私钥:商户自己生成的RSA私钥,商户用该私钥对请求字符串进行加签支付宝公钥:支付

2017-11-16 21:17:08 4867 1

原创 C++网络编程基础

网络编程基于TCP的Socket编程服务器端流程创建套接字(socket)将套接字绑定到一个本地地址和端口上(bind)将套接字设为监听模式,准备接收客户端的请求(listen)等待客户端的请求,当请求到来时,接受连接请求,返回一个新的对应于此次连接的套接字(accept)用返回的套接字和客户端进行通信(send/recv)返回,等待另一客户请求关闭套接字(closesocket)客

2017-11-16 20:42:11 2278

原创 Fragment详解

0.写在前面的话:参考了hongyang大神的Fragment相关文章,自己整理了一下,买了《Android开发权威指南》,感觉国外的书的思路跟国内的书就是不一样,还是比较喜欢郭神的《第一行代码》。基础知识看了很多遍,但是容易忘,所以还是整理成文章权当记录~1.Fragment的生命周期Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的

2017-11-16 20:37:40 196

原创 Android四大组件之Activity

0.写在前面的话本篇文章最初找工作时期准备面试时看《Android开发艺术探索》一书的总结的笔记,好记性不如烂键盘,再综合一些网上关于Activity必知必会的知识点加以总结。不断更新中……1.Activity的生命周期1.1 生命周期图:(1) onCreate():当 Activity 第一次创建时会被调用。(2) onRestart():表示Activity正在重

2017-11-16 20:21:53 189

原创 C++线程同步笔记

线程同步多线程实现线程同步有三种方式:互斥对象、事件对象和关键代码段。利用互斥对象实现线程同步主要函数:CreateMutex:创建互斥对象WaitForSingleObject:请求对象的使用权ReleaseMutex:释放互斥对象的所有权示例代码如下:#include<windows.h>#include<iostream.h>DWORD WINAPI Fun1Proc(LPVOID

2017-11-16 20:11:09 165

原创 Java服务端使用HttpServer处理Http请求

转载请注明出处:http://blog.csdn.net/qq_29125669/article/details/77873923Java服务端处理Http请求以前用Java都是编写客户端发送http请求,这次有需求做一个服务端接收客户端的http请求,并以http标准格式返回数据。在网上搜了一会,大部分都是用socket写的服务端,不符合需求。Java其实提供了一个HttpServe...

2017-09-06 22:36:23 19048 2

空空如也

空空如也

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

TA关注的人

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