自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 资源 (13)
  • 收藏
  • 关注

原创 音视频之视频压缩及数字视频基础概念

本文综述了视频压缩编码技术及数字视频的基本概念。首先,文章介绍了信息的三大特性(通用性、抽象性、无限性)及信息化的定义与实现途径。接着,文章详细分析了视频信息的特点,包括直观性、确定性、高效性和广泛性,并指出视频信号的高带宽性。随后,文章探讨了视频压缩编码的必要性及可能性,重点介绍了预测编码和变换编码的原理。文章还概述了视频编码系统的基本结构,分为基于波形的编码和基于内容的编码两大类,并简要提及了立体视频编码的发展方向。最后,文章介绍了数字电视的基本概念、PCM原理及数字电视信号的编码参数,强调了数字电视在

2025-05-23 19:00:00 1098

原创 音视频之H.265/HEVC速率控制

 视频传输带宽通常都会受到一定限制,为了在满足信道带宽和传输时延限制的情况下有效传输视频数据,保证视频业务的播放质量,需要对视频编码过程进行速率控制。所谓速率控制,就是通过选择一系列编码参数,使得视频编码后的比特率满足所需要的速率限制,并且使得编码失真尽量小。速率控制属于率失真优化的范畴,速率控制算法的重点是确定与速率相关的量化参数(QuantizationParameter,QP)。

2025-05-20 16:35:31 1335

原创 音视频之H.265/HEVC率失真优化

   为了将具有庞大数据量的视频在有限信道内传输、存储,高压缩率的编码算法往往会造成编码重建视频与原始视频存在差别,即重建视频产生失真,该类压缩被称为有损压缩。对于有损压缩算法,其性能需要根据编码输出的比特率和编码带来的失真度共同衡量。编码比特率和失真度相互制约、相互矛盾,如降低比特率往往会增加视频的失真度,相反要想获得更好的视频质量,又会提高视频的编码比特率。因此,视频编码的主要目的就是在保证一定视频质量的条件下尽量减少编码比特率,或在一定编码比特率限制条件下尽量地减小编码失真。在固定的编码框架下,为了应

2025-05-19 18:41:45 976

原创 音视频之H.265/HEVC编解码并处理

新一代视频压缩标准 H.265/HEVC 在很大程度上是为了满足人们对于高分辨率视频的需求,而对于高清乃至超高清视频,分辨率达到了4kx2k或8kx4k,无论是从编码还是从解码的角度,其计算复杂度都是极高的。而为了提高H.265/HEVC的网络适应能力,其压缩性能与H.264/AVC 相比显著提高,相同条件下的码率可以降低50%,获得性能提升的代价就是编解码复杂度的大大提高。 与H.264/AVC相比,H.265/HEVC的复杂度主要体现在以下几点:H.265/HEVC 的帧内预测模式增多,

2025-05-06 16:52:40 1073

原创 音视频之H.265/HEVC网络适配层

H.265/HEVC也采用了视频编码层(Video Coding Layer,VCL)和网络适配层(Network Abstract Layer,NAL)的双层架构,以适应不同的网络环境和视频应用。网络适配层的主要任务是对视频压缩后的数据进行划分和封装,并进行必要的标识,使其可以很好地适应复杂多变的网络环境。当前的网络类型多种多样,不同的网络环境具有不同的特性,压缩视频在其中进行传输时必然会受到影响。例如,不同类型的网络支持的最大传输单元(Maximum Transmission Unit,MTU)可能有所

2025-04-29 16:19:10 1004

原创 音视频之H.265/HEVC熵编码

熵编码是指按信息熵原理进行的无损编码方式,无损编码也是有损视频编码中的一个关键模块,它处于视频压缩系统的末端。编码把一系列用来表示视频序列的元素符号转变为一个用来传输或存储的压缩码流,输入的符号可能包括量化的变换系数、运动矢量信息、预测模式信息等。熵编码可以有效去除这些视频元素符号的统计几余,是保证视频编码压缩效率的重要工具之一。

2025-04-27 18:12:18 1284

原创 音视频之H.265/HEVC环路后处理

