自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android 手把手带你写热修复

热修复通过Hook类的加载器,将我们的dex插入到dex元素数组的最前面达到热修复的目的,通常情况下类只会被加载一次前言随着公司的业务越来越复杂,代码迭代次数过多导致代码难以维护,很多潜在的逻辑关联容易被忽略,虽然在发版的时候有做灰度和ab,还是难以避免出现一些奇奇怪怪的bug或者机型适配问题。所以当务之急是接入热修复。本篇内容主要分析热修复原理,在文章最后会有一个demo对全文做一个概括。希望能对你有一些帮助经测试发现android 10上可以完美运行ClassLoaderClassLoade

2020-06-28 20:04:20 370

原创 Android从源码角度分析换肤功能实现

内置换肤核心思路换肤功能说得直白点就是改变View的样式,例如textColor,backgroundColor等。我们知道View的加载都是通过LayoutInflater类来实现的,如果我们能在View被创建前拿到View的相关信息(名称,布局属性等),那么我们就能自己去改变View被创建的逻辑,更改View相关的属性值来实现换肤功能。Activity的onCreate方法有两个一定会...

2020-03-28 19:30:45 343

原创 Handler面试全解析+手把手带你写Handler(下)

在Handler全解析之源码分析+手把手带你写Handler(上)中我们分析了Handler的源码,了解到Handler, MessageQueue, Looper,ThreadLocal,Message之间的关系,消息是如何取出,如何存入的。为了加深记忆,以及方便吹牛逼,今天给大家演示一波如何手写Handler(当然是简易版),重点还是加强对Handler的理解,话不多说,开始吧。1.Act...

2020-01-08 14:59:33 408

原创 Handler面试全解析+手把手带你写Handler(上)

前言面试的时候Handler几乎是必问的,因为Android中很多事件都是由handler来驱动,比如activity的生命周期,我们通常说的View渲染60fps等,但是对于这么一个重要的东西,很多面试者只能说出Looper,MessageQueue,Handler,Message各自的职责,以及Handler是怎么触发和回调的。但凡问的深入一些,很多人就有点懵逼了。handler的di...

2020-01-08 14:20:59 499

原创 重磅-Flutter 1.12正式版发布

前言下午公众号给我推送了flutter 1.12正式版本发布的消息,官方声称这是flutter迄今为止最大的一次更新支持IOS 13暗黑模式 Flutter代码傻瓜式集成到原生项目-Add-to-App N多widget的更新以及bug修复 Beta 版本的 web 支持以及 Alpha 版本的 macOS 支持详情请参见:Flutter 1.12.13 release notes...

2019-12-12 20:46:30 2399 1

原创 Flutter混合开发实战 — 页面跳转以及数据传递

前言Flutter的UI和状态管理都学了,是时候搞一下混合开发。网上大部分的资料写的都很片面,达不到实战的效果。我觉得混合开发至少要达到以下几个效果原生跳转Flutter Flutter跳转原生 跳转的时候有数据的交流本篇主要是以android为主,在现有的工程基础上接入Flutter,ios混合开发步骤大同小异,可以做为参考。混合开发主要分为两大步骤创建Flutter Mo...

2019-12-11 10:44:35 4189 4

原创 Flutter Provider状态管理 - Selector

如果你还不了解Consumer,请移步我的上一篇博文,Flutter Provider状态管理-Consumer,此篇文章是基于上一篇的基础来的。从上一篇中我们知道Consumer可以实现UI页面的局部刷新,摒弃掉传统的setState,让UI的表现上一个台阶。但是我在实际的业务场景使用Consumer却遇到了很多问题。举个栗子:一个计数器页面,这不是一个简单的计数器页面,因为它有两个...

2019-10-29 14:46:03 11722 4

原创 Flutter Provider状态管理-Consumer

前言如果对Consumer很了解的同学可以继续学习Flutter Provider状态管理 - Selector个人觉得Flutter的学习有三个很重要的阶段widget的学习和使用 数据以及状态的管理 和原生的交互对于第一点不必多说,大家开始学习flutter的时候都是跟着官网或者博客来学习如何使用widget以及用widget组合成丰富多彩的界面。如果还没有学习的同学可以前...

2019-10-28 17:34:48 16260 13

原创 Flutter ListView去除默认阴影

想直接看具体实现的请跳转到文末android使用滑动控件的时候默认就会有这么一个水波纹效果,真的是非常丑,原生可以使用overscroll属性关掉这个效果,但是在Flutter中貌似没有这个属性呢,查看ListView的构造方法也是一脸懵逼网上有人说指定physics属性为BouncingScrollPhysics可以避免水波纹效果,这个确实也管用,但同时也把反弹效果加上去了...

