在做androidtv webview 时发现的问题,以下提出个人解决方案,有不对的地方,请大神指出! 在androidtv webview 下的html5页面,绝不像在pc、手机、平板完美响应式。响应式强手媒体查询和viewport似乎没有那么给力了。
原因:是有些设备在media query时返回的是屏幕分辨率而不是设备像素宽度,这些情况导致了网页设计上的不一致。
面对不同分辨率和不同的androidTV品牌(乐视、海信、海尔、创维等等)以及不同盒子(百度、天猫等等)的适配成了最大的问题。
那么我们怎么如果 响应式的适配这些终端呢?
首先:我们必须了解一下它们
设备像素比=物理像素/设备独立像素;
window.devicePixelRatio是设备上物理像素和设备独立像素(device-independent pixels (dips))的比例
公式表示就是:window.devicePixelRatio = 物理像素 / dips
dips(device independent pixels,设备独立像素)与屏幕密度有关。dips可以用来辅助区分视网膜设备还是非视网膜设备。
解决方案
Google引入了一个dips(device-independent pixels)的中间概念,web开发人员只需要处理DIPS,究竟屏幕能显示多少内容,而无需关心实际屏幕分辨率,
将有助于消除新的硬件显示技术给media query编程带来的混乱。
(androidtv块解决方案:)
var devicePixelRatio= window.devicePixelRatio;//设备像素比 var width=window.screen.width;//返回显示器屏幕的宽度
var dips=width/devicePixelRatio;//得到设备独立像素的宽,以此来适应屏幕的宽度,
pc,移动端解决方案:沿用媒体查询和viewport
这样可以以一个页面响应多设备了