环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

环信客服云

环信客服云

无需下载,注册即用
声网开发者社区

声网开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有
0
评论

Jetpack Compose | Compose 滑动列表真的需要使用LazyColumn吗?No No No! Android jetpack

柳天明 发表了文章 • 96 次浏览 • 2021-09-08 15:02 • 来自相关话题

Jetpack Compose | 控件篇(五)-- Spacer、LazyRow、LazyColumn & 让Column可滑动在上一篇中,我们完成了 Box、Row、Column 相关内容的学习,并且留下了一个疑问:"如果容器大... ...查看全部
0
评论

View实现3D效果 Android View绘制

柳天明 发表了文章 • 50 次浏览 • 2021-09-08 15:00 • 来自相关话题

上次有文章介绍了利用传感器实现3D效果,根据加速度和重力传感器,计算xy偏移值,然后在移动view。1. 利用MotionLayout实现最开始想到的是用motionlayout也可以同样实现,但是最后发现我错了,motionlayout设置的view路径是固... ...查看全部
0
评论

Activity启动流程(基于AOSP 11) Android Activity

柳天明 发表了文章 • 60 次浏览 • 2021-09-08 14:56 • 来自相关话题

当点击Launcher的App icon的时候,点击事件传递给ItemClickHandler的onClickAppShortcut,并最终调用到launcher.startActivitySafely->BaseDraggingActivity.sta... ...查看全部
0
评论

面试常问的ACTION_CANCEL到底何时触发,滑出子View范围会发生什么? 事件分发 Android

柳天明 发表了文章 • 66 次浏览 • 2021-09-07 11:38 • 来自相关话题