2019-10-15 19:57:03 3549 5

原创 Flutter Navigator 高级用法

在上一篇我们已经讲了Flutter Navigation的基本使用,有兴趣或者对这一块还不太了解的同学可以去看看。在实际项目中我们可能会遇到一些比较特殊或者复杂的需求,而基本的跳转方式已经不能满足了,这一篇我们主要看一下Flutter的一些比较品如的跳转操作。不得不说Flutter真的很良心,提供的一些跳转方式都非常实用,让我们日常的开发效率提升了很多,下面我们就一个一个的来介绍吧。1.P...

2019-09-11 15:21:02 17999 5

原创 Flutter Navigator基础使用

Navigator的使用分为两部分:本节说一些基本操作,如果你已经掌握了Navigator的基本跳转姿势,请移步Flutter Navigator品如用法1.路由最基本的使用-跳转和退出大多数App都包含了许多页面用来呈现不同种类的信息。例如:一个app可能存在“商品列表页”,当点击item的时候又会跳转到对应“商品详情”页面。在Flutter中,页面被称之为route(路由)。在...

2019-09-10 14:10:05 3097

原创 FIsh Redux简单入门使用

谨以此博客纪录一波Fish Redux的用法,怕太久了会忘记!当然了,后续可能还会更深入研究一波,到时候再来更新吧Fish Redux项目地址github:https://github.com/alibaba/fish-reduxpub.dev:https://pub.dev/packages/fish_redux其实学习flutter不要只盯着github,pub dev...

2019-07-08 20:18:52 1548

原创 Android 组件化通信-api化

如果module A想使用module B中的某个功能,要不是将类下沉为基类,或者是提供一个注册中心通过回调函数来调用。前者会造成基础module越来越臃肿,通过注册中心则会造成代码耦合度增加,内存消耗严重,很多不会立即用到的数据都要放到注册中心Android提供了.java api化的功能,具体操作就是将.java文件的后缀改为.api,这样该类就会以接口的形式被外部引用。改为.api后ID...

2019-06-15 16:44:28 1098 1

原创 Flutter如何使用接口回调函数

