自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HurryYu的博客

岁月是一场有去无回的旅行,好的坏的都是风景。

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

原创 黑苹果折腾记录

一、基本情况特写一篇文章记录我的台式机完美黑苹果的艰难经历,如果以后需要全新安装黑苹果时,供自己参考。主要配置如下表:CPUi7 8700主板ASUS TUF B360 PLUS硬盘500G WD Blue SN570显卡核显UHD630 + GTX1050ti(无法驱动)安装教程参考文档:https://apple.sqlsec.com/https://dortania.github.io/OpenCore-Install-Guide/OpenCo

2022-05-29 10:55:48 3421

原创 给Android开发者的MavenCentral发布指南

一、前言本文讲解如何将Android开源库发布到MavenCentral上,属于保姆级教程MavenCentral会检查开源库包路径对应的域名是否属于你,因此你需要拥有一个域名。比如你开源库的包路径为:com.hurryyu.mylib,则你必须是域名hurryyu.com的拥有者关于2,域名可以自购,也可以用GithubPage等免费方案,如username.github.io关于域名,只会在第一次发布时验证域名是否属于你,后续将不再需要本文将基于自购域名进行讲解二、注册账号并登录账号浏

2021-12-10 13:33:13 2256

原创 Android自定义View实战-边角横幅

有时候,UI可能会设计一个效果,需要我们在View的左上角加上一个横幅,并在横幅上添加文字显示,例如下面这张图的效果:紫色部分就是我们所说的“横幅”。这个效果如何实现呢?两种方案:UI切图自定义View实现UI切图有一些不好的地方,一是如果横幅的文字时动态变化的,那需要对应多张切图;二是切图无疑会增加APK的体积。因此我们选择「自定义View实现」。一、明确为「谁」而自定义如果我们编写一个自定义View,只是为了给自己的App使用,那么可以考虑得简单一些,不需要对外提供过多的自定义属性,也

2020-09-04 17:28:59 369

原创 一个案例搞定策略模式

提到设计模式,只要是有过开发经验的开发人员都或多或少听过&用过设计模式,比如我们都能信手拈来的「单例模式」、「观察者模式」等等。当然也有我们平时不太常用,但众多优秀的开源框架中广泛使用的设计模式,例如著名的网络框架retrofit使用的「代理模式」、okhttp使用的「责任链模式」。关于设计模式的文章,网上一搜一大堆,各位前辈都总结得非常好。可以说前人的技术分享大大降低了后人的学习门槛,使中国互联网整体技术水平成指数上升,感谢每一位热爱分享的Coder!很早以前我就准备写一篇介绍策略模式的文章,

2020-08-29 02:53:21 381

原创 彻底搞懂Kotlin的高阶函数、匿名函数、Lambda表达式

