移动开发

自定义Chronometer实现定时器

前言 在Android开发过程中,计时控件是经常回使用到的,在Android控件库中有一个能快捷实现计时功能的控件,它就是Chronometer,今天我们基于它自定义实现一个方便调用的计时控件TimeChronometer。 今天涉及知识有: Chronometer常用方法 TimeChronometer在Activity中使用 效果图和项目结构图 TimeChronometer源码 一

Flutter 绘制自定义曲线、折线图及波浪动效实现

简介 上一篇用 Flutter 的 Canvas 画点有趣的图形我们介绍了使用 CustomPaint 绘制自定义形状,可以看到有了图形的平面绘制数学计算方法,我们可以画出所需的形状。本篇我们来介绍线条类图形的绘制,并且结合 Animation 实现了常见的波浪动效。通过本篇,你可以了解到: 正弦曲线的绘制 利用两条正弦曲线加上 Animation 实现波浪动效 曲线的一般绘制方法 折线图绘制

SnapKit源码分析

SnapKit源码分析 Snapkit版本:5.6.0 1. 给谁做约束 ConstraintView:对iOS而言是UIView,对macOS而言是NSView #if os(iOS) || os(tvOS) public typealias ConstraintView = UIView #else public typealias ConstraintView = NSV

Android二维码扫描实战:ZXing框架深度解析

本文还有配套的精品资源,点击获取 简介:ZXing(Zebra Crossing)是一个开源的条码扫描库,支持多种一维和二维条码格式,并广泛应用于Android应用开发中。本篇将详细介绍ZXing框架的基本知识、集成方法、扫描实现、性能优化以及用户交互等方面的实战技巧,帮助开发者在Androi

dispatch_group_leave崩溃

崩溃描述 image.png 近日排查线上崩溃时,发现一个描述信息很少的崩溃,如上。由dispatch_group_leave.cold.1可知,属于dispatch_group异常 dispatch_group使用 dispatch_group使用场景:A任务依赖B/C/D子任务全部执行完成,才进行触发执行。 如何添加子任务,通常有两种方式: block dispatch_gr

一文搞懂Glide,不懂来打我

1、什么是Glide? 1.1、官方描述 Glide是一个快速高效的Android图片加载库,注重于平滑的滚动。Glide提供了易用的API,高性能、可扩展的图片解码管道(decode pipeline),以及自动的资源池技术。 Glide 支持拉取,解码和展示视频快照、图片和GIF动画。Glide的Api灵活易用,开发者可以插入和替换成自己喜爱的任何网络栈。默认情况下,Glide使用的是一个

关于RecyclerView的setHasFixedSize方法

recyclerView.setHasFixedSize方法什么时候设置为true 什么时候设置为false呢? 可以看下源码中关于这个方法的解释: /** * RecyclerView can perform several optimizations if it can know in advance that RecyclerView's * size is not a

Delphi无法正确动态调用C++ dll库的几个原因

摘自: 本文说明delphi调用C++DLL库的几个问题,并给出解决方法。 1、问题一: delphi找不到dll中的函数,出现“无法定位程序输入点”的问题 如下图所示: 分析: 这是因为dll库开放的函数名和代码中的函数名不致导致的,比如myfunc的函数名生成dll后变为_myfu

android studio模块化之模块划分简易版

模块也好,组件也罢,都是需要做好模块区分的。 一、新建module 修改你的模块名,比如你原来的包名是aaa.bbb.ccc,那么模块名就会是aaa.bbb.模块名 二、统一依赖 当我们建立好的module之后,发现主项目app和mudole各自的build.gradle文件都有一些相同的依赖,这个这个时候,需要进行管理,避免混乱。 一些相同的依赖