首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    播放视频时如何在视频帧上添加水印

    有同学可能会说了,我直接用TextureView渲染视频画面,然后在TextureView上盖一层ImageView可以吗? 好像显示效果上没有什么问题,但是仔细分析还是不能满足要求?...ImageView无法实现截图的功能 3.ImageView盖在TextureView,会拦截TextureView的事件,造成播放器交互方面的问题。...上面三个问题表示TextureView上面盖一层ImageView的方式是行不通的。 既然行不通,有没有方法可以解决这个问题?...接口,拥有SurfaceView的全部特性,也有view所有的功能和属性,特别是处理事件的能力,它主要是在SurfaceView的基础上它加入了EGL的管理,并自带了一个GLThread绘制线程(EGLContext...创建GL环境所在线程即为GL线程),绘制的工作直接通过OpenGL在绘制线程进行,不会阻塞主线程,绘制的结果输出到SurfaceView所提供的Surface上,这使得GLSurfaceView也拥有了

    3.1K00

    高级 UI 成长之路 (一) View的基础知识你必须知道

    , 其中 x 和 y 是 View 左上角的坐标,而 translationX 和 translationY 是 View 左上角相对于父容器的偏移量。...这几个参数的换算关系如下所示: val x = left + translationX val y = top + translationY 需要注意的是,View 在平移过程中,top 和 left...表示的是原始左上角的位置信息,其值并不会发生改变,此时发生改变的是 x 、y、translationX 、translationY 这四个参数。...**TouchSlop** TouchSlop 官方解释就是系统所能识别的被认为是滑动的最小距离,通俗点说就是当手指在屏幕上滑动时,如果两次滑动之间的距离小于这个常量,那么系统就认为你没有在滑动,可以通过下面的...的 API 简单明了,我们可以记住一个套路。

    83410

    使用 PreviewView 来展示相机预览

    显示相机预览内容是每个相机类应用都会包含的功能,想要完美实现这个却并非易事。原因是,在某些特别极端情况下 camera2 API 的使用会变得很复杂,而且在不同设备上的行为还会有所不同。...还好,Jetpack CameraX 库的 PreviewView 可以帮助您解决这一问题。通过在各种 Android 设备上提供开发者友好、一致且稳定的 API,使得展示相机的预览变得不再困难。...下面的示例展示了如何使用触摸监听器 (touch listener) 在 PreviewView 上实现轻点对焦功能: fun onTouch(x: Float, y: Float) { //...Android 设备上提供一致的相机处理行为,这要归功于 CameraX 在自动化测试实验室中对 PreviewView 及其其他 API 上进行的投资。...) 的实现,但是在需要的时候会转而使用 TextureView; 将诸如 ImageCapture 和 ImageAnalysis 这样的用例绑定到 LifecycleOwner 上,创建一个 surfaceProvider

    2.8K20

    使用 PreviewView 来展示相机预览

    原因是,在某些特别极端情况下 camera2 API 的使用会变得很复杂,而且在不同设备上的行为还会有所不同。...还好,Jetpack CameraX 库 的 PreviewView 可以帮助您解决这一问题。通过在各种 Android 设备上提供开发者友好、一致且稳定的 API,使得展示相机的预览变得不再困难。...下面的示例展示了如何使用 触摸监听器 (touch listener) 在 PreviewView 上实现轻点对焦功能: fun onTouch(x: Float, y: Float) { //...Android 设备上提供一致的相机处理行为,这要归功于 CameraX 在 自动化测试实验室 中对 PreviewView 及其其他 API 上进行的投资。...) 的实现,但是在需要的时候会转而使用 TextureView; 将诸如 ImageCapture 和 ImageAnalysis 这样的用例绑定到 LifecycleOwner 上,创建一个 surfaceProvider

    1.7K00

    Android开发艺术笔记 | View的事件体系

    和translationY, x和y是View左上角的坐标, translationX和translationY是View左上角相对于父容器的偏移量。...并且translationX和translationY的默认值是0, View也为它们提供了get/set方法,下面是这几个参数的关系: x=left+translationX y=top+translationY...此时发生改变的是x、y、translationX和translationY这四个参数!!! MotionEvent和TouchSlop 1....TouchSlop 概念:系统所能识别出的被认为是滑动的最小距离, 即当手指在屏幕上滑动时,如果两次滑动之间的距离小于这个常量, 那么系统就不认为你是在进行滑动操作。...建议, 如果只是监听滑动相关的,建议自己在onTouchEvent中实现, 如果要监听双击这种行为的话,那么就使用GestureDetector。

    67130

    初识属性动画——使用Animator创建动画

    与ViewAnimation的区别 ViewAnimation只支持几种动画:scale、transition、rotate、alpha四种类型。并且缺陷是只是改变了显示位置,实际位置并没有改变。...Hello按钮使用ViewAnimation进行移动,点击事件在移动后,但是响应还在最初的位置;而属性动画移动的World按钮则不同,响应是跟着按钮走的。...:可以指定多久刷新一帧动画,默认值是每10s刷新一帧,但实际上的值还是要依赖于系统的实际运行情况。...每一帧,经过这么计算,就是属性动画的原理。 关于API 主要是ValueAnimator,ObjectAnimator,AnimatorSet,类结构图如下所示: ?...使用 Animator和Animation一样,既可以代码实现,也可以在xml中定义,下面分别说明两种方式分别是如何操作的。

    73120

    Android平台如何采集摄像头数据并实现低延迟RTMP推送

    企业监控:在企业办公场所、生产车间等区域安装 Android 摄像头设备,利用 RTMP 推流技术将监控画面实时推送到管理中心或相关负责人的终端设备上,方便企业进行远程管理和监控,及时发现问题并采取措施...性能更优更高的帧率和更低的延迟:Camera2 API 在处理图像数据时具有更高的效率,能够支持更高的帧率采集,从而可以实现更流畅的视频录制和实时预览。...同时,它的延迟也相对较低,使得拍摄的画面能够更及时地显示在屏幕上,对于需要实时反馈的场景,如视频通话、直播等非常关键,可以提供更好的用户体验。...向后兼容性:虽然 Camera2 是在 Android 5.0(API 21)及以上版本引入的,但它在设计上考虑了向后兼容性。...在较新的 Android 版本中,Camera2 不断得到优化和完善,同时也能够在一定程度上兼容旧版本的特性和功能,使得开发者可以在不同版本的 Android 设备上使用相对统一的开发方式,提高了应用的兼容性和可维护性

    16210

    【Android 应用开发】Android 组件 位置坐标 属性 ( 组件位置属性 | 父容器坐标系坐标 | 窗口坐标系坐标 | 屏幕坐标系坐标 | 触摸坐标 )

    ② top 属性 : 组件的顶部 y 轴坐标 , 值为顶部距离父容器顶部的高度 , 本组件左上角顶点 , 在父容器坐标系的 y 值 ; ③ right 属性 : 组件的右侧 x 轴坐标 ,...值为右侧距离父容器左侧的长度 , 本组件右下角顶点 , 在父容器坐标系的 x 值 ; ④ bottom 属性 : 组件的底部 y 轴坐标 , 值为底部距离父容器顶部的长度 , 本组件右下角顶点..., 在父容器坐标系的 y 值 ; III ....View 组件的 x , y , translationX , translationY 属性 ---- 1 ....View 坐标获取 0 的解决方案 ---- 1 . 问题描述 : 在获取组件 位置 , 宽高 时 , 经常遇到获取组件的值为 0 的情况 , 这是因为该组件还没有绘制完成 ; 2 .

    4K10

    Android 图形架构

    如果没有SurfaceView,当应用需要使用如GL context(OpenGL ES context)或media decoder(Camera API)这类external buffer source...GLES可以通过把TextureView中的SurfaceTexture传给创建EGL的调用来在TextureView上渲染。...在 API 24 及更高版本中,建议使用SurfaceView而不是TextureView。 两者功能类似并且都是 view hierarchy 中的一员。但是,它们实现方法不一样。...但TextureView在某些功能的实现上比SurfaceView要简单,比如缩放功能的实现:缩放SurfaceView需要FrameLayout的自定义实现,WindowManager需要告诉SurfaceFlinger...你可以在一个并不由Surface支持的EGLSurface上绘图,你也可以在没有EGL的情况下使用Surface。EGLSurface仅仅为GLES提供一个绘图的地方。

    2.3K32

    小窗播放视频的原理和实现(下)

    — 责任编辑 junyihan 回顾上篇小窗播放视频的原理和实现(上),SurfaceView在它所在的位置上创建一个新的Window,Window创建一个独立的Surface,显示内容渲染在独立的Surface...这使得SurfaceView的绘制可以在单独的线程中进行,从而可以绘制复杂的内容。由于SurfaceView的内容没有显示在宿主窗口中, 这样它的显示需要同步宿主窗口的变化。...1、Android L设备上的动画对比 1.gif 2.gif 在Android L的设备上,SurfaceView在执行移动、缩放动画时,有黑边;旋转动画时,它的画面不会跟随旋转,有黑边;执行透明动画时...2、Android N设备上的动画对比 3.gif 5.gif 在Android N的设备上,SurfaceView在执行移动和缩放动画时,没有黑边;执行旋转动画时,它的画面没有跟随旋转;执行透明动画时...3、Android N设备上的滑动对比 7.gif 8.gif 在Android N的设备上,执行滑动和缩放操作时,SurfaceView有黑边,TextureView没有黑边。

    4.6K110

    ConstraintLayout2.0一篇写不完之约束到底写在哪

    Sectioned Constraints 前面说了,在Scene的ConstraintSet中,你需要对每个发生变化的元素创建Constraint,而且一旦你创建了这个元素的Constraint,那么...Layout中的这个元素的所有约束都将失效,例如你修改了width,即使height没有修改,也需要重写。...Constraint位于ConstraintSet标签内部,用于描述当前的约束行为,你可以把它当作是一个简化的ConstraintLayout,可以在其内部创建约束,但更好的做法是通过layout、motion...Transform相关的状态变更,例如rotation、translationX等 PropertySet:这里你可以修改View的属性,例如Visibility Motion:这里你可以修改跟MotionLayout...All the view transform API such as android:rotation.

    80020

    HenCoder Android 自定义 View 1-6:属性动画(上手篇)

    Transition 这个词的本意是转换,在 Android 里指的是切换界面时的动画效果,这个在逻辑上要复杂一点,不过它的重点是在于切换而不是动画,所以它也不是这次要讨论的内容。...BounceInterpolator 在目标值处弹跳。有点像玻璃球掉在地板上的效果。 ? 耍花样 +1。...有一段时间完成度没有对应的动画完成度,即动画出现「中断」——程序 FC 除了上面的这些,Android 5.0 (API 21)引入了三个新的 Interpolator 模型,并把它们加入了 support...实际上,这点区别,在实际应用中用户根本察觉不出来。...withEndAction() 设置的回调只有在动画正常结束时才会被调用,而在动画被取消时不会被执行。这点和 AnimatorListener.onAnimationEnd() 的行为是不一致的。

    85220

    Google Jetpack 新组件 CameraX 介绍与实践

    ,具体地址如下: https://github.com/glumes/camera 官方并没有提到 CameraX 库具体如何进行 OpenGL 线程渲染的, 继续往下看,你会找到答案的~~~ 关于 CameraX...Camera 模型及 API 接口演变 https://glumes.com/post/android/android-camrea-api-evolution/ 对于一个简单能用的 Camera...而预览的图像最终要呈现到 Android 的 Surface 上,因此选择分辨率的时候要考虑 Surface 的宽高比例,不要出现比例不匹配导致图像拉伸的现象。...21 cameraTextureView.setTransform(matrix) 22} TextureView 旋转的设置同样在 OnPreviewOutputUpdateListener...然后再把这纹理 ID 绘制到 OpenGL 对应的 Surface 上,这可以看成是两个不同的线程在允许,一个 Camera 预览线程,一个 OpenGL 绘制线程。

    2K20

    Camera development experience on Android

    因为TextureView是从Android 4.0(API level 14)开始才有的(TexturView算是SurfaceView的一个增强版),所以在Android 4.0之后使用的是TextureViewPreview...CameraViewImpl是用来实现相机开启、设置相机参数以及实现各种相机功能的核心类,根据API level的不同分为三个实现子类,Camera1、Camera2和Camera2Api23,其中Camera2...是为Android 5.0(API level 21)及以上系统提供的,Camera2Api23继承自Camera2,是为Android 6.0(API level 23)及以上系统提供的。...相机权限 众所周知,从Android 6.0开始,Android系统引入了动态权限的机制,所以如果你的应用的targetSDK设置在23及以上的话,你需要在运行的时候检查相机权限是否授予了,如果没有授予的话就要申请...很显然,三星内置的相册(或者文件管理)在显示图片的时候会考虑图片的EXIF信息,实际上这图是横着的,结果显示给你看的时候这图旋转回来了,变成了竖着的。那怎么办呢?

    1.3K30
    领券