-
Android代码-安卓任意层级树形菜单
2019-08-07 01:23:01Android任意层级树形菜单 免费视频课程传送门 【点击传送】 作者微博: @安卓攻城师sloop 实现过程: 1.将用户数据转化为node节点 2.设置节点之间的关联关系 3.排序 4.过滤需要显示的数据 涉及到的知识: 1.树形... -
安卓video层级怎么解决
2017-06-08 09:08:17 -
安卓动态控制叠放层级.zip
2019-09-19 14:43:06Android 将两个控件的内容互换,动态改变控件的层级(叠放层次) -
安卓系统video视频层级问题
2019-01-21 10:52:36在移动端网页含有video的时候,video的时候的层级总是最高的,现阶段ios系统已经解决了这个问题;但安卓系统总会出现:视频播放时,如果出现弹出层;弹出层就会被视频覆盖,相当别扭; 目前可想到的解决方案是: ...在移动端网页含有video的时候,video的时候的层级总是最高的,现阶段ios系统已经解决了这个问题;但安卓系统总会出现:视频播放时,如果出现弹出层;弹出层就会被视频覆盖,相当别扭;
目前可想到的解决方案是:
在弹出层时;用canvar作图来代替视频当前位置:
var video = document.getElementsById('video'); var canvas = document.getElementById('canvas'); var w = video.offsetWidth; var h = video.offsetHeight; canvas.width = w; canvas.height = h; video.pause(); var ctx = canvas.getContext('2d'); ctx.drawImage(video,0,0,w,h);
并隐藏video元素。
这里说明下隐藏video是最好不要用“display:none”而是设定width = 0,height = 0来代替隐藏;
-
在安卓上使用picker的层级还是比modal层级低,看到安卓上的源码注释掉了
2020-11-30 10:49:49<div><p>该提问来源于开源项目:beefe/react-native-picker</p></div> -
video 微信 标签层级过高_大事记 - 安卓微信浏览器 video 标签层级过高
2020-12-18 21:07:39大事记 - 安卓微信浏览器 video 标签层级过高// 为什么叫《大事记》?// 以前总有面试官问这样一个问题:"你在项目中遇到过最头疼的问题是什么, 是怎么解决的?"// 当时总觉得, 已解决的问题都算不上头疼, 所以回答总是...大事记 - 安卓微信浏览器 video 标签层级过高
// 为什么叫《大事记》?
// 以前总有面试官问这样一个问题:"你在项目中遇到过最头疼的问题是什么, 是怎么解决的?"
// 当时总觉得, 已解决的问题都算不上头疼, 所以回答总是不尽人意.
// 最近遇到微信端的这个问题, 非常让人头疼, 正好有小伙伴和我聊到面试经验, 灵机一动,《大事记》由此而生
问题描述:
在安卓系统的微信浏览器里面, 标签触发了 play() 事件, 即开始播放之后
标签的层级会变成 MAX 级别, 无论如何设置 z-index, 都会遮挡别的脱离文档流的元素
分析原因:
微信的 X5 内核为了统一 在不同的手机上的呈现形式, 对 进行了改造
这样的改造在 iOS 系统上一切正常, 但在安卓系统就会有各种问题, 比如这里的层级太高
解决方案:
当测试的同事将这个 bug 提给我的时候, 我根本没想到, 我即将面对一场苦不堪言的角斗
第一回合: 隐藏 video
最初暴露的问题并不是页面底部的按钮, 而是一个弹窗
在了解了问题的原因之后, 我当时的思路是:
打开弹窗的时候, 将 标签隐藏掉, 关闭弹窗的时候再显示
隐藏标签的方法有很多: display:none; visibility: hidden; z-index: -1; left: -9999px; opacity: 0;
但 display:none 没有占位, visibility 和 z-index 不起作用, opacity 虽然不显示元素, 但依旧点不到下面的元素
所以只有用定位的办法了lettag=document.createElement('style')
tag.id=id
tag.innerhtml=`video { position: relative; left: -9999; }`
body.appendChild(tag)
在打开弹窗的时候, 通过上面的代码添加一个带有特殊 id 的
为了防止多级弹窗的时候重复创建
想通了这一系列逻辑之后, 我猛然发现, 页面底部的按钮也会被遮挡!
第二回合: 跳转到单独页面播放
深思熟虑之后, 我得出结论: 遮挡问题无解
但问题还是要解决, 于是我向 PM 提出, 单独写一个播放页面, 点击 的时候跳转到这个页面进行播放
经过一番唇枪舌剑的交锋, PM 妥协了, 但要求尽量优化体验, 打开的播放页看起来要像全屏播放一样
"这都不是事儿!" 我如是回道
播放页面确实不是事儿, 可 真不是省油的灯
我原本想的是, 全局添加一个 addEventListener('click'), 如果点击的是 标签, 就保存视频信息, 并跳转到播放页面document.addEventListener('click',(e)=>{
lettarget=e.target
if(target.nodeName.toUpperCase()==='VIDEO'){
this.setVideoUrl({
url:target.src,
poster:target.poster
})
this.$router.push(`/video`)
}
})
这下跳转是没问题了, 但在点击的时候, 实际上还触发了 的 play() 事件
从理论上来说, 已经跳转页面了, 这个 play() 事件并不需要阻止, 但为了逻辑严谨, 我还是做了尝试e.preventdefault()
e.stopPropagation()
e.cancelBubble()
returnfalse
然而这并不能阻止播放事件 play()
那就不阻止了
然后又了新的 Bug: 部分机型从播放返回之后, 是播放的状态, 而且有层级问题
第三回合: 禁用 controls
我重新回到那个问题: 如何阻止播放事件?
稍作挣扎, 我就换了一个思路: 如果没有播放按钮, 那就不需要阻止播放事件了
于是我给 添加了 controls=""
这样就没有播放工具栏, 之后只需要手动添加一个三角形的播放图标, 一切就完美了
页面上的 是作为描述内容的一部分, 包含在一段富文本里面, 从后端返回的
这样一来, 相关的 DOM 节点只能通过 JS 修改, 成本太高, 所以我打算只用 CSS 来解决播放图标的问题
然后我画了一个播放的图标, 给 添加了一个伪元素 :before, 在伪元素里写好了样式, 但毫无作用
原来 并不支持伪元素
"如果无法解决问题, 那就让问题不存在"
我脑海中闪过这段话, 然后有了新的方案:
我又画了一张图, 然后将 的 poster 改成了这张图, 问题解决了!
然后产品小姐姐跑过来: 你对我的视频封面图做了什么?
决战: JS 王道
既然 poster 不能改, 那就只有通过 JS 去操作 DOM, 给 添加一个兄弟节点 作为播放按钮
然后将 和播放按钮一起包在一个容器
中setVideoWrapper(){this.$nextTick(()=>{
letv=document.getElementsByTagName('video')
if(v&&v[0]){
// 产品规定 页面中只会有一个
lettarget=v[0]
// 防止重复创建 wrapper
if(target.parentNode.className==='video-wrapper')return
// 清除 播放工具栏
target.controls=''target.className='video-hack'
// 创建播放按钮
letbtn=document.createElement('i')
btn.className='video-play_btn'
// 创建容器
letwrap=document.createElement('div')
wrap.className='video-wrapper'
wrap.appendChild(btn)
wrap.appendChild(target.cloneNode())
// 插入容器并删除原本的
target.parentNode.insertBefore(wrap,target)
target.parentNode.removeChild(target)
}
})
}
再添加对应的 Less 样式:.video{
&-wrapper{
position:relative;
font-size:0;
}
&-play{
&_btn{
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background:rgba(0,0,0,.1)url('img/url')center/80px80pxno-repeat;
}
}
}
终于, 的问题彻底解决了, 皆大欢喜, 普天同庆
但我还是要吐槽一下, 微信 的问题由来已久, 开发团队也曾经说过要解决, 但最后都不了了之
这大约都是时辰的错
来源: https://www.cnblogs.com/wisewrong/p/10276947.html
-
cocos js 3.9 安卓播放视频层级修改
2018-07-20 19:41:00Cocos2dxVideoHelper.java : private void _createVideoView(int index) { Cocos2dxVideoView videoView = new Cocos2dxVideoView(mActivity,index); sVideoViews.put(index, videoView); ...Cocos2dxVideoHelper.java : private void _createVideoView(int index) { Cocos2dxVideoView videoView = new Cocos2dxVideoView(mActivity,index); sVideoViews.put(index, videoView); FrameLayout.LayoutParams lParams = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); mLayout.addView(videoView, lParams); // videoView.setZOrderOnTop(true); //注释这个 videoView.setOnCompletionListener(videoEventListener); } AppActivity.java : public Cocos2dxGLSurfaceView onCreateView() { Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this); // glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8); glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 8); glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT); return glSurfaceView; } Cocos2dxVideoView.java @Override public boolean onTouchEvent(MotionEvent event) { // if((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP) // { // if (isPlaying()) { // pause(); // } else if(mCurrentState == STATE_PAUSED){ // resume(); // } // } return false; } 然后在游戏中设置背景透明度 cc.director.setClearColor(cc.color(0, 0, 0, 0));
-
安卓不同主题的页面视图层级
2018-04-19 20:09:07两种主题下的页面对比: 两种主题下的页面层级结构对比: -
[安卓开发基础] 层级式导航栏
2019-01-01 22:04:46FriendsActivity : package com.zengjx.androidbaseproject; import android.support.v4.app.NavUtils; import android.support.v7.app.AppCompatActivity; import android.os....import android.wid... -
iOS弹层层级问题
2019-04-22 09:02:00我经常遇到iOS层级不够的情况:即,安卓一切显示正常,但在iOS环境下,就经常遇到fixed定位层级不够的问题(安卓层级在下一层,iOS层级在上一层) 在多次相遇后,我翻找了许多资料,包括z-index的使用,最后发现... -
大事记 - 安卓微信浏览器 video 标签层级过高
2019-01-16 16:53:00// 为什么叫《大事记》? // 以前总有面试官问这样一个问题:“你在项目中遇到过最头疼的问题是什么,是怎么解决的?” // 当时总觉得,已解决的...在安卓系统的微信浏览器里面,<video> 标签触发了 play(... -
关于video元素在移动端,安卓端播放,层级最高的bug解决。100%有用
2020-11-09 11:00:47video元素在安卓端播放视频,层级最高,遮挡弹窗,百度一堆都是说加x5-video-player-type="h5"属性,其实不然,正确的写法是 <div class="video"> <video x5-video-player-type="h5" webkit-... -
腾讯X5内核安卓手机H5视频播放标签层级问题
2020-10-21 21:16:57video标签添加属性: x5-video-player-type="h5-page" https://x5.tencent.com/docs/video.html -
安卓树形控件相关-Android任意层级树形控件无jar版.rar
2019-07-29 17:22:10Android 任意层级 树形控件(无jar版.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。 -
安卓树形控件相关-ListView打造一个任意层级的树形控件.zip
2019-07-29 17:21:23ListView打造一个任意层级的树形控件.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。 -
安卓app开发!不同层级的Android开发者的不同行为,年薪50W
2021-03-08 15:36:14前言 碎碎念:二本渣校,却拿到了字节跳动Offer!我是如何做到的,我把经历写成文章分享给大家,希望对你们能有一些帮助!之前在牛客许愿,后来来了offer就忘记了要发,现在赶紧补上。三次面试是一天内完成的,意向... -
安卓树形控件相关-Android使用ListView实现一个高性能无限层级显示的树形控件.rar
2019-07-29 17:21:56Android使用ListView实现一个高性能无限层级显示的树形控件.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。 -
安卓多个 dialog的层级问题_移动端控件(一)-弹窗(Alert/Dialog)
2021-02-01 17:23:51弹窗视觉层级较高,样式多种多样,通常出现在屏幕正中间,并配以半透明遮罩。 图片来源于网络 弹窗的好处是让用户更聚焦,且不用离开当前页面,更快更容易完成任务;而相对于Toast、Snackbar、Popover等控件,弹窗的... -
研究大佬--video在微信浏览器下的层级过高问题(安卓:小米出现的问题)
2018-10-30 19:05:41设备:iphone7plus,ipad4,iphone5,安卓(小米),微信开发者工具 涉及元素及属性:div, 模态框,display,js 视频格式:mp4 问题:在除安卓设备(小米)以外,其他设备提示弹框正常渲染;安卓(小米)也会被... -
经典Android开发教程!不同层级的Android开发者的不同行为,成功收获美团,小米安卓offer
2021-01-27 16:01:21开头 昨天去面了一家公司,价值观有受到冲击。 面试官技术方面没的说,他可能是个完美主义的人,无论什么事情到了他那里好像都有解决的方案,我被说的无所适从,感觉他很厉害。 但我不能认可的是,面试官觉得加班是... -
安卓开发学习笔记(8)实现层级式导航(实例:实现带向上导航按钮的Action Bar)
2019-11-20 21:18:24开发步骤: 1.布局界面activity_friends.xml并创建FriendsActivity.java 2.判断父Activity是否为空,不为空设置导航图标显示(在FriendsActivity.java中进行编写代码) 3.为FriendsActivity配置父Activity(在... -
提取手机的安卓源码_蓝牙电话之PBAP同步电话簿的安卓实现
2021-01-26 04:51:21本篇文章参考的安卓源码版本:Android 9(P版本),熟悉安卓源码架构的同学应该都清楚蓝牙这一套服务在其中所处的层级关系,由于现有的安卓API接口BluetoothPbapClient还没有集成相应的同步电话簿数据接口,即使是将要... -
安卓通用工具设计
2020-10-27 19:16:11本工具采用分层设计的方式进行设计,有底层封装库、中间件、UI 等层级。工具采用 Python 编码语言进行控制代码编写,底层封装库基于adb 命令,中间件基于Python ,UI 层使用QT 框架进行界面绘制。控制代码具有较强的... -
安卓系统架构理解
2020-02-24 21:34:32安卓系统架构 总共分为五层 ,由下往上依次是 linux,Hal驱动层,C++Native库和Android运行时环境,应用框架层,应用层 虽然框架图各层是静止的 但是其实各个层之间一直在运行,且各个层级相互交流传递信息,某一层... -
安卓开发之性能优化
2021-02-08 15:15:08减少布局文件的层级,这样安卓绘制时的工作量就会减少,程序的性能也会提高。 具体方法包括: 多嵌套情况下可使用RelativeLayout减少嵌套。 布局层级相同的情况下使用LinearLayout,它比RelativeLayo -
安卓应用架构思考
2016-11-13 22:47:56安卓应用架构思考前言:最近在写一个新的安卓应用,想在这个应用中尝试新的技术栈。由于平时工作原因,对各类技术框架也有一定的了解与比较,所以选库方面进展很快,几天就完成了网络库、图片库、事件驱动等等基本库...