![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
移动开发
文章平均质量分 95
梅花十三儿
这个作者很懒,什么都没留下…
展开
-
【Android】全局自定义字体的实现
一、修改TextView字体假设现在有一个字体文件msyh.ttf;对于某个TextView来说,如果想修改它的字体,可以简单的使用如下代码:val tv = findView()val tf = Typeface.createFromAsset(assets, "msyh.ttf")tv.typeface = tf 这样就可以将单个TextView设置为对应字体。如果想要实现全局修改字体,则需要通过修改Factory2的方式来实现。二、Factory2Factory2用于根据xml标签创建原创 2022-03-14 21:41:56 · 1160 阅读 · 0 评论 -
「设计模式(一) - 策略模式」
一、从if-else说起代码中if-else的出现频率不必多说,几乎的逻辑实现都离不这个组合。但是带来了方便的同时,也带来了多重嵌套代码块。套用重构的一句话,这些都是代码的坏味道。过多的条件判断必然增加了系统不稳定性,同时也给扩展带来了不便因素。当然优化的方式多种多样,策略模式Strategy仅仅只是其中简单的一种。二、策略模式 Strategy行为模式的一种,定义了一系列平行的算法,将实现与责任相分离并加以封装,当然各个策略之间是可以相互转化的。由客户端决定使用何种策略,由于策略之间的独立,为系统原创 2022-02-25 16:07:27 · 244 阅读 · 0 评论 -
「整理」记录青春,工作中用到的 App 性能优化
前言本篇总结整理工作中用到过的app 性能优化方案。流量优化网络图片更换webp三方库检测上报仅wifi环境上传资源下载提示是否使用流量下载合并http请求来减少http请求次数,避免二次请求制定合理的http请求数据格式和返回数据格式,做到请求数据中没有冗余字段,有必要时做数据压缩url使用短链接传送扩大本地图片缓存地图可以做本地缓存进行大数据量下载时,尽量使用GZIP方式下载电量优化减少唤醒设备操作,减少 timer减少io操作。如数据库操作、SP操作(存在每次页面切换原创 2022-02-25 13:42:29 · 138 阅读 · 0 评论 -
「Android 事件分发机制」
「Android 事件分发机制」一、事件分发机制在Android体系中,事件分发机制占有重要的一份,了解事件的分发机制,对于滑动等冲突才有更深刻的理解。自定义View中能更好的扩展,遇到相关问题能从整个流程上思考,寻找最优解决办法。一个简单的点击事件是怎样一步步被消费处理的呢?谁该处理,谁不该处理又是由什么因素决定的,这是在实际开发中绕不开的问题,尤其是在自定义View的应用场景下。先上图,从整体上大致了解事件是怎样被传递与消费的:二、从Activity开始分析一个最简单的初原创 2022-02-24 22:23:05 · 671 阅读 · 0 评论 -
《Android编程权威指南》之音频播放与单元测试(二)
《Android编程权威指南》第 20 章第二篇,补充完 BeatBox 应用的单元测试啦。八、编写测试函数测试函数将用到 @Test 注解。 @Test fun exposesSoundNameAsTitle(){ assertThat(subject.title,`is`(sound.name)) } assertThat(…) 选 org.junit 库里的 Assert.assertThat(…) 函数,is(…) 选 org.hamcrest 库里的 Is原创 2022-02-24 21:40:58 · 341 阅读 · 0 评论 -
“新”for me,2022一起来看看这些技术
什么是“好”的技术,为什么“火”前言:这个是个人观点,技术要用在合适的业务场景中才能体现出它的优势,而不是盲目的去学,去看解决现今开发的技术痛点协程回调地狱,切换线程等功能a()//耗时任务b() 当两个方法a,b执行的代码块没有依赖关系时,执行耗时任务采用异步的方式来解决,通过开线程或者通过handler post一个Runnable来执行a方法这个耗时操作,b不需要等待a结束就可以直接运行。但是如果a和b是有依赖关系的,b方法需要用到a方法返回的数据进行处理,但是又为了不影响b之原创 2022-02-24 20:16:20 · 153 阅读 · 0 评论 -
[译]Flutter文件选择器组件file_picker(四)问题解决方案
本文翻译自: Troubleshooting · miguelpruivo/flutter_file_picker Wiki · GitHub版本: file_picker 4.3.3Android🐛 问题:应用在发布模式下无法编译。🛠 可能的解决方案:请参考 #545,这里有一个相关的讨论,特别在此评论 你可能会发现一个解决方案。🐛 问题:如果遇到了如下的问题:The built failed likely due to AndroidX incompatibil原创 2022-02-24 16:58:11 · 2505 阅读 · 0 评论 -
[翻译]Kotlin的Json序列化速成,不用Gson
你想将你的Data class序列化为Json或者反之,应该很简单,Json这个东西出来已经很久了。 在Android开发中或者说传统的Java开发中,这种任务通常交由一个外部库来完成,这个库通常来说都是谷歌的Gson,但近来随着带有null aware特性的Kotlin语言的推出,用这个库的话就缺少了点优雅。 当然除了Gson还有其它的库可以用(如:Moshi),至于Kotlin本身,自从1.3版本后,它提供了自己的Json序列化和反序列化方式(也支持protoBuf)。配置Kotlin自己的方法是一原创 2022-02-23 17:00:24 · 1269 阅读 · 0 评论 -
[Flutter] 填坑:await、forEach、Image.file三者结合的奇妙巨坑
问题是这样出现的,一个实时聊天app,在性能较差的手机上,一次性发送多张图片,Image.file组件加载居然有明显的延迟!具体表现为先出现一个空白区域,然后图片才会在空白区域慢慢渲染出来而且我寻遍百度谷歌都没有人遇到相同的问题,难道这个bug只有我遇到了?首先来看下面两段代码:分别在forEach循环和for循环中执行await会有什么区别呢?代码1(forEach):import 'dart:async';import 'dart:io';void main() async { C原创 2022-02-23 15:09:38 · 744 阅读 · 0 评论 -
[Android禅修之路] 解读Vsync(一)
一 概述说到 Vsync,大家首先想到的肯定是游戏中的垂直同步。可能会有人疑惑,游戏的垂直同步和 Android 的图形系统的关系。其实在 Android 中,同样有着 Vsync 机制。在 Android 的刷新过程中,Vsync 的作用就是同步的唤醒应用以开始渲染、唤醒 SurfaceFlinger 开始屏幕的合成以及屏幕刷新周期。在 SurfaceFlinger 渲染的过程中,画面的显示会经过应用程序的绘制,SurfaceFlinger 的合成,以及硬件的显示。这些过程分别处于三个不同的进程中,原创 2022-02-23 14:51:45 · 1704 阅读 · 0 评论 -
2020 腾讯Techo Park - Flutter与大前端的革命
大家好我是 《Flutter开发实战详解》 的作者郭树煜,很高兴今天有机会在这里和大家分享关于 Flutter 和大前端的话题,今天我主要就从 Flutter 、大前端和写作 这三个方面给大家分享一些我的理解和想法。1、 我为什么选择 Flutter?初识Flutter我接触 Flutter 的契机是因为要做一场公司的内部技术分享,因为公司要做技术选型,所以那时候分享的主题是 《移动端跨平台开发的现状和分析》 ,而恰好那时候 Flutter 初出茅庐,就被我加入到 ReactNative 、Weex原创 2021-08-27 14:57:02 · 340 阅读 · 0 评论 -
5步告诉你QQ音乐的完美音质是怎么来的,播放器的秘密都在这里
一、问题背景与分析不久前,团队发现其Android平台App在播放MV视频《凤凰花开的路口》时,会带有如电流声一般的杂音,这影响了用户体验。 研发同学在初步定位时,发现有如下特征:Android平台杂音问题必现;iOS、PC平台能正常播放,没有噪音。然而,各平台都是统一用HLS格式播放,即源头都是一样的。对于该问题,我们的定位思路如下:梳理视频播放流程;找到切入点排查。二、播放流程概览[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YsNtgApK-16原创 2021-08-26 22:16:47 · 1166 阅读 · 0 评论 -
【个人笔记】Flutter很好用,but……
前言为什么有这篇文章?这篇文章可以说是个人Flutter问题随笔吧,虽然Flutter可以方便的做到跨平台,但是毕竟是新项目,功能没那么全面也是意料之中,所以在此记录跟踪一下目前在使用Flutter过程中遇到的问题,目前的解决方案,并跟踪记录一下。问题列表(持续更新):Flutter 中不支持异步测绘大量文字。~Flutter IOS 后台音频播放~(已经有了第三方)。Flutter 中 NestedScrollView 中存在折叠头、子列表等情况下的滑动等异常。~Hero 跳转之后的图片如原创 2021-08-26 14:43:26 · 520 阅读 · 0 评论 -
【Android 音视频开发打怪升级:音视频硬解码篇】三、音视频播放:音视频同步
本文你可以了解到上一篇文章,主要讲了Android MediaCodec实现音视频硬解码的流程,搭建了基础解码框架。本文将讲解具体的音视频渲染,包括MediaCodec初始化、Surface初始化,AudioTrack初始化、音视频数据流分离提取等,以及非常重要的音视频同步。在上一篇文章定义的解码流程框架基类中,预留了几个虚函数,留给子类初始化自己的东西,本篇,就来看看如何实现。一、音视频数据流分离提取器上篇文章,多次提到音视频数据分离提取器,在实现音视频解码器子类之前,先把这个实现了。封装A原创 2021-08-25 20:55:11 · 360 阅读 · 0 评论 -
【- Flutter 桌面篇 -】 FlutterUnit mac版闪亮登场
零、前言FlutterUnit是【张风捷特烈】长期维护的一个开源项目。 欢迎star经过一段时间的更新,FlutterUnit1.1已基本满足我的期望目前正在逐渐增加和优化组件的收录。现在mac版闪亮登场。FlutterUnit.apk 下载FlutterUnit mac版 下载Github仓库地址[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-szV3CAJk-1629810342606)(https://user-gold-cdn.xitu原创 2021-08-24 21:06:12 · 587 阅读 · 0 评论 -
Android 生命周期备忘录 — 第一部分:单一 Activities
Android 系统的目的是让用户增强控制权并且让他们简便地使用应用程序。例如,一个 app 的用户可能会旋转屏幕,回复一条通知信息,或者切换到另一个任务,而用户应该能够在这类操作后继续流畅地使用这个 app。为了提供这种用户体验,你应该知道怎么管理组件的生命周期。组件可以是一个 Activity,一个 Fragment,一个 Service,或者 Application 本身,甚至是在默默运行的进程。组件有生命周期,生命周期会在多种状态中变换。当状态发生变化时,系统会通过一个生命周期回调方法通知你。为原创 2021-08-24 15:52:19 · 151 阅读 · 0 评论 -
[译] 2019 年的 Android 网络 —— Retrofit 与 Kotlin 协程
原文地址:Android Networking in 2019 — Retrofit with Kotlin’s Coroutines原文作者:Navendra Jha译文出自:掘金翻译计划本文永久链接:github.com/xitu/gold-m…译者:feximin2019 年的 Android 网络 —— Retrofit 与 Kotlin 协程2018 年,Android 圈发生了许多翻天覆地的变化,尤其是在 Android 网络方面。稳定版本的 Kotlin 协程的发布极大地推..原创 2021-08-24 14:07:21 · 293 阅读 · 0 评论 -
[-Flutter插件篇 -] 认识MethodChannel
上次从一个路径插件看来一下Flutter中如何调用iOS和Android中的方法以及平台如何返回值给Flutter框架。今天就来详细讲讲MethodChannel是如何连同另一个世界的。1.从吐司弹框开始说起(Android端/Java)想要达成的效果是这样使用可以弹出一个时间较长的吐司这个示例要讲述的是Flutter中如何向平台传递参数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aNH1nR59-1629539325555)(https://user-g.原创 2021-08-21 17:49:24 · 1363 阅读 · 0 评论 -
Android开源框架源码鉴赏:Fresco
关于作者郭孝星,程序员,吉他手,主要从事Android平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的Github提issue或者发邮件至guoxiaoxingse@163.com与我交流。文章目录一 图片加载流程1.1 初始化Fresco1.2 获取DataSource1.3 绑定DraweeController与DraweeHierarchy1.4 从内存缓存/磁盘缓存/网络获取图片,并设置到对应的Drawable层二 DraweeController与Drawee原创 2021-07-02 14:52:59 · 707 阅读 · 0 评论 -
Android开源框架源码鉴赏:Fresco
文章目录一 图片加载流程1.1 初始化Fresco1.2 获取DataSource1.3 绑定DraweeController与DraweeHierarchy1.4 从内存缓存/磁盘缓存/网络获取图片,并设置到对应的Drawable层二 DraweeController与DraweeHierarchy2.1 图层的层级构造2.2 图层的构建流程三 Producer与Consumer四 缓存机制3.1 内存缓存3.2 磁盘缓存更多Android开源框架源码分析文原创 2021-07-01 20:32:51 · 532 阅读 · 1 评论 -
【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(Java篇)
Java面试题Java基础一、面向对象 (⭐⭐⭐)1、谈谈对java多态的理解?多态是指父类的某个方法被子类重写时,可以产生自己的功能行为,同一个操作作用于不同对象,可以有不同的解释,产生不同的执行结果。多态的三个必要条件:继承父类。重写父类的方法。父类的引用指向子类对象。什么是多态面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送原创 2021-07-01 15:23:51 · 248 阅读 · 0 评论 -
[实战]用flutter编写炸弹人小游戏同时支持web和移动端
用flutter编写炸弹人小游戏同时支持web和移动端flutter_BananaMon是我学习dart/flutter的时候开发的一个练手项目,他不依赖第三方游戏框架,是一个从零开始的项目,现在已经开源在github。简介google主导的Dart对标微软主导的TypeScript,但是在web端一直屈居下风,Google能否借助flutter这款框架咸鱼翻身?总体来讲flutter是一个设计用于app开发的跨平台ui框架,它用dart在android和iOS端实现了对底层图形库进行了封装,并不像.原创 2021-07-01 13:57:09 · 376 阅读 · 0 评论 -
# HenCoder Android 自定义 View 1-8 硬件加速
硬件加速这个词每当被提及,很多人都会感兴趣。这个词给大部分人的概念大致有两个:快速、不稳定。对很多人来说,硬件加速似乎是一个只可远观而不可亵玩的高端科技:是,我听说它很牛逼,但我不敢「乱」用,因为我怕 hold 不住。今天我试着就把硬件加速的外衣脱掉(并没有),聊一聊它的原理和应用:硬件加速的本质和原理;硬件加速在 Android 中的应用;硬件加速在 Android 中的限制。本篇是 「HenCoder Android 开发进阶」自定义 View 部分的最后一篇:硬件加速。如果你没听说过原创 2021-06-30 21:42:27 · 257 阅读 · 0 评论 -
“创业吃过饼,国企养过老”-架构师的头发不是一天掉完的!
一、权限处理分类由上图可以看出,主要分为四类。下表逐一介绍各类对应的一些情况。二、动态权限申请虽然总的来说分为四类,但是只需要处理一种情况,即动态申请权限。其他三种情况,要么默认实现,要么系统定制,无法从代码角度进行调整。那么下面先来看下那些权限需要动态申请。(1)权限列表Android6.0以上把权限分为普通权限和危险权限,所以危险权限是需要动态申请,给予用户提示的,而危险权限就是上表展示的内容。看到上面的 permissions,会发现一个问题,危险权限都是一组一组的。分组对权限机制原创 2021-06-22 21:57:44 · 156 阅读 · 0 评论 -
_Flutter图表库fl_chart的使用解析(一)-介绍
##缘起有很多Android 开发人员准备面试,却不知道如何准备?于是纷纷上网发帖求助。甚至很多人网上随便找找面试题什么的,其结果就是[字节惨挂在三面],挥泪整理面筋。等诸多文章火了,究其原因就是这些文章戳中了大部分面试者的痛点,面试被刷了。想到还有很多android程序员没有找到Android面试大纲。不知道如何准备Android面试。于是,我就想干脆我自己做这个事吧,就算没人看,也当我自己的年终总结了。如何准备android面试纯技术方面的准备,如果是的话,我就提供一些拙见,大部分算是原创 2021-06-22 19:32:28 · 2514 阅读 · 0 评论 -
[Android]朝花夕拾之使用DexClassLoader动态加载广点通jar包
前言众所周知,优秀源码的阅读与理解是最能提升自身功力的途径,如果想要成为一名优秀的Android工程师,那么Android中优秀三方库源码的分析和理解则是必备技能。就拿比较热门的图片加载框架Glide来说,相信很多同学都使用过,那么,当别人问你下面这些问题时你是否能回答出来呢?(Glide五连发)1、为什么要在项目中使用这个库?2、这个库都有哪些用法?对应什么样的使用场景?3、这个库的核心实现原理是什么?如果让你实现这个库的某些核心功能,你会考虑怎么去实现?4、Glide源码机制的核心思想是什么原创 2021-06-22 17:13:10 · 320 阅读 · 0 评论 -
(建议精读)HTTP灵魂之问,巩固你的-HTTP-知识体系!
前言一份GitHub标星2.9K的Android大厂面试题整理,在金九银十面试季分享给大家,希望每个人都能拿到满意的Offer!目录Android基础面试题1、什么是 ANR 如何避免它?2、Activity 和 Fragment 生命周期有哪些?3、横竖屏切换时候 Activity 的生命周期4、AsyncTask 的缺陷和问题,说说他的原理。5、onSaveInstanceState() 与 onRestoreIntanceState()Android高级面试题1、你们做原创 2021-06-22 15:50:48 · 183 阅读 · 9 评论