类似于以往的视频编码标准,H.265/HEVC 仍采用基于块的混合编码框架,方块效应、振铃效应、颜色偏差以及图像模糊等失真效应仍存在于采用 H.265/HEVC 标准的压缩视频中。为了降低这类失真对视频质量的影响,H.265/HEVC中采用了环路滤波技术叫(In-loop Filtering),包括去方块滤波(Deblocking Filter)和像素自适应补偿(Sample Adaptive Offset)两个模块。去方块滤波用于降低方块效应,像素自适应补偿用于改善振铃效应,这两个模块在编码框架中的位置如

2025-04-24 19:12:37 1372

原创 音视频之H.265/HEVC量化

量化 (Quantization) 是指将信号的连续取值(或大量可能的离散取值)映射为有限多个离散幅值的过程,实现信号取值多对一的映射。在视频编码中,残差信号经过离散余弦变换 (DCT) 后,变换系数往往具有较大的动态范围。因此对变换系数进行量化可以有效地减小信号取值空间,进而获得更好的压缩效果。同时,由于多对一的映射机制,量化过程不可避免地会引入失真,它也是视频编码中产生失真的根本原因。

2025-04-24 15:02:06 1183

原创 音视频之H.265/HEVC变换编码

变换编码图像变换编码是指将以空间域中像素形式描述的图像转换至变换域,以变换系数的形式加以表示。绝大多数图像都含有较多平坦区域和内容变化缓慢的区域,适当的变换可使图像能量在空间域的分散分布转为在变换域的相对集中分布,以达到去除空间几余的目的,结合量化、“z”扫描和熵编码等其他编码技术,可以获得对图像信息的有效压缩。H.265/HEVC标准规定,在帧内4x4式亮度分量残差编码中使用4x4 整数 DST,而在帧内其他模式、帧间所有模式,以及所有色差分量的残差编码中一律使用整数DCT。这主要是由于帧内预测利用周围已

2025-04-18 18:02:20 1310

原创 音视频之H.265/HEVC预测编码

预测编码是视频编码中的核心技术之一。对于视频信号来说,一幅图像内邻近像素之间有着较强的空间相关性,相邻图像之间也有很强的时间相关性。因此,先进的视频编码往往采用帧内预测和帧间预测的方式,使用图像内已编码像素预测邻近像素,或利用己编码图像预测待编码图像,从而有效去除视频空域和时域的相关性。视频编码器对预测后的残差而不是原始像素值进行变换、量化、熵编码,由此大幅提高编码效率。自差分编码被应用于视频压缩以来,预测编码一直是视频编码标准的重要内容。

2025-04-16 18:04:11 1105

原创 音视频之H.265/HEVC编码框架及编码视频格式

H.265/HEVC采用混合编码框架,包括变换、量化、熵编码、帧内预测、帧预测以及环路滤波等模块。但是,H.265/HEVC几乎在每个模块都引入了新的编码技术。

2025-04-12 18:48:01 1251

原创 音视频之H.265码流分析及解析

 H.265又称为HEVC(全称High Efficiency Video Coding,高效率视频编码,本文统称为H.265),是 ITU-T H.264/MPEG-4 AVC标准的继任者。2004年由ISO/IEC Moving Picture Experts Group(MPEG)和 ITU-T Video Coding Experts Group(VCEG)作为ISO/IEC 23008-2 MPEG-H Part 2或称作ITU-T H.265开 始制定。第一版的HEVC/H.265视频压缩标准在

2025-03-19 10:30:35 1389

原创 LearnOpenGL之Shader编程——生成设计

网格噪声基于距离场,这里的距离是指到一个特征点集最近的点的距离。比如说我们要写一个 4 个特征点的距离场,我们应该做什么呢?对每一个像素,计算它到最近的特征点的距离。也就是说,我们需要遍历所有 4 个特征点,计算他们到当前像素点的距离,并把最近的那个距离存下来。

2025-02-28 18:03:26 945

原创 LearnOpenGL之Shader编程用算法绘画

 如果你曾经有用计算机绘图的经验,你就知道在这个过程中你需要画一个圆,然后一个长方形,一条线,一些三角形……直到画出你想要的图像。这个过程很像用手写一封信或一本书 —— 都是一系列的指令,需要你一件一件完成。        Shaders 也是一系列的指令,但是这些指令会对屏幕上的每个像素同时下达。也就是说,你的代码必须根据像素在屏幕上的不同位置执行不同的操作。就像活字印刷,你的程序就像一个 function(函数),输入位置信息,输出颜色信息,当它编译完之后会以相当快的速度运行。

2025-02-28 18:03:05 847

原创 LearnOpenGL之骨骼动画

  (动画)插值就是关键帧的中间值。比如我们使用Blender制作动画,不需要设置每一帧的骨骼位置,只需要在几个关键帧中记录它们的位置,旋转,缩放等等信息。然后由程序自动计算出的中间的过渡帧就是我们的插值。通常插值可以使用曲线描述,比如我们的贝塞尔曲线。

2025-02-13 17:26:50 847

原创 GL C++显示相机YUV视频数据使用帧缓冲FBO后期处理,实现滤镜功能。

帧缓冲对象(Framebuffer Object, FBO)是 OpenGL 中用于管理渲染目标的核心工具。它允许你将渲染结果输出到纹理、渲染缓冲对象(Renderbuffer)或其他自定义的缓冲区,而不是默认的屏幕缓冲区。帧缓冲在图形渲染中具有重要作用。        以下是帧缓冲的主要作用和应用场景:

2025-01-23 20:41:18 1703 1

原创 LearnOpenGL之高级OpenGL(2)

当使用多于一个的着色器时,尽管大部分的uniform变量都是相同的,我们还是需要不断地设置它们,所以为什么要这么麻烦地重复设置它们呢?        OpenGL为我们提供了一个叫做Uniform缓冲对象(Uniform Buffer Object)的工具,它允许我们定义一系列在多个着色器程序中相同的全局Uniform变量。当使用Uniform缓冲对象的时候,我们只需要设置相关的uniform一次。当然,我们仍需要手动设置每个着色器中不同的uniform。并且创建和配置Uniform缓冲对象会有一点繁琐

2025-01-21 11:08:29 846

原创 LearnOpenGL之高级OpenGL(1)

帧缓冲对象的初始化首先要创建一个帧缓冲对象,并绑定它,这些都很直观:接下来我们需要创建一个纹理图像,我们将它作为一个颜色附件附加到帧缓冲上。我们将纹理的维度设置为窗口的宽度和高度,并且不初始化它的数据:创建渲染缓冲对象:将渲染缓冲对象附加到帧缓冲的深度和模板附件上:绑定到帧缓冲区,像往常一样绘制场景以着色纹理。

2025-01-17 16:03:44 868

原创 OpenGL C++视频中添加图片及文字水印播放并录制

根据前置储备,该功能的实现流程:创建一个GLThread的OpenGL运行环境;YUV数据绘制到OpenGL纹理中;图片纹理创建绘制到glViewport;文字渲染绘制到glViewport;录制视频的surface并根据此切换GLContext上下文交换(swapBuffer)渲染与显示的视频数据 ;MediaCodec获取出encodeData写入MediaMuxer成为MP4文件格式的视频

2024-11-14 21:33:46 1382

原创 LearnOpenGL之文字渲染

FreeType是一个能够用于加载字体并将他们渲染到位图以及提供多种字体相关的操作的软件开发库。它是一个非常受欢迎的跨平台字体库,它被用于Mac OS X、Java、PlayStation主机、Linux、Android等平台。FreeType的真正吸引力在于它能够加载TrueType字体。TrueType字体不是用像素或其他不可缩放的方式来定义的,它是通过数学公式(曲线的组合)来定义的。类似于矢量图像,这些光栅化后的字体图像可以根据需要的字体高度来生成。通过使用TrueType字体,你

2024-11-04 18:26:36 1364

原创 LearnOpenGL之3D模型加载

将所有需要的向量储存到一个叫做Vertex的结构体中,我们可以用它来索引每个顶点属性。将纹理数据整理到一个Texture结构体中。储存了纹理的id以及它的类型,比如是漫反射贴图或者是镜面光贴图。在构造函数中,我们将所有必须的数据赋予了网格,我们在setupMesh函数中初始化缓冲,并最终使用Draw函数来绘制网格。注意我们将一个着色器传入了Draw函数中,将着色器传入网格类中可以让我们在绘制之前设置一些uniform(像是链接采样器到纹理单元)。public:/* 网格数据 */

2024-10-25 18:21:13 991

原创 OpenGL Texture C++ Camera Filter滤镜视频录制

​OpenGL Texture C++ Camera Filter滤镜视频录制; 基于文章1/2/3的代码,结合Google开源项目grafika中的WindowSurface.java/Coregl.java/TextureMovieEncoder2.java/VideoEncoderCore.java创建出录制视频的surface并根据此切换GLContext上下文交换(swapBuffer)渲染与显示的视频数据,最终在VideoEncoderCore中通过MediaCodec获取出encodeDat