看完本文你将了解:ACTION_CANCEL的触发时机滑出子View区域会发生什么?为什么不响应onClick()事件首先看一下官方的解释:/** * Constant for {@link #getActionMasked}: The current ge... ...查看全部
0
评论

Kotlin 写自定义 ViewGroup kotlin Android

柳天明 发表了文章 • 52 次浏览 • 2021-09-07 11:33 • 来自相关话题

Android 最近推行的 Compose ,有着 Kotlin 的加持,使写 UI 更加方便快速,不用担心布局嵌套,还是声明式 UI,那么 Compose 有这么多好处,原生写法还有 “出路” 吗?今天给大家分享一种非传统的自定义 ViewGroup 写法,... ...查看全部
0
评论

Android开发太难了:Java Lambda ≠ Android Lambda 源码分析 Android

柳天明 发表了文章 • 61 次浏览 • 2021-09-07 11:32 • 来自相关话题

我又来了,继续回归写作中,目标 1 月 2 篇。需要两篇才能阐述清楚Java Lambda ≠ Android Lambda,本篇为上篇,先解释清楚 Java Lambda 的一些知识。耐心阅读本文,你一定会有收获。一、Java Lambda 不等于 匿名内部... ...查看全部
0
评论

Android 11 绕过反射限制 反射 Android

柳天明 发表了文章 • 54 次浏览 • 2021-09-07 11:31 • 来自相关话题

1. 问题出现的背景腾讯视频在集成我们 replay sdk 的时候发现这么个错误,导致整个 db mock 功能完全失效。Accessing hidden field Landroid/database/sqlite/SQLiteCursor; ->m... ...查看全部
0
评论

初识 Jetpack Compose(三) :修饰符(Modifier) Modifier

王二蛋和他的张大花 发表了文章 • 60 次浏览 • 2021-09-07 10:31 • 来自相关话题

Modifier modifier elements装饰或添加行为到 Compose UI 元素的有序的、不可变的集合。例如,背景、填充和单击事件侦听器装饰行、文本或按钮或向其添加行为。 正如其名,modifier主要为Compose组件提供修饰功能,包括... ...查看全部
0
评论

初识 Jetpack Compose(五) :组件-Text Text

王二蛋和他的张大花 发表了文章 • 54 次浏览 • 2021-09-07 10:27 • 来自相关话题

一、Text Compose中的Text的作用与 xml 中的TextView无二,作用于最基本的文本显示。 1.属性 @Composable fun Text( // text: String, text: AnnotatedString, ... ...查看全部
0
评论

【开源项目】简单易用的Compose版骨架屏,了解一下~ compose

王二蛋和他的张大花 发表了文章 • 98 次浏览 • 2021-09-07 10:21 • 来自相关话题

前言 骨架屏是页面的一个空白版本,通常会在页面完全渲染之前,通过一些灰色的区块大致勾勒出轮廓,待数据加载完成后,再替换成真实的内容。骨架屏加载中效果,比起传统的加载中效果可以提供更多信息,用户体验更好,因此也变得越来越流行 本文主要介绍如何使用Compose实... ...查看全部
0
评论

Retorfit + 协程机制 + MVVM 协程机制 mvvm Retorfit

王二蛋和他的张大花 发表了文章 • 68 次浏览 • 2021-09-06 09:59 • 来自相关话题

协程是一种解决方案,是一种解决嵌套,并发、弱化线程概念的方案。能让多个任务之间更好的协作,能够以同步的方式编排代码完成异步工作,将异步代码写的像同步代码一样直观。 重点 协程的本质是方法的挂起与恢复:return + callback 协程是什么: ... ...查看全部
0
评论

Android正确的保活方案,不要掉进保活需求死循环陷进 保活

王二蛋和他的张大花 发表了文章 • 68 次浏览 • 2021-09-06 09:55 • 来自相关话题

在开始前,还是给大家简单介绍一下,以前出现过的一些黑科技: 大概在6年前Github中出现过一个叫MarsDaemon,这个库通过双进程守护的方式实现保活,一时间风头无两。好景不长,进入 Android 8.0时代之后,这个库就废掉了。 最近2年Github上... ...查看全部
0
评论

Flutter实现"剑气"加载?️ 剑气

王二蛋和他的张大花 发表了文章 • 53 次浏览 • 2021-09-06 09:51 • 来自相关话题

效果图知识点Animation【动效】Clipper/Canvas【路径裁剪/画布】Matrix4【矩阵转化】剑气形状我们仔细看一道剑气,它的形状是一轮非常细小的弯弯的月牙;在Flutter中,我们可以通过Clipper路径来裁剪出来,或者也可以通过canva... ...查看全部
0
评论

常见问题之webView 内存泄露 webview Android

柳天明 发表了文章 • 59 次浏览 • 2021-09-03 09:54 • 来自相关话题

WebView内存泄露的原因:webView内部的一些线程持有activity对象,导致activity无法释放。继而内存泄漏。现象正常使用都会有内存泄露反复进出多次后:内存没有下降。 网上查了一些解决办法,主要有两种:解决方法一1.在Activit... ...查看全部
0
评论

ConstraintLayout2.0一篇写不完之KeyCycles的秘密 ConstraintLayout2.0 Android

柳天明 发表了文章 • 50 次浏览 • 2021-09-03 09:53 • 来自相关话题

KeyCycle与KeyFrame类似,但是又比KeyFrame复杂,复杂在于KeyFrame只是单帧,而KeyCycle则是在KeyFrame的基础上,增加了周期性的处理,所以,KeyCycle的核心就是周期,KeyCycle决定了在Scene中所有需要重复... ...查看全部
0
评论

Jetpack App Startup如何使用及原理分析 jetpack Android

柳天明 发表了文章 • 68 次浏览 • 2021-09-03 09:51 • 来自相关话题

1.App Startup是什么?来自 Google官方App Startup文档: App Startup 库提供了一种在应用程序启动时初始化组件的简单、高效的方法。Libary开发人员和App开发人员都可以使用App Startup来简化启动顺序... ...查看全部
0
评论

Jetpack生命周期管理 -Lifecycle实战及源码分析 jetpack Android

柳天明 发表了文章 • 61 次浏览 • 2021-09-03 09:50 • 来自相关话题

上次我们聊了 Android 触摸事件传递机制,这次我们来聊聊 Jetpack。具体地说是聊聊他的生命周期管理组件 LifeCycle,因为JetPack这个官方库还蛮大。这里不会再讲 Jetpack的前世今生,以及他的作用什么的。这里我们主要讲讲 LifeC... ...查看全部
0
评论

View的绘制流程 硬件渲染 View绘制 Android

柳天明 发表了文章 • 63 次浏览 • 2021-09-03 09:49 • 来自相关话题

负责硬件渲染的主体对象ThreadedRenderer在整个绘制流程中做了哪几个步骤。1.enableHardwareAcceleration 实例化ThreadedRenderer2.initialize 初始化3.updateSurface 更新Surfa... ...查看全部
0
评论

Android 中java多线程编程及注意事项 多线程 Android

柳天明 发表了文章 • 58 次浏览 • 2021-09-02 13:54 • 来自相关话题

开启线程方式://方式1 public class MyThread extends Thread{ @Override public void run() { super.run(); //do my work... ...查看全部
0
评论

自定义View View绘制 Android

柳天明 发表了文章 • 61 次浏览 • 2021-09-02 13:49 • 来自相关话题

判断自己有没有掌握这个知识点,就模拟面试,看看你能不能给对方讲清楚1. 坐标系在Android坐标系中,以屏幕左上角作为原点,这个原点向右是X轴的正轴,向下是Y轴正轴。如下所示:除了Android坐标系,还存在View坐标系,View坐标系内部关系如图所示。2... ...查看全部
0
评论

你真的了解Handler吗? handler Android

柳天明 发表了文章 • 61 次浏览 • 2021-09-02 13:48 • 来自相关话题

Handler,一个面试中常问的高频词汇。大家想想这个知识点一般是怎么考察的?请解释一下Handler的原理?不不不,这个问题已经烂大街了,我要是面试官,我会这么问。我们知道在Handler中,存在一个方法叫 sendMessageDelay , 作用是延时发... ...查看全部
0
评论

View的绘制流程 onDraw View绘制 Android

柳天明 发表了文章 • 59 次浏览 • 2021-09-02 13:45 • 来自相关话题

performTravel的方法走完onMeasure和onLayout流程后会走到下面这段代码段。 if (mFirst) { if (sAlwaysAssignFocus || !isInTouchMode()) { ... ...查看全部
0
评论

如何用Rust做AndroidUI渲染 Rust

王二蛋和他的张大花 发表了文章 • 61 次浏览 • 2021-09-02 11:19 • 来自相关话题

大力智能客户端团队 西豢沝尔 背景 Rust优秀的安全性、媲美C++的性能以及对跨平台编译和外部语言(ffi)的支持使得其成为高性能跨平台库的上佳实现语言。然而,Rust是否可以在逻辑层之上进一步服务于一些通用性的UI渲染?我们大力智能客户端团队针对开... ...查看全部
0
评论

带倒计时RecyclerView的设计心路历程 RecyclerView

王二蛋和他的张大花 发表了文章 • 67 次浏览 • 2021-09-02 11:13 • 来自相关话题

需求 目前有这样一个需求: 1 需要一个页面,展示多个条目 2 每个条目有独立的倒计时,倒计时结束后就删除此条目 3 每个条目上有删除按钮,点击可以删除该条目 4 列表上的条目类型是多样的 可行性分析 首先肯定是可以做的: ... ...查看全部
0
评论

在 Flutter 中探索 StreamBuilder StreamBuilder

王二蛋和他的张大花 发表了文章 • 56 次浏览 • 2021-09-02 11:07 • 来自相关话题

原文 medium.com/flutterdevs… 正文 异步交互可能需要一个理想的机会来进行总结。偶尔,在周期结束之前可能会发出一些值。在 Dart 中,您可以创建一个返回 Stream 的容量,该容量可以在异步进程处于活动状态时发射一些值... ...查看全部
0
评论

带着问题学习Android中View的measure测量 measure

王二蛋和他的张大花 发表了文章 • 67 次浏览 • 2021-09-01 15:58 • 来自相关话题

在进行研究measure原理之前,我们先带着这三个问题来想想。因为我是遇到这三个问题才开始研究measure的源码,所以我也把下面的三个问题当做引子。调用measure(int widthMeasureSpec, int heightMeasureSpec)方... ...查看全部
0
评论

kotlin协程最佳实践-android官网 协程

王二蛋和他的张大花 发表了文章 • 67 次浏览 • 2021-09-01 15:16 • 来自相关话题

协程最佳实践 android官网地址 这些实践可以让你的程序在使用协程的时候更加的易扩展和易测试 1.注入调度器 不要在创建一个协程的时候或者调用withContext,硬编码来指定调度器 比如这样的 class NewsRepository { ... ...查看全部
0
评论

影响性能的 Kotlin 代码(一) kotlin

王二蛋和他的张大花 发表了文章 • 68 次浏览 • 2021-09-01 15:14 • 来自相关话题

Kotlin 高级函数的特性不仅让代码可读性更强,更加简洁,而且还提高了生产效率,但是简洁的背后是有代价的,隐藏着不能被忽视的成本,特别是在低端机上,这种成本会被放大,因此我们需要去研究 kotlin 语法糖背后的魔法,选择合适的语法糖,尽量避免这些坑。 L... ...查看全部
0
评论

从android系统源码看java层的so加载。 so Android

柳天明 发表了文章 • 62 次浏览 • 2021-09-01 10:00 • 来自相关话题

理论基础我们在android开发项目过程中都必然会更so加载打交道,那么so加载在系统中的顺序和流程是怎样的,我们就有必要对这个加载过程进行熟悉了解掌握。so的加载是一种解析式装载,这与dex有一定区别,dex是先加载进行优化验证生成odex,再去解析odex... ...查看全部
0
评论

View的绘制流程 onLayout View绘制 Android

柳天明 发表了文章 • 63 次浏览 • 2021-09-01 09:58 • 来自相关话题

onLayout的原理 final boolean didLayout = layoutRequested && (!mStopped || mReportNextDraw); boolean triggerGlo... ...查看全部
0
评论

Java “优雅”地中断线程(原理篇) Thread Android

柳天明 发表了文章 • 81 次浏览 • 2021-09-01 09:56 • 来自相关话题

前言之前有分析过如何优雅地中断线程,秉着"既要知其然,也要知其所以然"精神,本篇将从底层源码分析中断是如何工作的。 通过本篇文章,你将了解到:1、线程底层源码入口2、中断的作用3、Thread.sleep/Object.join/Object.wait 对中断... ...查看全部
0
评论

讲讲ViewGroup的setPersistentDrawingCache方法 ViewGroup Android

柳天明 发表了文章 • 70 次浏览 • 2021-09-01 09:53 • 来自相关话题

这是一篇采坑文章,灵感来源于博主某篇文章中与大佬的聊天前言记得在三年前,还在上一个学校,学生时代的时候,接过一个外包的Android单,里面有个需求是在一个Activity中根据用户的点击反复的执行两个动画以达到比较好的交互效果。当时在网上没有找到类似的效果,... ...查看全部
0
评论

Android 开发小总结 Android

柳天明 发表了文章 • 68 次浏览 • 2021-09-01 09:51 • 来自相关话题

1、Java 用FileReader 和 FileWriter 进行文件读写FileReader 和FileWriter是对文件进行读取和写入的;具体流程://文件路径 String path = Environment.getExternalStorageD... ...查看全部
0
评论

iOS 优雅的处理网络数据,你真的会吗?不如看看这篇. iOS开发

zuyu 发表了文章 • 78 次浏览 • 2021-08-31 17:18 • 来自相关话题

相信大家平时在用 App 的时候, 往往有过这样的体验,那就是加载网络数据等待的时间过于漫长,滚动浏览时伴随着卡顿,甚至在没有网络的情况下,整个应用处于不可用状态。那么我们该怎么去提高用户体验,保证用户没有漫长的等待感,还可以轻松自在的享受等待,对加载后的内容... ...查看全部
0
评论

Swift声明参考-超详细(下) iOS开发

zuyu 发表了文章 • 66 次浏览 • 2021-08-31 10:36 • 来自相关话题

枚举声明在你的程序里使用枚举声明来引入一个枚举类型。枚举声明有两种基本的形式,使用关键字enum来声明。枚举声明体使用从零开始的变量——叫做枚举事件,和任意数量的 声明,包括计算型属性,实例方法,静态方法,构造器,类型别名,甚至其他枚举,结构体,和类。枚举声明... ...查看全部
0
评论

Swift声明参考-超详细(上) iOS开发

zuyu 发表了文章 • 72 次浏览 • 2021-08-31 10:36 • 来自相关话题

一条声明可以在你的程序里引入新的名字和构造。举例来说,你可以使用声明来引入函数和方法,变量和常量,或者来定义 新的命名好的枚举,结构,类和协议类型。你也可以使用一条声明来延长一个已经存在的命名好的类型的行为。或者在你的 程序里引入在其他地方声明的符号。在swi... ...查看全部
0
评论

XCode 使用 PMD 扫描重复代码 iOS开发

zuyu 发表了文章 • 92 次浏览 • 2021-08-31 10:27 • 来自相关话题

使用  HomeBrew 安装 PMDbrew install pmd在 Xcode 的 Build Phases 中,我们增加一个新的 Run Script#检测swi... ...查看全部
0
评论

ConstraintLayout2.0一篇写不完之嵌套滚动怎么滚 Android ConstraintLayout

柳天明 发表了文章 • 66 次浏览 • 2021-08-31 09:56 • 来自相关话题

在ConstraintLayout1.x阶段,它主要提供的能力是对静态布局的支撑,那么到2.x之后,MotionLayout的拓展,让它对动态布局的支持有了进一步的优化,在1.x阶段不能实现的嵌套滚动布局布局方式,现在也就非常简单了。在没有Constraint... ...查看全部
0
评论

iOS AVPlayer的那些坑 iOS开发

zuyu 发表了文章 • 45 次浏览 • 2021-08-30 21:45 • 来自相关话题

这次主要是总结和记录下视频播放遇到的坑,视频播放采用的是AVPlayer这个控件,语法大致如下: NSURL * url = [NSURL fileURLWithPath:@"视频地址"]; AVPlayerItem *playerItem = ... ...查看全部
0
评论

GPUImage recalculateViewGeometry卡UI线程的问题 iOS开发

zuyu 发表了文章 • 46 次浏览 • 2021-08-30 21:43 • 来自相关话题

原因:更新xocde11.4之后发现GPUImage视频画面渲染特别慢,并且控制台输出如下信息:Main Thread Checker: UI API called on a background thread: -[UIView bounds] PID: 7... ...查看全部
0
评论

iOS-GPUImage实现美颜相机功能 iOS开发

zuyu 发表了文章 • 53 次浏览 • 2021-08-30 21:41 • 来自相关话题

本文介绍了如何使用 GPUImage 来实现一个简单的相机。具体功能包括拍照、录制视频、多段视频合成、实时美颜、自定义滤镜实现等。前言AVFoundation 是苹果提供的用于处理基于时间的媒体数据的一个框架。我们想要实现一个相机,需要从手机摄像头采集数据,离... ...查看全部
0
评论

iOS 超隐匿的开发技巧 !!! iOS开发

zuyu 发表了文章 • 62 次浏览 • 2021-08-30 21:35 • 来自相关话题

1、递归查看 view 的子视图(私有方法,没有代码提示)[self.view recursiveDescription]2、过滤字符串的特殊字符// 定义一个特殊字符的集合 NSCharacterSet *set = [NSCharacterSet char... ...查看全部
0
评论

自定义 UITableView 的 Cell 删除样式 iOS开发

zuyu 发表了文章 • 49 次浏览 • 2021-08-30 21:31 • 来自相关话题

一、需求先说下我们的需求,在一个 tableView 中,左滑删除某个 cell 时,需要展示如下图所示的样式,浅灰色底色,橘红色 文字。1、修改删除按钮的文字修改删除按钮的文字很简单,只需要实现下面的方法:/... ...查看全部
0
评论

NSMutableString 不要用 copy iOS开发

zuyu 发表了文章 • 60 次浏览 • 2021-08-30 21:26 • 来自相关话题

疑问:我们都知道 copy 一般用来修饰 有对应可变类型的不可变对象上,比如 NSString,NSArray 和 NSDictionary。那么为什么不推荐用 copy 去修饰&... ...查看全部
0
评论

从伪代码理解View事件分发过程 事件分发 Android

柳天明 发表了文章 • 56 次浏览 • 2021-08-30 13:40 • 来自相关话题

事件从起源从手指从屏幕按下的瞬间,触摸事件经过一系列处理会来到Activity的dispatchTouchEvent中。Activity.javapublic boolean dispatchTouchEvent(MotionEvent ev) { i... ...查看全部
0
评论

iOS Reveal iOS开发

zuyu 发表了文章 • 57 次浏览 • 2021-08-30 10:58 • 来自相关话题

iOS Reveal一、概述Reveal是一款UI调试神器,对iOS开发非常有帮助。这里以版本Version 4 (8796)演示二、安装2.1 Mac端安装Reveal官网直接下载安装,可以用试用版。2.2 手机端安装1.cydia直接安装Reveal Lo... ...查看全部
0
评论

objc_msgSend 消息快速查找(cache查找) iOS开发

zuyu 发表了文章 • 122 次浏览 • 2021-08-30 10:53 • 来自相关话题

一、CacheLookup 查找缓存1.1 CacheLookup源码分析传递的参数是NORMAL, _objc_msgSend, __objc_msgSend_uncached://NORMAL, _objc_msgSend, __objc_msgSend_... ...查看全部
0
评论

iOS GCD 实现线程安全的多读单写功能 iOS开发

zuyu 发表了文章 • 88 次浏览 • 2021-08-30 10:48 • 来自相关话题

本文测试 demo 都是在 playground 里用 Swift5 完成的. 使用 GCD实现线程安全修改数据源, 示例中的读写都是对一个字典而言, 实际开发中可以是文件的读写(FileManager 是线程安全的), 可以是数组, 根据自己情况而定.先来了... ...查看全部
0
评论

高级线程应用之栅栏、信号量、调度组以及source(五) iOS开发

zuyu 发表了文章 • 71 次浏览 • 2021-08-27 14:27 • 来自相关话题

4.3 Dispatch Source 封装 Timer目标是封装一个类似NSTimer的工具。void dispatch_source_set_timer(dispatch_source_t source, dispatch_time_t start... ...查看全部
0
评论

高级线程应用之栅栏、信号量、调度组以及source(四) iOS开发

zuyu 发表了文章 • 77 次浏览 • 2021-08-27 14:27 • 来自相关话题

四、Dispatch Source在任一线程上调用它的的一个函数 dispatch_source_merge_data 后,会执行 dispatch source 事先定义好的句柄(可以把句柄简单理解为一个 b... ...查看全部