在悬浮窗口中也可以通过webview进行布局,这就需要将webview控件作为悬浮窗口实现:
首先要动态创建webview,不能使用布局文件进行布局,否则会报错;再调用windowmanager创建悬浮窗口。
首先要在AndroidManifest.xml中增加权限:
动态创建webview,并设置属性:
mywebview = new WebView(this);
mywebview.getSettings().setJavaScriptEnabled(true); //设置允许Js
/*设置webview控件背景透明*/
mywebview.setBackgroundColor(Color.TRANSPARENT);
mywebview.setWebChromeClient(new WebChromeClient());
/* **用来可以打开网页中的链接** */
mywebview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
});
/* 和JS交互的接口 */
mywebview.addJavascriptInterface(new JSInterface(), "JS");
mywebview.requestFocus();
Log.v(TAG, "the webview will start");
mywebview.loadUrl("file:///android_asset/index.html"); //要载入的布局网页
使用windowmanager创建悬浮窗口:
wm=(WindowManager)getApplicationContext().getSystemService("window");
wmlay = new WindowManager.LayoutParams();
wmlay.type= LayoutParams.TYPE_PHONE; //当前悬浮窗口位于phone层
wmlay.format=PixelFormat.RGBA_8888; //悬浮窗口背景设为透明
wmlay.gravity=Gravity.LEFT|Gravity.TOP;
wmlay.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL;//属性设置
wmlay.x = 0;
wmlay.y = 0;
wm.addView(mywebview, wmlay);
关于悬浮窗口的销毁,可以使用语句:
wm.removeView(mywebview);
参考:http://www.xsmile.net/?p=538