自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wdeo3601的博客

所有微小的坚持,在未来的某一刻都会带来巨大的回报,量变引起质变。

  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

原创 ADB命令封装批处理文件(无线调试、安装 apk 到指定已连接设备)

测试机设备 id用 usb 线连接电脑,打开 usb 调试,可以看到设备的 idadb devices功能列表一键连接无线调试安装 apk 到指定的已连接设备使用方法首先需要新建一个文件夹,之后新建的文件需要放在同一文件夹下。如果不支持 adb 命令,需要先配置 adb 的环境变量。这里是已经封装好的 adb 批处理工具 adb_tools.zip,其中 device_list.txt 中需要替换成自己的设备 id创建 device_list.txt文件存放的是手机的物理设备

2021-09-23 16:05:59 1124

原创 Android 持续集成实践(五)—— ABI 分包、特殊渠道编译需求

文章目录前言系列文章正文开始ABI 分包实现目标实践特殊渠道编译需求实现目标实践Q&A看的一头雾水?代码不完整?gradle 编译遇到 OOM?gitlab 线上 ci 报错:ERROR: Uploading artifacts to coordinator... too large archive一些想法前言两年前的持续集成完成之后,一直用到了最近都没啥大的变更要做。直到国内应用市场开始推 32 位和 64 位架构分包。刚好前一段时间我们的 app 因为名称的原因,在 vivo 商店需要改名

2021-07-17 14:56:03 981 2

原创 【自定义View】从零开始写一个PDF查看器

【自定义View】从零开始写一个PDF查看器一个安卓平台的 PDF 查看器,支持滑动、缩放、三级缓存、放大展示高清图、支持一些功能配置。支持滑动、缩放、缩放后的滑动、缩放后的平移支持放大后查看高清 PDF 页支持设置预加载 PDF 页的个数,有效避免 OOM使用线程池 + Handler ,异步处理 PDF 转换 Bitmap 的相关操作使用 LruCache、DiskLruCache 缓存转换过的 PDF 页的 Bitmap支持为文档添加水印

2020-08-22 15:41:10 2955 4

原创 Android 持续集成实践(四)——配置 WebHook 通知编译结果

文章目录前言系列文章Android 持续集成实践(四)——配置 WebHook 通知编译结果团队沟通工具创建团队创建讨论组添加 BearyChat 机器人配置 WebHookgitlab 配置 webhookfirim 配置 webhook效果演示前言最近幸得空闲,就来自己实践一遍 Android 的持续集成,之前公司一直在使用同事搭建的 gitlab+ci+firim,确实是方便了很多,所以...

2019-05-28 10:39:17 1130

原创 Android 持续集成实践(三)——编写 .gitlab-ci.yml 实现自动化

文章目录前言系列文章Android 持续集成实践(三)——编写 .gitlab-ci.yml 实现自动化要实现的效果定义 gitlab-ci 工作场景阶段定义 build 任务定义 reinforceAndChannel 任务把 360加固保上传到 gitlab-runner 缓存目录创建加固和多渠道的 shell 脚本在 .gitlab-ci.yml 创建任务定义 deploy 任务测试版发布到...

2019-05-23 14:44:07 5057 9

原创 Android 持续集成实践(二)——配置 Docker + gitlab-runner 实现线上自动编译

Android 持续集成实践(二)——配置 Docker + gitlab-runner 实现线上自动编译前言系列文章Android 持续集成实践(二)——配置 Docker + gitlab-runner 实现线上自动编译安装 Docker安装 gitlab-runner安装注册 runner配置 runner 缓存路径签名文件的处理测试线上自动编译下一篇:Android 持续集成实践(三)...

2019-05-21 15:10:48 3591 1

原创 Android 持续集成实践(一)——从0开始搭建 Gitlab 服务器

