您的位置:首页 > 移动开发

android webview自适应屏幕

2015-12-10 09:10 302 查看
android方面的开发,包括手机端和机顶盒,也就是智能电视方面端的开发过程中,都不可避免的需要使用到webview,而针对于不同的分辨率而言,webview也需要做到自适应屏幕。那么,他应该怎样才能做到呢?

1.写网页的自己根据百分比,也就是针对于不同的分辨率写宽高。

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=0.3, maximum-scale=2.0, user-scalable=yes">


也就是类似上面那句,写好伸缩比,那么在android端就可以做到自适应屏幕的。

2.手机端和电视端自己来弄.

因为网页方面有可能有会转盘,抽奖之类的不能根据百分比来放置图片的,需要定死宽高来写网页端的,如写死为1280X720的话,那么需要我们电视端或者手机端在webview中设置,或者在webview的setting中写配置,其中会碰到一些问题。

1)webview右侧空白

这个是最好解决的,这个问题主要原因是因为滚动条的问题,默认白色,所以只要在xml文件中写上

android:scrollbars="none"


或者在Java文件中写

setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
即可

2)webview显示不全

这个问题就是上面说的,因为分辨率不一致,所以在你调试的设备上面有可能是全屏的,但是在别的分辨率盒子或手机上面是显示不全的,那么就要取一个全适应的方法。

第一种方法是这个:

settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
第二个方法是

<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" />


但是以上的方法不一定都能成功,特别是第一种,有可能出现底部有白色部分出现,这个问题并不是滚动条导致的,而是因为他自动缩放而导致的。

因此有第三种折中的方法:

int[] wh=Utils.getFullScreen();
int size=wh[0]*100/1280;
lucky_webview.setInitialScale(size);
这个是放大webview的方法,当然里面的100是自己调试出来的,size=100就是不变,150就是放大1.5倍,针对于固定大小的网页来说这个做法是可行的

另外,因为webview在加载过程中是白色透明的,所以为了用户体验效果更好,我们可以默认的给一张背景图,至于背景图让UI给你。

设置背景图的方法如下:

先要在xml文件中关闭硬件加速:

android:layerType="software"
其次,需要在java文件中加上:

lucky_webview.setBackgroundColor(0);
lucky_webview.setBackgroundResource(R.drawable.lucky_bg);


当然有写网页有js的话需要加上
settings.setJavaScriptEnabled(true);


谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: