首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android开发使用自定义View将圆角矩形绘制Canvas的方法

本文实例讲述了Android开发使用自定义View将圆角矩形绘制Canvas的方法。...具体如下: 前几天,公司一个项目中,头像图片需要添加圆角,这样UI效果会更好看,于是写了一个小的demo进行圆角的定义,该处主要是使用BitmapShader进行了渲染(如果要将一张图片裁剪成椭圆或圆形显示屏幕...MIRROR:使用镜像方式 REPEAT:使用重复方式 2、通过Paint的setShader(bitmapShafer)来设置画笔 3、使用已经setShader(bitmapShafer)的画笔来绘制图形...下面展示绘制圆角图片的demo 1、自定义RounderCornerImageView.java类 package com.example.test; import android.content.Context...view进行位置进行测量和重写布局,则需要重写onMeasure()、onLayout()、onDraw()方法 onMeasure():view本身大小多少,可以测量出来 onLayout():viewViewGroup

2.3K30

音视频直播技术--视频的渲染与展示

解码;5.渲染与展示。 今天讲的就是渲染与展示。 说到展示部分就不得不说 View。View 表示屏幕的一块矩形区域,负责绘制这个区域和事件处理。...Surfaceview 提供了一个可见区域,只有在这个可见区域内的Surface部分内容才可见,可见区域外的部分不可见。 传统的View共享一块屏幕缓冲区,所有的绘制必须在UI线程中进行。...SurfaceHolder 它是 Surface 的抽象接口,它使你可以控制Surface的大小和格式,以及Surface编辑像素和监视Surace的改变。...Surfaceview的核心在于提供了两个线程:UI线程和渲染线程。UI线程用于绘制,渲染线程用于纹理的计算。...它的加入是为了解决SurfaceView渲染线程要单独写开发难度大这个问题而引入的。 SurfaceView 的基础,它加入了EGL的管理,并自带了渲染线程。

1.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

【Android FFMPEG 开发】FFMPEG ANativeWindow 原生绘制 ( Java 层获取 Surface | 传递画布到本地 | 创建 ANativeWindow )

: 参考博客 【Android FFMPEG 开发】FFMPEG 获取编解码器 ( 获取编解码参数 | 查找编解码器 | 获取编解码器上下文 | 设置上下文参数 | 打开编解码器 ) ④ FFMPEG...FFMPEG 原生绘制流程 ---- FFMPEG 解码 AVPacket 数据到 AVFrame 流程 : 〇 前置操作 : FFMPEG 环境初始化 , 获取 AVStream 音视频流 , 获取...; ① Java 层获取 Surface 对象 : Surface 画布可以 SurfaceView 的 SurfaceHolder 中获取 //绘制图像的 SurfaceView SurfaceView...surfaceView; // SurfaceView 回调函数中获取 SurfaceHolder surfaceHolder = surfaceView.getHolder() ; //获取...原生绘制需求 : Native 层使用 C/C++ 进行原生绘制需要将 Surface 画布传递到 Native 层进行绘制 ; 2 .

73010

音视频全链路技能分析之音视频消费侧技能树

当然我们要相信MediaCodec进步,发展。 4.音视频同步 从上面的流程分析来看,我们分离出音频流和视频流,就要分别起线程去解码音频和解码视频。...SurfaceViewSurfaceView可以一个独立的线程中进行绘制,不会影响主线程,使用双缓冲机制,播放视频时画面更流畅。...,当使用lockCanvas()获取画布时,得到的实际是backCanvas而不是正在显示的frontCanvas,之后你获取到backCanvas绘制新视图,再unlockCanvasAndPost...例如,如果你已经先后两次绘制了视图A和B,那么你再调用lockCanvas()获取视图,获得的将是A而不是正在显示的B,之后你将重绘的C视图上传,那么C将取代B作为新的frontCanvas显示SurfaceView...SurfaceView TextureView 内存 低 高 绘制 及时 1~3帧延时 耗电 低 高 动画和截图 不支持 支持 播放器播放视频应该怎么选择?

1.5K30

《Android游戏编程之从零开始》笔记「建议收藏」

刷新画布 第一种 每次绘图之前,绘制一个等同于屏幕大小的图形覆盖画布。...(Color.BLACK); 第三种 每次绘图之前,指定RGB来填充画布 canvas.drawRGB(0,0,0); 第四种 每次绘图之前,绘制一张等同于屏幕大小的图片覆盖画布...碰撞检测 a、矩形碰撞,利用两个矩形之间的位置进行判断,如果一个矩形的像素另外一个矩形之中,或者之上,就可以认为这两个矩形发生了碰撞。 b。...多矩形碰撞 多个矩形碰撞区域 e。Region碰撞 判断一个点是否矩形区域内。...第二种:触点位置大圆外,小圆中心大圆的圆周,但小圆所在大圆的角度,应该等同于用户触点位置相对于大圆的角度。

1.2K21

OpenGL ES 与 GLSurfaceView 渲染视频帧

在上篇文章 OpenGL ES for Android 世界 中我们已经对 OpenGL ES 有了大致的了解,本篇文章中我们将使用 OpengGL ES 将解码后的视频进行播放。...GLSurfaceView 才是我们今天的重点,在上篇 《OpenGL ES for Android 世界》文章中,我们已经对 GLSurfaceView 有了初步的介绍,你可能还记得我们利用 GLSurfaceView 屏幕绘制了一个三角形...GLSurfaceView 是对 SurfaceView 的扩展,不仅添加了 EGL 管理,而且为我们创建了一个 Renderer 线程,SurfaceView 的设计允许我们主线程外执行渲染操作,而...GLSurfaceView 继承自 SurfaceView,并在内部创建了一个 GLThread,你的所有绘制任务,都将在 GLThread 线程中执行。...方法中将 Texture 绘制到屏幕

2.3K00

Android 使用Canvas图片绘制文字的方法

实际发现,最后绘制的效果与手机硬件也有些关系,比如前面的绘图测试程序....一个小应用,图片绘制文字,以下是绘制文字的方法,并且能够实现自动换行,字体自动适配屏幕大小 private void drawNewBitmap(ImageView imageView, String...photoPaint.setFilterBitmap(true); Rect src = new Rect(0, 0, photo.getWidth(), photo.getHeight());// 创建一个指定的新矩形的坐标...Rect dst = new Rect(0, 0, width, hight);// 创建一个指定的新矩形的坐标 canvas.drawBitmap(photo, src, dst, photoPaint...canvas.translate(start_x, start_y); staticLayout.draw(canvas); } 以上这篇Android 使用Canvas图片绘制文字的方法就是小编分享给大家的全部内容了

4.3K20

【Android FFMPEG 开发】FFMPEG ANativeWindow 原生绘制 ( 设置 ANativeWindow 缓冲区属性 | 获取绘制缓冲区 | 填充数据到缓冲区 | 启动绘制 )

原生绘制 准备工作 , 然后才能进行下面的操作 ; ① Java 层获取 Surface 对象 ( 一篇博客讲解 ) : Surface 画布可以 SurfaceView 的 SurfaceHolder...中获取 //绘制图像的 SurfaceView SurfaceView surfaceView; // SurfaceView 回调函数中获取 SurfaceHolder surfaceHolder...对象传递到 Native 层 ( 一篇博客讲解 ) : SurfaceHolder.Callback 接口的 surfaceChanged 实现方法中 , 将 Surface 画布传递给 Native...native_set_surface(Surface surface); ③ 创建 ANativeWindow ( 一篇博客讲解 ) : Native 层的 C++ 代码中 , 接收 Surface...绘制窗口属性设置 : 绘制图像之前 , 首先要设置绘制的 宽度 , 高度 , 绘制像素格式 ( ARGB ) , 调用 ANativeWindow_setBuffersGeometry ( ) 方法

86810

android视频系列:视频解码篇--android视频播放的实现

解码方面,它支持常用的解码控制操作,如start(), pause(), resume(), seek(), seekTo()等。...看看它的内部实现,我们发现,解码使用了MediaPlayer,显示使用了SurfaceView。 那么,自己直接用SurfaceView和MediaPlayer,要怎么做? 2....MediaPlayer有节奏地往Surface输入解码数据,SurfaceView会相应有节奏把Surface里的数据显示到屏幕。 这种实现方式,解码和显示分别在两个对象中,可以分别控制。...使用MediaPlayer和GLSurfaceView播放视频 GLSurfaceView继承自SurfaceView,它实现了把opengl的渲染结果,绘制到给定的Surface里,进而可以显示屏幕...至此,opengl拿到了解码的图像数据后,就可以自如的做任何图像相关的处理,渲染到屏幕。 总结 以上Android实现的三种播放视频方法,从简单到复杂,可以根据自己功能的需要,灵活进行选择。

3.9K131

给Android工程师的音视频开发学习指南

美颜的整个过程无非是根据 Camera 预览的纹理通过 OpenGL 中 FBO 技术生成一个新的纹理,然后 Renderer 中的onDrawFrame() 使用新的纹理进行绘制。...添加水印也就是先将一张图片转换为纹理,然后利用 OpenGL 进行绘制。...添加动态挂件特效则比较复杂,先要根据当前的预览图片进行算法分析识别人脸部相应部位,然后各个相应部位绘制相应的图像,整个过程的实现有一定的难度,人脸识别技术目前有 OpenCV、Dlib、MTCNN...经过 x264 库的处理以后就将原始的图像转换成为 h264 格式的视频。...使用 Surface 的时候,通常不能直接访问原始视频数据,但是可以使用ImageReader 类来访问不可靠的解码后 (或原始) 的视频帧。

1.2K40

Android播放端绘制-SurfaceView还是GLSurfaceView

我们使用SurfaceView其实最终都是获取到这个Surface去绘制,可参看官方解释: Provides a dedicated drawing surface embedded inside of...GLSurfaceView GLSurfaceView继承自SurfaceView,对SurfaceView又做了一次封装,方便我们安卓中使用OpenGL。...GLSurfaceView提供了以下特性: 提供并且管理一个独立的Surface; 提供并且管理一个EGL display,它能让opengl把内容渲染到上述的Surface; 支持用户自定义渲染器(...)两种模式; GPU加速:GLSurfaceView的效率是SurfaceView的30倍以上,SurfaceView使用画布进行绘制,GLSurfaceView利用GPU加速提高了绘制效率; View...总结 除了上述区别外,SurfaceView通用性更好,GLSurfaceView渲染更细腻,如果想让普通的SurfaceView渲染效果更好,可以加抗锯齿效果,不过抗锯齿效果会有一定的性能消耗,硬解码设置

1.5K20

Carson带你学Android:自定义View Canvas类使用教程

简介 定义:画布,是一种绘制时的规则 是安卓平台2D图形绘制的基础 作用:规定绘制内容时的规则 & 内容 记住:绘制内容是根据画布的规定绘制屏幕的 理解为:画布只是绘制时的规则,但内容实际绘制屏幕的...Canvas的本质 请务必记住: 绘制内容是根据画布(Canvas)的规定绘制屏幕的 画布(Canvas)只是绘制时的规则,但内容实际绘制屏幕的 为了更好地说明绘制内容的本质和Canvas,...总结 绘制内容是根据画布的规定绘制屏幕的 内容实际绘制屏幕; 画布,即Canvas,只是规定了绘制内容时的规则; 内容的位置由坐标决定,而坐标是相对于画布而言的 注:关于对画布的操作(缩放...,圆角矩形多了两个参数rx 和 ry 圆角矩形的角是椭圆的圆弧,rx 和 ry实际是椭圆的两个半径,如下图: 特别注意:当 rx大于宽度的一半, ry大于高度一半 时,画出来的为椭圆 实际rx...绘制椭圆 原理:矩形的对角线顶点确定矩形,根据传入矩形的长宽作为长轴和短轴画椭圆 椭圆传入的参数和矩形是一样的; 绘制椭圆实际绘制一个矩形的内切图形。

2.2K10

Android平台下使用FFmpeg进行RTMP推流(摄像头推流)

同时项目工程也是之前的代码基础新增功能。源码仓库地址FFmpegSample,这一节对应的代码版本是v1.2。大家注意不要下载错了版本。主要涉及的代码。 ?...等到我们越来越熟悉FFmpeg和一些技术,那么之前的问题都会迎刃而解 这套代码我4.4.2运行时没问题的。所以如果有同学5.0以上,如果涉及动态权限问题,大家加上即可。...与Camera关联 因为我们要讲图像预览到SurfaceView,那么必定有地方存在关联。...这里我们使用H264进行视频编码。...到这里只是完成的编码工作,接下来还有一些参数需要设置 PTS、DTS、duration PTS是显示时间戳,DTS解码时间戳,duration是当当前帧和下一帧的时间间隔,。

5.7K51

走进SurfaceView

但只锁定dirty所指定的矩形区域,因此效率更高。...而SurfaceHolder.Callback是SurfaceHolder内部的静态子接口 06 — SurfaceView的优缺点 1、优点: 可以一个独立的线程中进行界面绘制,不会影响主线程,...,backCanvas存储的是一次更改前的视图,当使用lockCanvas()获取画布时,得到的实际是backCanvas而不是正在显示的frontCanvas,之后你获取到的backCanvas...绘制新视图,再unlockCanvasAndPost(canvas)此视图,那么上传的这张canvas将替换原来的frontCanvas作为新的frontCanvas,原来的frontCanvas将切换到后台作为...例如,如果你已经先后两次绘制了视图A和B,那么你再调用lockCanvas()获取视图,获得的将是A而不是正在显示的B,之后你将重绘的C视图上传,那么C将取代B作为新的frontCanvas显示SurfaceView

1.3K20

Android实现动态体温计

实现内容: 从文件中读取体温数据,动态绘制体温的效果。即体温数据随时间不停的变化。体温计绘制效果为立体效果。 ? 实现原理: 1、体温计的绘制 ?...绘制原理: 体温计的大体框架由图1,2,4,5,6,7构成,绘制通过自定义View,DrawView的onDraw()方法来实现,体温计水银柱的的绘制通过SurfaceView来实现。...动态刷新原理:将从文件中的体温数据读取,存储到数组当中,绘制体温时,根据数据来确定中间红色水银柱的坐标,其实,也就是动态矩形绘制,采用定时绘制的方法实现动态效果。...原理说的差不多了,我们来看下代码实现过程: 布局文件:textView用来显示数值,surfaceView用来绘制动态矩形。 temp.xml <?...// canvas.drawRect(x0+10, y, x1-10, y1, nPaint); //绘制光晕,圆角矩形 Paint paint = new Paint(); paint.setColor

40720

Canvas类的最全面详解 - 自定义View应用系列

简介 定义:画布,是一种绘制时的规则 是安卓平台2D图形绘制的基础 作用:规定绘制内容时的规则 & 内容 1. 记住:绘制内容是根据画布的规定绘制屏幕的 2....理解为:画布只是绘制时的规则,但内容实际绘制屏幕的 ---- 2....Canvas的本质 请务必记住: 绘制内容是根据画布(Canvas)的规定绘制屏幕的 画布(Canvas)只是绘制时的规则,但内容实际绘制屏幕的 为了更好地说明绘制内容的本质和Canvas,...总结 绘制内容是根据画布的规定绘制屏幕的 内容实际绘制屏幕; 画布,即Canvas,只是规定了绘制内容时的规则; 内容的位置由坐标决定,而坐标是相对于画布而言的 注...绘制椭圆 原理:矩形的对角线顶点确定矩形,根据传入矩形的长宽作为长轴和短轴画椭圆 椭圆传入的参数和矩形是一样的; 绘制椭圆实际绘制一个矩形的内切图形。

2.9K81
领券