Android 持续集成实践(一)——从0开始搭建 Gitlab 服务器前言系列文章Android 持续集成实践(一)——从0开始搭建 Gitlab 服务器搭建 Gitlab 的环境安装 CentOS7配置网络安装 Gitlab 服务器安装依赖安装 Gitlab 服务配置 gitlab url 和端口Gitlab 搭建完成FAQ下一篇:Android 持续集成实践(二)——编写 .gitlab-c...

2019-05-20 15:31:39 1945 2

原创 Git 命令总结——重现日常开发场景

Git 命令总结——重现日常开发场景文章目录Git 命令总结——重现日常开发场景我的 git 学习路线日常开发背景git 使用场景记录场景一:早 9:30 准备开始码代码(开发新功能)场景二:11:30 一次小功能的提交场景三:16:30 新功能开发完毕伪总结刁钻场景下的代码管理场景四 贮藏功能的应用场景五 重置当前分支到某次提交总结我的 git 学习路线在开始写笔记前,我还是想简单说一下我...

2018-10-30 16:06:44 653 2

原创 获取 CSDN 1024 勋章教程

获取 CSDN 1024 勋章教程今天是 2018.10.24,是众所周知的程序员节。CSDN 在这一天也推出了 1024 勋章这个东西,那么这个勋章具体怎么才能获得呢?其实方法很简单,就是在这一天发表一篇原创博客,勋章就会自动发放了~~哈哈哈,写了篇水文抱歉抱歉~~...

2018-10-24 13:07:52 2067 3

原创 MultiType 源码分析

MultiType 源码分析前言空闲时间不学习点什么真的是心慌慌的。这次就来分析分析 MultiType 这个三方库。挺不错的一个东西,也是我在好几个项目里用到的三方库。希望这个文章能够帮助到其他人吧,虽然希望渺茫~MultiType 简介MultiType 是对 RecyclerView 的 Adapter 的一个扩展,它把 面向 Adapter 编程变成了面向 ViewBinder...

2018-10-22 19:54:10 1002

原创 Fragmentation 源码分析

Fragmentation 源码分析前言前段时间突然发觉,Fragmentation 这个库我已经使用了这么久了,从 0.10.1 版本开始接触,用到现在已经 1.3.x 了。这是一段很长的时间,自己在这段时间里也成长了不少。其实从使用 Fragmentation 这个库以来,这个库虽然好用,但是一直也没有看过它的源码,不知道内部实现,挺惭愧的,这段时间正好有点空闲时间,就分析一波它的源码吧...

2018-10-10 15:57:09 2068 2

原创 【艺术探索笔记】第 15 章 Android 性能优化

第 15 章 Android 性能优化Android 设备作为一种移动设备,不管是内存还是 CPU 的性能都受到了一定的限制,无法像 PC 那样具有超大的内存和高性能的 CPU。所以 Android 程序不可能无限制的使用内存和 CPU 资源,过多的使用内存会导致程序内存溢出,即 OOM。过多的使用 CPU 资源,一般指做大量耗时任务,会导致手机卡顿程序无响应,即 ANR。 15...

2018-09-12 09:45:57 272

原创 【艺术探索笔记】第 13 章 综合技术

