正好做類似ucweb一樣的頁面管理的功能子產品,貼出一起研究
imageview iv = (imageview) findviewbyid(r.id.imageview01);
imageview iv2 = (imageview) findviewbyid(r.id.imageview02);
imageview iv3 = (imageview) findviewbyid(r.id.imageview03);
//draw的方式對整屏截取,但狀态欄為黑色,不過可以通過canvas的translate方法根據狀态
//欄的高度進行調整
view cv = getwindow().getdecorview();
bitmap b = bitmap.createbitmap(200, 200, bitmap.config.rgb_565);
cv.draw(new canvas(b));
iv.setimagebitmap(b);
//對隐藏的未畫過的控件,截出的是黑色
bitmap image = bitmap.createbitmap(200, 200, bitmap.config.rgb_565);
bt3.draw(new canvas(image));
iv2.setimagebitmap(image);
//也可以通過getdrawingcache擷取
bt4.setdrawingcacheenabled(true);
bitmap bitmap = bt4.getdrawingcache();
drawable drawable = (drawable) new bitmapdrawable(bitmap);
iv3.setbackgrounddrawable(drawable);
1.擷取狀态欄高度:
decorview是window中的最頂層view,可以從window中擷取到decorview,然後decorview有個getwindowvisibledisplayframe方法可以擷取到程式顯示的區域,包括标題欄,但不包括狀态欄。
于是,我們就可以算出狀态欄的高度了。
java代碼
rect frame = new rect();
getwindow().getdecorview().getwindowvisibledisplayframe(frame);
int statusbarheight = frame.top;
rect frame = new rect();
2.擷取标題欄高度:
getwindow().findviewbyid(window.id_android_content)這個方法擷取到的view就是程式不包括标題欄的部分,然後就可以知道标題欄的高度了。
java代碼
int contenttop = getwindow().findviewbyid(window.id_android_content).gettop();
//statusbarheight是上面所求的狀态欄的高度
int titlebarheight = contenttop - statusbarheight