当前位置: 首页 > news >正文

网站主机名现场直播的视频

网站主机名,现场直播的视频,石家庄网站推广排名,网站建设代理平台 涉及主控: RK3566 Android: 11/13 问题 在使用GLSurfaceView播放视频的过程中, 增加了一个播放控制面板, 覆盖在视频上方. 默认隐藏setVisibility(View.INVISIBLE);点击屏幕再显示出来. 然而, 在RK3566上这个简单的功能却无法正常工作. 通过缩小视频窗口可以看到, 实际…

在这里插入图片描述

平台

涉及主控: RK3566
Android: 11/13

问题

在使用GLSurfaceView播放视频的过程中, 增加了一个播放控制面板, 覆盖在视频上方. 默认隐藏setVisibility(View.INVISIBLE);点击屏幕再显示出来. 然而, 在RK3566上这个简单的功能却无法正常工作. 通过缩小视频窗口可以看到, 实际UI是已经展示, 但是被GLSurfaceView 覆盖了.

在Pixel Android 13 上不存在这个问题

在这里插入图片描述
如上图 红色 框选区域, 显示不出来.

分析

后续测试发现问题复现需要2个条件:

  1. 覆盖层默认布局设置了隐藏: android:visibility="invisible"
  2. 布局中使用了SurfaceView / GLSurfaceView

参考代码:

布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/black"android:id="@+id/rlRoot"><RelativeLayout android:id="@+id/rlScreen"android:layout_width="match_parent"android:layout_height="match_parent"/><RelativeLayout android:id="@+id/rlMenu"android:layout_width="480dp"android:layout_height="320dp"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="100dp"android:visibility="invisible"android:background="@drawable/selector_beauty_window_bg"><TextViewandroid:text="Overlay Menu"android:layout_centerInParent="true"android:layout_width="wrap_content"android:layout_height="wrap_content"/></RelativeLayout>
</RelativeLayout>

Activity文件


import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceView;
import android.view.TextureView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;import com.ansondroider.acore.BaseActivity;
import com.ansondroider.acore.media.VideoPlayer;
import com.ansondroider.apitester.gl.GLVideoView;import java.io.IOException;public class GlMenuOverlay extends BaseActivity {MediaPlayer mmp;GLVideoView glView;RelativeLayout rlScreen;RelativeLayout rlMenu;boolean playVideo = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test_gl_menu_overlay);findViewById(R.id.rlRoot).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {showOrHideMenu();}});rlScreen = (RelativeLayout) findViewById(R.id.rlScreen);rlMenu = (RelativeLayout) findViewById(R.id.rlMenu);RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);if(playVideo) {glView = new GLVideoView(this);rlScreen.addView(glView, lp);}/*ImageView iv = new ImageView(this);iv.setImageResource(R.mipmap.ic_launcher);iv.setScaleType(ImageView.ScaleType.FIT_XY);RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);rlScreen.addView(iv, lp);*/VideoPlayer player = new VideoPlayer();SurfaceView texture = new SurfaceView(this);rlScreen.addView(texture, lp);player.setDisplay(texture);player.setDataSource("/sdcard/Movies/10012271.mp4");player.play();}void showOrHideMenu(){Log.d(TAG, "showOrHideMenu");rlMenu.setVisibility(rlMenu.getVisibility() == View.VISIBLE ? View.INVISIBLE : View.VISIBLE);}@Overrideprotected void onStart() {super.onStart();if(playVideo) {mmp = new MediaPlayer();try {mmp.setDataSource("/sdcard/Movies/10012271.mp4");mmp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mediaPlayer) {glView.onVideoPrepared(mediaPlayer);}});mmp.prepare();mmp.setLooping(true);} catch (IOException e) {e.printStackTrace();}}}@Overrideprotected void onStop() {super.onStop();if(mmp != null){mmp.stop();mmp.release();}}
}

解决

在需要展示覆盖层的时候调用一次requestLayout, 比如:

    void showOrHideMenu(){Log.d(TAG, "showOrHideMenu");rlMenu.setVisibility(rlMenu.getVisibility() == View.VISIBLE ? View.INVISIBLE : View.VISIBLE);////((RelativeLayout)findViewById(R.id.rlRoot)).requestLayout();rlMenu.requestLayout();}

调用父容器 rlRootrlMenu本身requestLayout 都可以

在这里插入图片描述

参考

在这里插入图片描述
Android自定义GLSurfaceView
SurfaceView、GLSurfaceView、SurfaceTexture、TextureView简单对比

http://www.tj-hxxt.cn/news/102175.html

相关文章:

  • 杭州市城乡建设委员会的网站武汉推广服务
  • 网站建设总体目标电商网站开发平台有哪些
  • 为该网站做自适应长春seo排名收费
  • 网站做推广有用杭州网络优化公司排名
  • wordpress嵌入代码深圳seo优化排名公司
  • 做网站人家直接百度能搜到的北京疫情最新消息
  • 贵州国龙翔建设有限公司网站ip切换工具
  • 建设局网站作用搜索引擎优化的目的是对用户友好
  • 动态网站开发相关技术网站的网站建设
  • 网站开发开票税率鹤壁seo推广
  • 谷歌生成在线网站地图搜索网站排名优化
  • 视频网站开发报告网站优化排名提升
  • html论坛网站模板百度竞价价格查询
  • h5网站还有哪些长沙官网网站推广优化
  • 济南网站建设求职怎样在百度上发布信息
  • 网站建设如何记账亚马逊的免费网站
  • 专业网站设计报价网站优化员seo招聘
  • 帮朋友免费做网站台州百度快照优化公司
  • 做网站改字号代码电商代运营一般收多少服务费
  • 玩转wordpressseo优化推广
  • 网站布局设计自适应百度网盘客服24小时电话人工服务
  • html5素材网站厦门谷歌seo公司
  • 集团网站建设哪家更好软文营销的技巧
  • 做网站的团队业绩怎么写百度竞价系统
  • 防火墙 网站做端口映射兰州seo实战优化
  • 用帝国cms系统怎么做网站网页制作成品模板网站
  • 网站运营推广主要做什么的seo公司网站
  • wordpress 运行时间seo工作流程
  • 网站制作 系统定制惠州百度推广优化排名
  • 中国软件开发公司排行东莞网络排名优化