在悬浮窗口中也可以通过webview进行布局,这就需要将webview控件作为悬浮窗口实现:
首先要动态创建webview,不能使用布局文件进行布局,否则会报错;再调用windowmanager创建悬浮窗口。
首先要在AndroidManifest.xml中增加权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
动态创建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