Flutter实战一Flutter聊天应用(五)
我们的应用程序现在已经有了一个好看的UI,但是我们还没有一个后端。所以我们要买一个云服务器,然后再安装数据库?当然不是!我们可以使用Firebase平台作为后端,那么Firebase是什么呢?...
View ArticleAndroid弹幕实现:基于B站弹幕开源系统(7)QQ、微信聊天气泡样式的弹幕
Android弹幕实现:基于B站弹幕开源系统(7)QQ、微信聊天气泡样式的弹幕在附录文章得基础上,改进普通文本弹幕,实现一种特殊效果的文本弹幕,像QQ、微信一样的带有气泡背景的弹幕。实现的重点是在SpannedCacheStuffer。同时要准备若干需要衬在文本弹幕背景部分的.9.png图片。上层Java代码:package zhangfei.danmaku; import...
View ArticleAndroid FutureTask 分析
之前在研究AsyncTask源代码的时候发现了它的内部使用了FutureTask、Future,Callable类来实现,因为之前在学习java的时候并没有接触到这些东西,于是乎就打开了百度看了半天别人的博客也没有理解其用法以及原理,后来果断的查看了一下其源代码之后才知道其来龙去脉。官方文档这么介绍FutureTask类的。 A cancellable asynchronous...
View ArticleReact Native 0.45.0 正式发布,有重大更新
React Native 继续之前的升级的频率,差不多一个月升级一次。6月7号React Native 0.45.0正式发布。该版本有如下的重大变更: 1,删除 React 的转发和错误导入警告(Remove React forwarding and wrong import warnings) 2,其他更改 Bug 修复 XMLHttpRequest withCredentials...
View ArticleKotlin学习之-4.3.2 包管理
Kotlin学习之-4.3.2 包管理 Kotlin源文件是以包定义开头的: package foo.bar fun baz() {} class Goo() {} // ... 所有源文件中的的内容包括类和函数都在定义的包中。所以在上面的例子中,函数baz()的全名是foo.bar.baz, 类Goo的全名是foo.bar.Goo。 如果包没有定义,那么源文件的内容将全部属于”默认”包下,...
View ArticleAndroid自定View-最简单的可拖拽式层叠卡片
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/72935315 本文出自:【顾林海的博客】 前言 记得两年多前在同程旅游的时候,第一个周边游的项目要求做一款卡片类,可左右拖拽,当初实现的比较粗糙,而且实现方式也相对复杂,今天有空翻看之前写的卡片控件,突然有了更好的实现思路,下面看看实现后的效果: 使用说明...
View ArticleKotlin 从学习到 Android 第九章 可见性修饰符
类、对象、接口、构造函数、函数、属性和它们的 setter 都可以有可见性修饰符。( getter 总是与属性具有相同的可见性。)在 Kotlin 中有四个可见性修饰符: private , protected , internal 和 public。如果没有用修饰符修饰,默认是 public 。 下面将介绍可见性修饰符在修饰不同类型时的作用: 包...
View ArticleAndroid ConstraintLayout 约束布局
前言 Google I/O 2016 上发布了 ConstraintLayout。它的优点就是能减少布局的层级,用它完全替换RelativeLayout和LinearLayout应该都是可以的。 关于ConstraintLayout的一些Android Studio界面操作可以看《Constraint 代码实验室–带你一步步理解使用 ConstraintLayout》,其英文出处可以看Using...
View ArticleKotlin学习记录(二)—— Kotlin的变量、属性、类、构造函数、继承、方法
接上篇:搭建环境到输出Hello World! 变量和属性: 对于Kotlin来说,一切都是对象。听起来和Java一样啊,万物皆对象!不,不,不,是一切都是对象,包括原始基本类型。 当然,基本类型还是存在的,而且他们的使用方式和名字和Java都差别不大,但是都是作为一个对象存在的,而且还是有一些不同之处需要注意的,比如:数字类型不能自动转换,需要做明确的类型转换。 例: val i:Int=100...
View ArticleCFRunloop 优化TableView加载高清大图UI卡顿问题。单独分批加载
TableView卡顿环境分析: tableView加载过多的高清大图,Runloop不只处理iOS事件,渲染图形也是runloop处理的。 而渲染图形的UI操作必须在主线程中,不能开辟线程进行图形处理。 在拖动tableView的时候,Runloop要处理拖动事件,还要处理过多图片渲染,而造成卡顿。 解决卡顿分析:...
View Article信号捕捉
在前面的一篇文章中提到了关于信号的一些知识,可参考如下文章: Linux中关于信号的一些知识 接下来在这篇文章中就谈一谈什仫是信号捕捉。 什仫是信号捕捉? 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。 与信号捕捉有关的函数操作: 1.读取/修改与指定信号相关联的处理动作,与signal函数类似; #include <signal.h> int...
View ArticleKotlin学习之-4.3.3 控制流
Kotlin学习之-4.3.3 控制流 if 表达式 Kotlin中,if 是一个表达式,他会返回一个值。 因此没有三元操作符(condition ? then : else), if表达式可以很好的表达这样的功能。 // 普通用法 var max = a if (a < b) max = b // 带else 的表达式 var max: Int if (a > b) { max =...
View ArticleAndroid WebView简要介绍和学习计划
我们通常会在App的UI中嵌入WebView,用来实现某些功能的动态更新。在4.4版本之前,Android WebView基于WebKit实现。不过,在4.4版本之后,Android WebView就换成基于Chromium的实现了。基于Chromium实现,使得WebView可以更快更流畅地显示网页。本文接下来就介绍Android...
View ArticleAndroid WebView加载Chromium动态库的过程分析
Chromium动态库的体积比较大,有27M左右,其中程序段和数据段分别占据25.65M和1.35M。如果按照通常方式加载Chromium动态库,那么当有N个正在运行的App使用WebView时,系统需要为Chromium动态库分配的内存为(25.65 + N x...
View ArticleAndroid WebView执行GPU命令的过程分析
Android WebView使用的Chromium引擎,虽然没有自己的GPU进程或者线程,但是却可以执行GPU命令。原来,Android WebView会给它提供一个In-Process Command Buffer GL接口。通过这个接口,Chromium引擎就可以将GPU命令提交给App的Render Thread执行。本文接下来就详细分析Android...
View ArticleAndroid WebView硬件加速渲染网页UI的过程分析
Android WebView作为App UI的一部分,当App UI以硬件加速方式渲染时,它也是以硬件加速方式渲染的。Android WebView的UI来自于网页,是通过Chromium渲染的。Chromium渲染网页UI的机制与Android App渲染UI的机制是不一样的。不过,它们会一起协作完成网页UI的渲染。本文接下来就详细分析Android...
View Article