Flutter是基于Dart语言开发的,Dart没有Interface这一概念,只有抽象类,而且还不能new(即便是实现抽象类中的方法)。这就很恼火了,回调函数该怎么使用呢?网上找了很多资料发现有一点很有帮助,那就是Dart中的每一个类都含有一个隐式的接口,所以不管什么类都能当成接口来用,这估计也就是dart放弃接口的原因了吧。 例如:class MyClass1{ void he...

2019-06-13 09:55:41 13407 3

原创 c3p0 connections could not be acquired from the underlying database

使用C3P0配置文件的时候遇到这个问题,但是在代码中动态配置是可以正常连接的,网上的解决方法有以下几种 1,驱动配置有误:driver=com.mysql.jdbc.Driver2,数据库连接地址有误:url=jdbc:mysql://localhost:3306/test3,密码或帐号有误:username=root      password=root4,数据库未启动或无权访...

2018-12-11 10:24:03 507

翻译 Android 9.0关于字体的新特性

Android P到底出现了哪些关于text的新东西?PrecomputedText在android中要展示文字是非常困难的操作,我们需要考虑到字体,行间距,字间距,文字方向,换行,连字符等多种因素。TextView要做一大堆工作去measure,layout给到的文字:读取字体文件,找出字形,决定字的形状,测量出字的边界等等。这些操作都是发生在UI线程中,如此频繁大量的操作可能会导致ap...

2018-08-09 13:36:15 5041

原创 android针对多种请求封装统一进出口

1.需求分析公司的项目需要对接多套酒店系统,x5,xms,绿云。。。加起来差不多有6-7个。按照最常规的思维,比如我现在需要获取入住客人的信息,可能就需要进行大量的if else判断 int hotelType = 0; if (hotelType == 0) { //x5 request } else if (hotelType...

2018-08-04 15:45:16 868

原创 Android反编译基础 - smali

        我们常用的反编译三件套指的是ApkTool, dex2jar, jdgui。实际上经过ApkTool反编译的的代码都是smali,后面两个工具只是为了我们方便阅读,将smali语法转为java。但是工具不是万能的,很多时候转换结果不是那么令人满意。所以要想入门逆向工程,了解smali的语法是必须的。这种语言有点像汇编,但是因为我们有java源码可以对照着看,所以学起来还是很快的。而...

2018-08-04 14:31:36 3318

翻译 Android MVP伴侣,Nucleus框架使用简介

Neclues是一款基于MVP框架的Android Library, 它合理地将程序中的可视化界面和后台线程联系起来。如果你还不了解MVP框架,请点击查看详情框架介绍我们在应用中使用MVP和RxJava来代替Loader和AsyncTask已经有一段时间了,但即便是这些高级框架也难免会有一些缺陷:当状态改变的时候程序很难再继续执行一个后台任务 当应用重启后程序可以恢复我们的可视化...

2018-07-27 11:49:16 1239 1

原创 android EditText中插入tag

android EditText中插入tag最近项目上有一个需求,需要实现一个类似于csdn选择标签的功能:下面是最终的效果:采用edittext图文混标的思路,在edittext中插入图片,这样可以实现一次添加,一次删除。 edittext中插入的图片可以是bitmap,也可以是drawable。因为drawable的可塑性比较强,而且tag中的内容是动态的,所以我选择了drawable来做处理

2017-11-30 10:54:49 2209

原创 Android监听idle状态

最近遇到一个需求,app五分钟未操作需要返回到主页面。一开始就想到去监听onTouch和onClick事件,这个方法看似可行,但是实际操作起来还是很繁琐的,一不小心就达不到需要的效果。然后就果断放弃了。后来看api发现activity中有一个叫onUserInteraction()的方法,这个方法可谓是很吊的,我们先来看一下api上关于这个方法的说明。第一句话已经说得非常明显了,只要是ac...

2016-11-18 16:23:07 3180 2

原创 摄像头权限被拒绝导致程序崩溃的问题(6.0以下版本)

最近做到一个扫码功能,需要在设备上请求摄像头权限,但是如果用户拒绝了该权限程序就会崩溃。在网上找了很多关于这个问题的解决方法,但是都没能很好的解决问题。下面给出自己的解决方案有几点值得注意的1.此处打开摄像头驱动会捕获异常,之前用的是IOException,一定要改成Exception,这样就不会直接崩溃,而是由程序员自己来操作一些事。2.记得return(这点就不多说了...

2016-04-11 18:05:15 3982

原创 联动Listview(实现真正的联动效果)

联动listview 本文主要实现了两个listview联动的效果,类似于美团点菜和城市选择效果,区别于网上很多的不同是右边的listview滑动时左边的listview也会跟着一起滑动。在布局的左侧使用了平常的listview,在右侧用到了stickyheaderlistview,这是实现该效果的一个关键组件。activyt布局<FrameLayout xmlns:andro

2016-03-21 17:48:13 8891 4

原创 Android实现activity状态保存

说是保存activity的状态好像有点不太对,不过是在是想不出更好的名词所以大家就将就一下吧。以网易新闻为例 我们在这儿定义三个activity(新闻列表, 新闻详情, 新闻评论页)。大家会发现从新闻详情页面进入到新闻评论页时评论的数据并不会重新加载,而且位置也停留在之前退出的位置,给人的感觉就是这个activity的状态得到了保存只是在需要他出现的时候一下子跳了出来,这种效果对于用户

2015-08-07 14:41:00 625

原创 android activitygroup中edittext文本无法删除

现在的项目框架中很少用到activitygroup这种东西,谷歌也标识其为过时的产物了,但是在很多老项目中activitygroup还是普遍存在的,但是随之而来的就是activitygroup下的edittext一旦输入文字后便不能删除。网上有一种方式是用将包涵edittext的activity放在最后一个加载,但这毕竟不是从根源解决问题。以下是解决方法private class ZanyInput

2015-02-10 12:09:52 994

联动listview

该项目实现了两个listview的联动效果

2016-03-21

android activity状态保存

仿网易贴吧对activity的状态进行保存

2015-08-07

android activitygroup中edittext无法删除

现在的项目框架中很少用到activitygroup这种东西,谷歌也标识其为过时的产物了,但是在很多老项目中activitygroup还是普遍存在的,但是随之而来的就是activitygroup下的edittext一旦输入文字后便不能删除。网上有一种方式是用将包涵edittext的activity放在最后一个加载,但这毕竟不是从根源解决问题,下面我推荐一种解决办法。

2015-02-10

PhotoView图片缩放

photoview能为你轻松搞定图片的缩放功能,只需将iamgeview对象传入即可

2014-11-21

android 在imageview上的指定位置添加图片 图片尺寸自适应

在imageview上的指定位置添加另一个iamgeview,并实现等比例缩放,图片自适应

2014-11-21

安卓语音传输

安卓语音传输,包含了服务器和客户端的代码,可直接运行

2014-04-10

飞机大战源码

飞机大战源码(可直接运行),包括图片声音,需要可自行替换

2014-04-10

空空如也

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

TA关注的人

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