移动开发

基于Telegram二次开发 --- MTProtoKit 架构

MTProto 是 Telegram 的核心协议,旨在支持多种传输协议;当前版本的 Telegram-iOS 仅支持 TCP 传输;HTTP 传输已于 2018 年删除;VoIP 模块 libtgvoip 支持 UDP 和 TCP 传输。 MTProtoKit 源码仓库 MTProto 官方文档 Telegram-iOS 在 Network 内置了用于冷启动的种子地址: let seedAdd

手写Android-Handler

Handler机制,是Android系统的消息队列,一般用于处理主线程的页面绘制等消息处理。 前言 Handler除了Java层外,还有Native的部分,但我能力有限,只能仿写一个Java层的Handler,并且支持延时消息。项目地址:MiniHandler 注:由于消息机制需要使用一个while死循环来让线程不能结束,所以直接将MiniHandler在Android主线程中使用会卡住主线程,所

在UIKit中使用SwiftUI(SwiftUI和UIKit混合开发)

在UIKit中使用SwiftUI,需要使用UIHostingController对SwiftUI进行包装,返回的是UIViewController类型。 但是UIHostingController是SwiftUI的类,在OC中是不可以直接使用的,所以我们可以先创建一个Swift管理类,用来返回被包装的SwiftUI的控制器是UIViewController类型,可以直接在OC代码中使用。 如果还不

Android MVP开发模式与Rxjava+Retrofit结合的使用(进阶版)

以前根据参考各路大神的博客,以及自己对mvp的理解,早早就写了这种不成熟的结合模式(旧版),历时半年,他们终于进化了! 一、基础介绍 1、什么是mvp mvp是android开发架构之一,MVP每个字母分别代表Model、View和Presenter。 ①model负责处理网络数据的处理 ②presenter是model和view的桥梁,负责与两端的通信 ③view是视图层 2、为什么有mvp

ggplot2的aes和aes_string

提取umap坐标和metadata信息 reduction_loci <- as.data.frame(Embeddings(pbmc, reduction="umap")) reduction_loci <- cbind(reduction_loci, pbmc[[]]) 常规使用aes的画法: p <-ggplot(reduction_loci, aes(x=UMAP_1,

iOS横竖屏切换

基础概念 UIDeviceOrientation UIDeviceOrientation,表示设备朝向,可以通过[UIDevice currentDevice] orientation]获取,取值有: typedef NS_ENUM(NSInteger, UIDeviceOrientation) { UIDeviceOrientationUnknown, // 未知

Android-推荐一个沉浸式状态栏开源库(ImmersionBar )

图片来源网络,入侵必删 在日常的Android开发中,我们肯定遇到沉浸式的开发需求。在大多数项目当中,都会使用ImmersionBar开源库适配。这篇博客分享一下ImmersionBar相关的知识,希望对看文章的小伙伴有所帮助。 ImmersionBar依赖 mavenCentral版本: // 基础依赖包,必须要依赖 implementation 'com.geyifeng.imme

iOS 动态更换App图标

一、准备好icon图标 然后放到项目中 如图所示 WechatIMG243.jpeg 注意:1、图片一定不要放到 Assets.xcassets 里面 2、icon图片的名称可以随意取 3、icon图片可以为一张 也可以为多少张(因为适配 所以我这里是多张 按照苹果的尺寸来设计的图片) 二、配置 Info.plist 截屏2022-06-23 上午10.08.56.png

[Unity 3D] 将自定义配置整合到 ProjectSettings

在本文笔者将教大家如何将自己所写插件的全局配置绘制到 ProjectSettings , 同时将配置文件存放在 ProjectSettings 目录下。 前言 HybridCLR 配置项均为编辑器下生效,这种配置文件放置在项目中就会对原有项目有侵入,但是放在 ProjectSettings 文件夹中就会很完美,这作用域拿捏的死死的;同时,将 HybridCLR Settings 绘制到 Pro

Kotlin用@Parcelize实现序列化Parcelable

简介 在Android项目中经常要对Bean进行Parcelable序列化,也有很多序列化工具。Android中提倡通过实现Parcelable来对对象序列化,但是如果是使用Java开发实现起来就比较繁琐,而Kotlin提供了@Parcelize,可以轻松实现对Bean的序列化及反序列话。先看看官方对@Parcelize的解析: /** * Instructs the Kotlin compil