在Kotlin还没成为Android开发首选语言之前,我们一直是使用Java语言来开发Android应用。不过对于Lambda来说,大家应该并不陌生,因为Android Studio也可以支持JAVA 8中的Lambda表达式,只需要在app的build.gradle中添加以下代码:android { // ... compileOptions { targetCompatibility JavaVersion.VERSION_1_8 sourceCompa

2020-07-30 14:42:26 1072 4

原创 轻松适配Android 10 Scoped Storage 分区存储

Android 10(API 级别 29)引入了多项功能和行为变更,目的是更好地保护用户的隐私权。其中最重要的变化之一就是存储访问权限。Android 10中,Google针对外部存储引入了一个新特性,它的名字叫:Scoped Storage,Google官方对它的翻译为分区存储,我们也可以把它叫做作用域存储,至于为什么?本文中,我们还是将它翻译为分区存储。好了,我要开始提问了!问题一、...

2020-04-17 20:49:15 2499 4

原创 Android以最简单的方式接入支付

文章目录一、微信支付1.1、官方版1.2、BestPay二、支付宝支付2.1、官方版2.2、BestPay很久都没更新过博客了,一来是最近在搞Flutter,二来是有很多事情需要做。就在几天前我开源了一个名叫BestPay的库,使用它可以在Android上非常方便的接入三方支付SDK(微信,支付宝),但未来还会支持更多。这篇文章准备和大家聊一聊Android上常见的支付接入与使用方式。一、...

2019-07-12 15:12:02 671

原创 属性动画详细介绍(一)

文章目录一、属性动画基础内容二、ValueAnimator2.1、使用ValueAnimator2.2、ValueAnimator的常用方法2.1.1、其它静态工厂方法2.1.2、常用对象方法2.1.3、常用监听方法2.3、Interpolator插值器2.4、Evaluator2.5、ofObject三、ObjectAnimator3.1、这是什么3.2、使用ObjectAnimator3.2....

2019-05-28 14:10:54 1675

原创 自动填入短信验证码

这段时间太忙了,以至于一直没有时间更新博客。正好今天公司项目需要加入自动识别验证码的功能,所以特此记录一下现在几乎任何App注册都离不开手机号,如果选择使用手机号注册,必定会接收并填入验证码进行注册。一些注重用户体验的App会在收到验证码后自动帮用户填入,免去了用户手动输入验证码的烦恼,整个注册过程用户是非常Happy的。下面我们来实现这个功能,其实逻辑流程很简单:创建广播接收器,拦截...

2019-04-10 16:50:54 1813

原创 Android性能优化之布局优化

管你APP采用了多么高大上的技术,做出了多么炫酷的动画,如果使用起来体验不好,各种花式卡顿,内存占用大得一批的话,估计很少有人愿意愉快地使用.因此我们不能只考虑如何实现功能效果,还必须要重视性能的优化!本篇文章就从看得见的入手,先来学习如何优化我们的布局,闲话不多说,直接开始.include标签include标签是用于将一个布局引入到当前布局中.举个例子,一般我们的APP几乎每个页面都...

2019-02-21 10:46:27 113

原创 抛弃onActivityResult,彻底改变startActivityForResult

常规写法在Android开发中,我们经常需要启动另一个Activity并得到它返回的数据,常规的写法是这样的:private static final int REQUEST_CODE_BIND_INFO = 42;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) { ... Intent in...

2019-01-30 11:45:37 1032

原创 Android Service总结

Service是Android四大组件之一,表示应用程序希望在不与用户交互的情况下在后台执行长期操>作,或是为其它应用程序提供服务,每个Service必须在AndroidManifest.xml进行注册。启动Service的方式有两种:startService和bindService在AndroidStudio中创建一个服务十分简单,直接右键->new->Service中选...

2019-01-30 11:41:12 245

原创 synchronized总结

synchronized是java语言中的关键字,可以用来修饰方法和代码块。被synchronized修饰的方法或是代码块不能同时被多个线程执行,也就是说同一时间只能有一个线程能访问,解决多线程中并发同步的问题。举个例子,我们去医院看病,首先要挂号,挂号完毕后我们就到对应医生的诊室门口等通知,通知到你了,你就可以进去看病了。这个例子如果我们换一个角度看:首先医生给病人看病,我们可以定义一个方...

2019-01-30 11:30:15 147

原创 Handler运行机制解析

Handler简单介绍与使用说起Handler,大多数Android开发者会想到:在子线程中更新UI,这确实是Handler的主要用途之一。分析Handler的运行机制,就从最简单的使用开始吧:private Handler mHandler;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.o...

2019-01-30 11:27:27 202

原创 ThreadLocal源码解析

ThreadLocal源码阅读记录,如有不妥,欢迎指出,共同学习,谢谢!一、简单使用ThreadLocal可以理解为线程本地变量,使用它,可以将变量与线程之间产生关联,使得变量的隔离级别在同一个线程中.我们通过非常简单的代码,来简单使用下ThreadLocal:private static ThreadLocal<Integer> mThreadLocal;public st...

2019-01-30 11:23:57 162

原创 优化Android App启动白屏

####问题描述随着Android App开发时间越来越长,项目中的功能,以及用到的第三方库也越来越多,apk的体积也会越来越大。用户在打开应用时,白屏的时间也越来越长,带来了不好的使用体验,如何才能做到 当用户点击应用图标后,立即显示指定内容而不是白屏呢?####解决方案大多数App在每次打开时都会弹出一个Splash页面,并在清单中为这个Splash页面设置:<intent-f...

2019-01-30 11:19:08 411

原创 操作List报java.lang.UnsupportedOperationException

问题描述今天在项目中调用List的add(…)方法时,程序报了java.lang.UnsupportedOperationException,这个List并非是List list = new ArrayList()而来,而是用Arrays.asList(…)得到的:List<String> list = Arrays.asList("test1", "test2", "test3"...

2019-01-30 11:15:56 933

原创 导入Dagger2遇到的错误

Conflict with dependency 'com.google.code.findbugs:jsr305' 错误的解决办法

2017-07-12 23:16:33 374

原创 关于ImmersionBar的immersionInit回调问题

使用这个框架的时候,如果要使每一个Fragment都能控制statusbar的颜色等,官方推荐的做法是 BaseFragment extends ImmersionFragment.然后会重写一个immersionInit方法,在里面去做状态栏颜色的改变等. 但是这个方法的回调!只有在使用viewpager加载fragment的时候,才会在切换时回调

2017-07-08 23:06:26 1211

空空如也

空空如也

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

TA关注的人

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