2024-10-19 15:29:34 1094

原创 OpenGL 自定义SurfaceView Texture C++预览Camera视频

由上GLSurfaceView源码分析可知,内部维护着一个GLThread子线程,用来保持GL的上下文GLConext一致性的操作。接下来仿造GLSurfaceView创建一个同样继承于SurfaceView的自定义类WyyGLSurfaceView。WyyGLSurfaceView是在OpenGL Texture C++ 预览Camera视频-CSDN博客中GLTextureCPlusVideoPlayView进行改造的,有兴趣的可翻看我的这一篇的博客。

2024-10-12 16:07:01 1289

原创 OpenGL Texture C++ Camera Filter滤镜

基于OpenGL Texture纹理的强大功能,在片段着色器(Shader)中编写GLSL代码,对YUV的数据进行数据转换从而实现视频编辑软件中的相机滤镜功能。接上一篇OpenGL Texture C++ 预览Camera视频的功能实现,本篇来实现Camera滤镜效果并各种滤镜的切换。

2024-09-15 15:50:47 1279

原创 OpenGL Texture C++ 预览Camera视频

OpenGL是一个图形API,并不是一个独立的平台。包含了一系列可以操作图形、图像的函数。基于Texture纹理强大的功能,本篇文章实现Android OpenGL Texture C++ 预览Camera视频流的功能。

2024-09-06 18:37:20 1517

原创 LearnOpenGL之光照

现实世界的光照是极其复杂的,而且会受到诸多因素的影响,这是我们有限的计算能力所无法模拟的。因此OpenGL的光照使用的是简化的模型,对现实的情况进行近似,这样处理起来会更容易一些,而且看起来也差不多一样。这些光照模型都是基于我们对光的物理特性的理解。其中一个模型被称为风氏光照模型(Phong Lighting Model)。风氏光照模型的主要结构由3个分量组成:环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。下面这张图展示了这些光照分量看起来的样子

2024-08-16 18:52:31 1010

原创 LearnOpenGL之摄像机

当我们讨论摄像机/观察空间(Camera/View Space)的时候,是在讨论以摄像机的视角作为场景原点时场景中所有的顶点坐标:观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机,我们需要它在世界空间中的位置、观察的方向、一个指向它右侧的向量以及一个指向它上方的向量。细心的读者可能已经注意到我们实际上创建了一个三个单位轴相互垂直的、以摄像机的位置为原点的坐标系。

2024-08-06 18:07:40 950

原创 LearnOpenGL之3D显示

绑定texture(纹理)——使用程序——开启深度测试—— 模型矩阵(Model Matrix)观察矩阵(View Matrix)、投影矩阵(Projection Matrix)的初始化创建并与顶点着色器中model/view/projection 的uniform进行数据交换。模型矩阵(Model Matrix)观察矩阵(View Matrix)、投影矩阵(Projection Matrix)组合矩阵传入到gl_position做对应的顶点数据的位置变换。

2024-08-02 18:37:38 1027

原创 LearnOpenGL之入门基础

​OpenGL是一个图形API,并不是一个独立的平台。包含了一系列可以操作图形、图像的函数。本文对LearnOpenGL知识的总结及记录。​ AndroidLearnOpenGL是本博主自己实现的LearnOpenGL练习集合: Github地址:https://github.com/wangyongyao1989/AndroidLearnOpenGL

2024-07-31 19:12:13 1042

原创 C++并发编程实战学习笔记