第 13 章 综合技术13.1 使用 CrashHandler 来获取应用的 crash 信息如果没有对异常进行处理,用户遇到的 crash 信息我们无法获取到,就无法去分析并解决这个 crash。所以我们需要捕获这个异常,在合适的时机上传到服务器。 Thread 类的 setDefaultUncaughtExceptionHandler 方法: /**...

2018-09-11 10:36:36 223

原创 【艺术探索笔记】第 12 章 Bitmap 的加载和 Cache

第 12 章 Bitmap 的加载和 Cache12.1 Bitmap 的高效加载Android 中如何加载一个 Bitmap? BitmapFactory 类提供了四类方法: decodeFile、decodeResource、decodeStream 和 decodeByteArray,分别用于从文件系统、资源、输入流、字节数组中加载出一个 Bitmap 对象,其中 d...

2018-08-31 17:39:16 266

原创 【艺术探索笔记】第 11 章 Android 的线程和线程池

第 11 章 Android 的线程和线程池线程分为主线程和子线程,主线程主要处理和界面相关的事情,子线程用来执行耗时操作。 在 Android 中,如果主线程中执行耗时操作就会导致程序无法响应,因此耗时操作必须放在子线程中去执行。 除了传统的 Thread 外,AsyncTask、IntentService、HandlerThread 也是特殊的线程 AsyncTask 底...

2018-08-30 11:11:49 280

原创 【艺术探索笔记】第 10 章 Android 的消息机制

第 10 章 Android 的消息机制Android 的消息机制主要是指 Handler 的运行机制。 Handler 的运行需要底层的 MessageQueue 和 Looper 的支撑。MessageQueue 是消息队列,内部存储了一组消息,以队列的形式对外提供添加删除;存储消息使用的是单链表的结构。 Lopper 是消息循环。MessageQueue 只是消息存储,不...

2018-08-27 16:39:50 254

原创 【艺术探索笔记】 第 9 章 四大组件的工作过程

第 9 章 四大组件的工作过程对四大组件的运行状态和工作方式做概括描述 分析四大组件工作过程 9.1 四大组件的运行状态除了 BroadcastReceiver 外,其他三种组件都必须在 AndroidManifest 中注册。 BroadcastReceiver 既可以在清单文件注册,也可以通过代码注册。 调用方式上,ContentProvider 无需借助 In...

2018-08-09 18:33:11 321

原创 【艺术探索笔记】第 8 章 理解 Window 和 WindowManager

第 8 章 理解 Window 和 WindowManagerWindow 表示一个窗口的概念 Window 是一个抽象类,具体实现是 PhoneWindow 通过 WindowManager 即可创建一个 Window,WindowManager 是外界访问 Window 的入口 Window 的具体实现位于 WindowManagerService 中,WindowManager 和...

2018-08-03 19:16:23 327

原创 【艺术探索笔记】第 7 章 Android 动画深入分析

第 7 章 Android 动画深入分析Android 动画分类 View 动画 平移、旋转、缩放、透明度。对场景里的对象不断做图像变换,渐进式动画。 帧动画 顺序播放一系列图像从而产生动画效果,即图片切换动画。图片过大容易 OOM 属性动画 API 11 新特性,低版本可以使用兼容库来使用它 7.1 View 动画作用对象是 View,支持四种动画效果...

2018-07-26 20:35:15 322

原创 【自定义 View】一个带小红点显示数量并且可控制小红点位置的购物车入口 button

shoppingcartfloatbutton一个带小红点显示数量并且可控制小红点位置的购物车入口 button 项目 github 地址:https://github.com/wdeo3601/shoppingcartfloatbutton 效果 集成步骤:复制 ShoppiingCartFloatButton.kt 类文件 复制 values 目录下的 at...

2018-07-23 09:55:09 1758

原创 【艺术探索笔记】第 6 章 Android 的 Drawable

第 6 章 Android 的 Drawable优点:使用简单 占用空间小 6.1 Drawable 简介一种图像的概念,又不全是图片,通过颜色也可以构造出各式各样效果 实际开发中常用来当 View 背景 通常用 xml 定义 drawable,代码也可以创建 它是个抽象类,每个具体的 Drawable 都是它的子类 getIntrinsicW...

2018-07-18 13:47:21 331

原创 【艺术探索笔记】第 5 章 理解 RemoteViews

第 5 章 理解 RemoteViews一个 View 结构,可以在其他进程显示,提供跨进程更新界面的方法 使用场景:通知栏、桌面小部件 5.1 RemoteViews 的应用通知栏通过 NotificationManager 的 notify 方法实现,可自定义布局 桌面小部件通过 AppWidgetProvider 来实现。它本质是个广播 他俩在开发中都...

2018-07-16 16:06:05 303

原创 【艺术探索笔记】第 4 章 View 的工作原理

第 4 章 View 的工作原理测量、布局、绘制 熟练掌握回调方法: onAttach、onVisibilityChanged、onDetach 等 自定义 View 的固定类型: 直接继承 View 和 ViewGroup 继承现有的系统控件 4.1 初识 ViewRoot 和 DecorViewViewRoot 对应于 ViewRootImpl...

2018-07-13 14:24:40 395

原创 告别 USB,用 wifi 进行 Android 真机调试

告别 USB,用 wifi 进行 Android 真机调试先看一下最终效果 为什么要用 wifi 调试 Android 真机?拒绝 usb 低电压一直充电导致对我爱机的损害(可能是心理作用) 消灭桌面上杂乱无章的数据线 某天忘带数据线了 无形装逼最为致命:-) wifi 连接调试 Android 真机的原理ADB(Android ...

2018-07-12 11:17:21 8879 2

原创 app内小喇叭通知自定义view

JszFloatMessageView一个全局小喇叭自定义view github:https://github.com/wdeo3601/JszFloatMessageView 效果图原理代码里注释已经写的很详细了。大概思路是通过使用一个集合,每次来消息时,都加入到集合最后一个元素,然后每次从集合中拿出第一个元素去展示,展示完成后从集合中删除掉。。 使用场...

2018-07-11 17:45:36 1150

原创 【艺术探索笔记】 第 3 章 View 的事件体系

View 的事件体系3.1 View 基础知识View 的位置参数、MotionEvent 和 TouchSlop 对象、VelocityTracker、GestureDetector 和 Scroller 对象 ### 3.1.1 什么是 View 1. 所有控件的基类 2. ViewGroup 继承自 View,所以 View 既可以是单个控件也可以是一组控件 ...

2018-07-10 18:02:44 238

转载 【转载】双微信分享发生TransactionTooLargeException 异常记录

原博地址: https://blog.csdn.net/xiaolli/article/details/60577331 前提条件: 1. 开启双应用(设置-》双应用) 2. 安装微信。 复现步骤: 1. 用相机拍一张6M左右的照片并保存到手机。 2. 进入图库,打开这张6M左右的照片后选择分享-》朋友。 实际结果: 2. 界面闪一下后,无法弹出微信账号选择界面。 期望结果: ...

2018-06-29 13:56:04 659

原创 用 kotlin 的方式自定义回调事件(kotlin函数参数)

用 kotlin 的方式自定义回调事件(kotlin函数参数)java 中自定义回调事件的写法创建 interface类,创建 interface 对象,实现 set 方法: 使用: kotlin 中自定义点击事件写法依照 java 的思想(不推荐)创建 interface类,创建 interface 可变对象(var) 使用: 利用 kotli...

2018-04-04 15:39:44 6275 10

原创 Kotlin之自定义 Live Templates(模板代码)

想必大家都知道 android studio 的 live templates 功能,那真是各种方便,比如你想使用 newInstance 去生成一个类的实例: 简直不要太方便! 当今 kotlin 流行起来了,你在使用 kotlin 开发 android 的时候,是不是发现以前用的 logt、loge、newinstance…,这些快捷创建代码片段的方式都不能用了,没关系,来一起自定义吧...

2018-03-21 16:43:11 2790 2

原创 持续集成权限报错(Travis.yml ./gradlew : Permission denied)

持续集成权限报错(Travis.yml ./gradlew : Permission denied)在用 Travis CI 自动在服务器编译 android 项目源码的时候,遇到如下报错信息: /bin/bash: line 58: ./gradlew: Permission denied 解决方法: 首先用 git 命令: git ls-tree HEAD 查看...

2018-03-20 13:22:41 2042 1

转载 Android studio 缓存路径配置(C盘爆满清理不出垃圾?不存在的)

本文为转载文章,原博写的很到位,鉴于本人第二次配置缓存路径的时候还是记不住怎么配置,就转载记录一下喽~(手动斜眼)转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52004676文章出自:薛瑄的博客你也可以查看我的其他同类文章,也会让你有一定的收货!android studio 中build.gradle 中dependencie...

2018-03-17 11:34:38 6480 3

原创 使用 kotlin 开发 android 遇到的问题

使用 kotlin 开发 android 遇到的问题本篇主要总结一些在 java 中写的代码在 kotlin 中的写法,不定期更新。。 2018.4.4 更新用 kotlin 的方式自定义回调事件(kotlin函数参数) https://blog.csdn.net/Captive_Rainbow_/article/details/798182792018.3.21 ...

2017-12-05 15:19:42 1657

原创 踩坑!android端集成微信第三方登录

本篇记录 app 端获取到微信 code 的过程。用 code 获取 access_token 的过程是后台服务器完成的。(当然也可以由 app 端自己去拿 code 换取 access_token,这里考虑到如果是后台获取token,android 和 ios 两个人都省事,所以就麻烦了后台老哥们)这里假设你已经注册了微信开放平台的开发者账号,并且已经申请了 appkey 和 appid添加 gr

2017-12-05 11:33:20 2290

原创 踩坑!android端集成QQ第三方登录

有时候在想,自己怎么能这么懒,几篇早就想写的博客,一直拖到一两个月后才着手开始写,说实话都有点忘记了,但还是记录一下吧,兴许以后用的到呢~回归正题,这次来记录一下我集成QQ三方登录的过程吧(Ps:android studio 集成)这里假设你已经注册了腾讯开放平台的开发者账号,并且已经申请了 appid 和 appkey一·qq sdk 的 jar 包放在 Project/app/libs 目录下

2017-12-05 10:49:41 823

原创 用最简单且兼容性最好的方式去实现dialog的有序列表

用最简单且兼容性最好的方式去实现dialog的有序列表最近项目开发,遇到这样一个dialog的需求,请看图:这里有一个细节,如 2. 那条,如果文字长度超过一行,下一行文字是从序号后边对齐的。 要实现这种dialog,也厚很多种实现方式 自定义 dialog 布局,把内容写死在里边用 html 标签来完成这种布局 自定义 LeadingMarginSpan ,用 SpannableStr

2017-06-14 10:49:55 520 1

原创 使用Retrofit为指定api优雅的添加header(api版本控制为例)

使用Retrofit为指定api优雅的添加header(api版本控制为例)最近在做的项目中有这样一个需求,因为项目已经上线,而现在又需要对个别api进行完善,为了兼容老版本正常访问api,并且新版本也可以使用api新加的返回内容。就有了这样一个解决方案:api在header里引入标记api版本的字段"Accept::application/json; version=vx.x"作为一个慵懒and

2017-05-25 11:07:53 2182 1

原创 RecyclerView局部刷新的应用场景简单分析

RecyclerView 局部刷新的应用场景巩固今天在做通讯录屏蔽时,由于通讯录列表里有两种不同的效果展示:1. 已经屏蔽的 item ,显示一个按钮“解除屏蔽”2. 未屏蔽的 item ,显示两个按钮“恢复屏蔽”和“邀请”分析到这里后,果断在 adapter 里创建了两种 type 来分别处理两种不一样的显示效果,事实证明这也确实能满足这个需求。然而当我把测试数据添加到2000条时,越往列表

2017-05-09 09:08:22 2189 1

原创 Toast单例模式的实现,解决多个toast等待时间久的问题

public static Toast toast;public static void showToast(String str){ if(toast==null) { toast = Toast.makeText(BaseActivity.activity,str,Toast.LENGTH_SHORT); } toast.setText(str)

2016-07-19 13:38:28 723 1

adb_tools.zip

ADB命令封装批处理文件(无线调试、安装 apk 到指定已连接设备)

2021-09-23

空空如也

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

TA关注的人

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