Android
文章平均质量分 69
落叶挽歌
1
展开
-
Android音视频-初识FFmpeg
已经很久没有写过技术博客了,这段时间加入了新公司,主要时间花在熟悉新业务的技术上。而新的业务主要跟音视频相关,关于音视频的尝试在加入新公司之前,自己有做相关demo的尝试与学习,可以参看音视频相关学习demo。当然,那都是自己“想当然”学习的一些东西,虽然实际工作中并没有派上太大的用处,但让我对音视频相关的基础知识有了一定的概念,对后面的技术尝试做了铺垫。第一个技术挑战比较大的就是进行:视频抽帧,关于视频抽帧网上有很多很多文章进行讲解,但……我始终没有找到一个效率很高的解决方案。直到我遇见了 ffmpeg,原创 2021-11-16 09:46:30 · 410 阅读 · 0 评论 -
Flutter坑之FlutterFragment中SafeArea失效的问题
背景:最近有在做关于Android底部多tab下,对应多个Flutter Fragment的操作。又遇到一个比较坑的问题:FlutterFragment中的flutter页面的SafeArea失效(关于safeArea具体介绍参考官方SafeArea class),简单举例说一下SafeArea的作用:如果你有一刘海屏的手机,如果你的flutter内容为全屏,假如你的内容在全屏最顶部,那么所谓的刘海将会盖住你所想要的内容,如下图所示:这当然不是我们想要的,于是Flutter官方推出:SafeArea这个原创 2020-11-02 09:47:07 · 1633 阅读 · 0 评论 -
Flutter共享FlutterEngine页面切换无法点击的问题
背景最近在研究做Flutter一块相关的内容,方案上采用的是单FlutterEngine,全局Flutter元素共用一个FlutterEngine,对于使用单Engine遇到一个很大的坑,页面切换之后无法点击,页面就像卡死了一样,以下三种情况都会发生:第一种:两个FlutterFragment在tab中进行切换,假如AB代表两个FlutterFragment,当A切换到B,再从B切换到A的时候,页面就无法点击。第二种:在FlutterActivity中打开新的FlutterActivity,新的Flu原创 2020-09-22 10:15:09 · 1562 阅读 · 10 评论 -
从Android返回键退出和直接杀死进程退出说起
最近开发的时候,使用了一个单例模式,当我返回键退出App,再重新启动,发现App的确是从首页启动,在还没有执行到为单例类设置数值时候,断点调试的发现已经有了一个数据,并且是上一次运行留下的数据,当时觉得很神奇,明明根Activity已经执行了OnDestroy(),而且再启动的确是从首页过来的,讲道理应该是“Everything will be new”,但是单例里面的数据仍然存在,这可是为什么呢?Google搜了一下,噢!恍然大悟,看到这一块的知识很久没有用就忘掉了,或者说对运行机制相关还不太熟悉吧,所原创 2020-09-08 23:21:45 · 2159 阅读 · 0 评论 -
基于AndroidVideoCache的预加载(附Demo)
最近有做需求关于视频缓存,了解到相关的开源库AndroidVideoCache,一款市面上相对比较流行的视频缓存框架,而我想利用该框架进行视频缓存的处理,并且希望能够支持预加载。然而该框架作者在18年就已经停止了维护,所以留下了无限的编程空间给其他程序员,对于视频预加载,只搜到一篇《AndroidVideoCache源码详解以及改造系列-源码篇》,然而点进该作者的博客列表,说好的预加载呢???后面也没有了下文,搜遍全网好像没有做AndroidVideoCache的预加载相关的事情,那么这样子的话……自己干原创 2020-07-07 09:21:16 · 2912 阅读 · 12 评论 -
从奶酪夹心饼干生产中来学习Android 中的gradle构建
在Android开发中,Gradle是每个开发者都会接触的,Gradle 是一个非常优秀的项目构建工具。这是大家都知道的,但是又有啥用呢?最开始的时候很难理解gradle到底是干什么的,相关知识都比较离散,所以很多东西没有串起来,从而导致理解起来比较困难。我自己总结就是:Gradle是一个构建工具,它存在的目的是产生一套“流水线”,对于安卓开发而言这个流水线就是从本地的编写代码以及资源整合到最终生成的产品过程。原创 2019-12-19 07:28:05 · 320 阅读 · 0 评论 -
一款快速生成安卓shape的插件--NoCodeShape
一、NoCodeShape介绍NoCodeShape是一个能可视化界面操作生成Android中Shape.xml的Android Studio插件。对于新手能更好的去接受Android中相对应的属性,对于资深程序员则能简化操作,快速生成shape.xml。二、NoCodeShape使用方法1. 下载和安装同一般的Android Studio插件下载一样,可以直接Preferences-&g...原创 2019-11-28 09:19:15 · 640 阅读 · 0 评论 -
Android LeanCloud 从简单的单聊、群聊、收发图文消息开始 Connection Lost错误
官方文档写的真是把人搞得没脾气……6.0之后看这份官方文档走起-> https://leancloud.cn/docs/realtime-guide-beginner.html结果Connction Lost错误,文档也没有说为啥,各种Google 百度 搜出来,要在Application里还要加这段代码: AVConnectionManager manager = AVConnect...原创 2019-09-26 16:49:05 · 346 阅读 · 1 评论 -
Android骨架屏效果的实现与原理解析
0、前言大家在使用淘宝的时候,如下图所示有遇到这样的效果,其会只展示一部分骨架大致图,等数据加载完毕之后再展示真正的页面数据。与菊花图相比起来,这样的实现能更好的提升用户的体验,这种效果称做:Skeleton Screen Loading,中文叫做骨架屏。1、骨架屏的实现方式在现在主流的骨架屏实现效果中有两种方式:通过View或者Adapter的替换来实现骨架屏效果。可以参考Shim...原创 2019-09-05 09:59:22 · 3972 阅读 · 2 评论 -
Android插件化之DexClassLoader
0、前言:插件化要解决的三个核心问题:类加载、资源加载、组件生命周期管理。在Android插件化中其原理实际是 Java ClassLoader的原理,此博文主要对Android插件化中类加载做部分做总结,便于之后对Android插件化的理解学习。Android的Dalvik虚拟机和Java虚拟机的运行原理相同都是将对应的java类加载在内存中运行。而Java虚拟机是加载class文件,也可...原创 2019-08-27 17:07:57 · 706 阅读 · 0 评论 -
Android监听系统截屏的坑
最近有做在监听系统截屏操作,然后对截屏的图片获取到,再在其底部加入二维码或者其他信息生成分享海报。这里面最不好做的就是监听系统截屏的操作了,系统没有提供相关api,所以得靠“骚操作”,目前业内主流的操作,像这篇博文写的那样:https://blog.csdn.net/xietansheng/article/details/52692163通过 自定义媒体内容观察者内部类,去观察媒体数据库的改变,...原创 2019-07-10 19:28:34 · 3187 阅读 · 17 评论 -
Android监听截屏事件之媒体读取的探索
最近做了一个需求:监听用户截屏,然后生成相关海报。参考了Android 截屏事件监听的文章,大致思路是:1、利用ContentObserver用来监听指定Uri的所有资源变化,当媒体库中有相关图片新增的时候,则发送相关的通知。2、得到回调的Uri后,借助ContentResolver在媒体数据库中查询最后一条数据3、对数据做一些过滤。比如短时间重复截屏的情况以及其他App也插入了媒体文件等...原创 2019-07-02 16:28:01 · 682 阅读 · 0 评论 -
基于Volley框架的返回数据的范型处理
在平时最普通的Volley的网络请求中,我们StringRequest是这样请求网络数据的:StringRequest stringRequest = new StringRequest("http://www.baidu.com", new Response.Listener<String>() { @Override ...原创 2019-05-13 14:56:54 · 186 阅读 · 0 评论 -
LayoutInflater源码解析
我们经常实用的LayoutInflater这样用:View view = LayoutInflater.from(context).inflate(R.layout.resource,root,flase);进入inflate进行源码解析public View inflate(@LayoutRes int resource, [@Nullable](https://my.oschina.ne...原创 2019-03-12 16:24:53 · 140 阅读 · 0 评论