将应用程序分为多个独立的进程,它们在同一时刻运行,就像同 时进行网页浏览和文字处理一样。独立的进程可以通过进程间常规的通信渠道传递讯息(信号、套接字、文件、管道等等。不过,这种进程之间的通信通常不是设置复杂, 就是速度慢,这是因为操作系统会在进程间提供了一定的保护措施,以避免一个进程去修改 另一个进程的数据。还一个缺点是,运行多个进程所需的固定开销:需要时间启动进程,操 作系统需要内部资源来管理进程,等等。

2024-07-19 15:09:26 384

原创 通过libx246 libfaac转换推送RTMP音视频直播流

RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。RTMP是应用层协议,采用(通常)TCP来保证可靠传输;在TCP完成握手链接建立后,还会进行RTMP的一些自己的握手动作,在建立RTMP Connection链接;

2024-07-19 15:04:05 1416

原创 音视频及H264/H256编码相关原理

我们播放的视频文件一般都是用一种封装格式封装起来的,封装格式的作用是什么呢?一般视频文件里不光有视频,还有音频,封装格式的作用就是把视频和音频打包起来。所以我们先要解封装格式,看有哪些视频流和哪些音频流,此时的音频流和视频流都还是压缩数据,不能直接用于显示的,这就需要解码。如FFmpeg 视频文件就是一个容器 (视频流(H264) 音频流(aac))。

2024-05-24 18:52:08 3439

原创 Java并发编程及并发包中类分析

AbstractOueuedSynchronizer 是java.util.concurrent 的核心组件之一,它提供了一个基于 FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该类利用了一个int 来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire 和release 的方式来操纵状态。然而,多线程环境中对状态的操纵必须确保原子性,因此子类对于状态的把握。

2024-05-11 15:02:45 1162 1

原创 FFmpeg常用结构体、关键函数、ffplay.c分析

AVFormatContext是一个贯穿全局的数据结构,很多函数都要用它作为参数。FFmpeg代码中对这个数据结构的注释是format I/O context,此结构包含了一个视频流的格式内容。其中存有AVIputFormat(或AVOutputFormat,但是同一时间AVFormatContext内只能存在其中一个)、AVStream、AVPacket这几个重要的数据结构以及一些其他的相关信息,比如title、author、copyright等。

2024-04-26 19:05:09 1353 3

原创 MAVLink分析及封装自定义的类MavLink通信协议

通过自动生成mavlink的协议代码,我们可以此基础上进行自定义的拓展。形成自己通信协议。··首先我们把协议通信命令区分为发送和接收:AckMsg和CmdMsg两类,分别用于接收和发送。AckSysInfo类会解析出playload的属性值://解析出payload包含的实体数值@Override'}';CmdSysInfo会包playload的属性值包装成一个MyLinkPacket:@Override。

2024-03-29 11:39:07 2771 2

原创 Kotlin协程知识点概述

Kotlin 是⼀⻔仅在标准库中提供最基本底层 API 以便各种其他库能够利⽤协程的语⾔。与许多其他具有类似功能的语⾔不同,async 与 await 在 Kotlin 中并不是关键字,甚⾄都不是标准库的⼀部分。此外,Kotlin 的 挂起函数概念为异步操作提供了⽐ future 与 promise 更安全、更不易出错的抽象。kotlinx.coroutines 是由 JetBrains 开发的功能丰富的协程库。它包含本指南中涵盖的很多启⽤⾼级协程的原语,包括 launch 、async 等等。

2024-03-26 18:44:43 953

原创 Kotlin编程权威指南学习知识点预览

函数支持包括函数在内的任何类型的参数。一个函数类型的参数定义起来和其他类型的参数 一样:在函数名后的一对圆括号内列出,再加上类型。"你好我的名字叫: $myName" + ",今年:$age 岁了"在面向对象编程的世界里,类是核心,是一类独特“事 物”的代码形式的定义。具体来讲,类定义的是事物包含哪一类数据,能做什么样的工作。类可以定义在一个独立的文件中,也可以和函数或变量定义在一起。类定义在单独一个文件 里,可以给应用程序未来的规模升级预留扩展空间。

2024-03-14 18:45:41 1088

原创 C++ STL标准程序库开发指南学习笔记

模板库(STL):STL另一个重要特性是它不是面向对象的。STL主要依赖于模板。这使得STL的组件具有广泛通用性和底层特性。由于STL是基于模板的,内联函数的使用使得生成的代码短小高效。类模版实例化:类模版仅仅是模板,如何使用模板就涉及类模板的实例化问题。模板实例化一般指使用模板类和模板参数生成一个类声明的过程。类模板的成员函数:可被类模板实例化产生的类所拥有。每个类模板都拥有自己相应的成员函数,这些函数可被模板的实例调用。

2024-03-01 17:34:00 1474

原创 C++基础知识点预览

数组是以系列元素;数据中所有元素的类型都相同;这组元素形成一个完整的集合。预处理器在编译之前运行,预编译器指令都以#打头。C++程序通常在.h(头文件)中声明类和函数,并在.cpp文件中定义函数,因此需要在.cpp文件中使用预处理器编译指令#include来包含头文件。#define定义常量;#ifndef和#endif:在预处理器看来,两个头文件包含对方会导致递归问题。为避免这种问题,可结合使用过宏以及预处理器编译指令#ifndef和#endif;

2024-02-08 16:39:37 1081

原创 Android AutoSize屏幕适配中图标及字体放大的问题解决

现象:项目接入Android AutoSize屏幕适配框架,项目本身主界面是横屏操作的界面。测试中用户反馈在vivo x27的手机或者其他机型也会出现(没测试出来)横屏后所有的图标及字体都放大。原因查找:查看Android AutoSize的源码可知,isBaseOnWidth的标志位为屏幕适配的基准。在获取资源文件getResources()的对图片/文字及其他资源文件可以指定具体的适配方案,vivo x27横屏转换后获取的宽高对调了,所以导致原本以宽(或者高)为基准数值相对调,导致界面的图.

2021-07-04 11:44:55 2331

Android下自动连接指定SSID的WIFI的简单实现的demo

Android下自动连接指定SSID的WIFI的简单实现的demo,  需求分析:在很多的智能设备上并没有可用于交互的界面。这种情形在智能设备就可以提供指定SSID和密码的wifi自动连接。

2018-10-31

GamepadView、JostickView仿创客工场中的遥感的自定义View

仿创客工场中GamepadView、JostickView的操纵杆的自定义View!!!!!!!!!!!!!!!!1

2018-08-04

Android Blockly积木编程源码对Workspace中的block数据保存及读取的流程,及改造原生代码实现Trash垃圾桶中的block保存及读取

Android Blockly积木编程源码对Workspace中的block数据保存及读取的流程,及改造原生代码实现Trash垃圾桶中的block保存及读取。

2018-01-31

Android 画布Canvas之连线动画Demo

实现在画布中连线的动画的效果,可以控制连线动画的速度,连线的颜色及线宽!!!!!!!!!!!11!!!!!

2017-12-11

Coverflow源码改造之后的代码

Coverflow源码改造之后的代码,实现在控件左右两边限制了卡片的数量,并在下一个卡片出现之后要消失的卡片随之隐藏需求的的要求。

2017-09-18

Android 画布Canvas之控件连线操作Demo

1.在画布中的控件A长按能进行控件的连接,只有在控件B范围内抬起控件之间的连线才能连接成功; 2.当控件连线成功后,拖动控件AB之间的连线随着控件的拖动随之变化; 3.控件连线在屏幕上随着手势滑动触碰到连接则断开连线; 4.控件拖动时如拖动到其他控件的范围位置之内则弹回原来的位置且控件的连线也恢复原来的位置(控件在屏幕上不能重叠); 5.控件放置时如有控件之间的连线相交则也恢复原来的位置(在屏幕上控件间的连线不能相交); 6.控件拖动到连线上也会弹回; 7.进行控件的连续连接。

2017-07-24

Android自定义万能Canvas画布Demo

1.在自定义的画布中实现可缩放手势,摇一摇可对控件进行整理排序; 2.画布中可以添加位置设定的控件,控件可以响应点击、长按、拖动事件; 3.控件A长按事件会隐藏画布中的控件除了A之外,显示另一个控件B;当A在在底层画布中拖动,拖动结束之后回到原画布;当A移动B的位置范围响应操作(可以添加另方面功能)。

2017-07-17

kotlin基础

kotlin语言文档

2017-07-09

Android自定义画布及环形菜单

1.画布绘制控件的方法,控件应该是一个可以自定义的; 2.画布是可以缩放,且提供一个缩放的方法供外使用; 3.控件之间连线的方法; 4.画布缩放之后手势滑动的识别实现; 5.环形菜单的实现。

2017-07-02

StickyLayoutDemo

StickyLayoutDemo

2017-04-08

Android中RecyclerView的item运用覆盖view的方法实现item的动画效果1

item实现item的动画效果,item实现item的动画效果item实现item的动画效果item实现item的动画效果item实现item的动画效果item实现item的动画效果item实现item的动画效果item实现item的动画效果item实现item的动画效果

2017-04-04

Android中RecyclerView的item运用覆盖view的方法实现item的动画效果

Android中RecyclerView的item运用覆盖view的方法实现item的动画效果,Android中RecyclerView的item运用覆盖view的方法实现item的动画效果

2017-04-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除