編輯:Android開發教程
在oncreate()中利用view.getWidth()或是view.getHeiht()來獲取view的寬和高,看似沒有問題,其實他們去得值是0,並不是你想要的結果?
這是為什麼呢?
在調用oncreate()方法時,界面處於不可見狀態,內存加載組件還沒有繪制出來,你是無法獲取他的尺寸。
那如何在繪制組件之前能獲取到該組件的尺寸大小呢?
這裡有三種方法,經過驗證的:
方法一 :
//測量方法
1
2
3
4
5
int
width =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int
height =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
view.measure(width,height);
int
height=view.getMeasuredHeight();
int
width=view.getMeasuredWidth();
方法二 :
1
2
3
4
5
6
7
8
9
//增加組件繪制之前的監聽
ViewTreeObserver
vto =view.getViewTreeObserver();
vto.addOnPreDrawListener(new
ViewTreeObserver.OnPreDrawListener() {
@Override
public
booleanonPreDraw() {
int
height =view.getMeasuredHeight();
int
width =view.getMeasuredWidth();
}
});
方法三 :
1
2
3
4
5
6
7
8
9
10
//增加整體布局監聽
ViewTreeObserver
vto = view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new
OnGlobalLayoutListener(){
@Override
public
voidonGlobalLayout() {
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int
height =view.getMeasuredHeight();
int
width =view.getMeasuredWidth();
}
});
那麼,在activity進入運行期時,組件的尺寸獲取方法就很簡單了,直接getWidth()和getHeight
android網絡框架原理
這裡歸納寫一個android網絡框架的一般性原理:Http網絡請求原理學過《計算機網絡》的應該都知道http是一種應用層協議,它通過tcp實現了可靠的數據傳輸,能夠保證數
Android 4.2 OTA帶來鎖屏小工具和多用戶支持
Google已經提供了你正在使用的三個Nexus設備之一的系統更新,我們高興的是,Nexus 4和10的Android 4.2 OTA更新也開始推出了。此次的升級包括了&
Android簡明開發教程十四:Context Menu繪制幾何圖形
上下文相關菜單(Context Menu)類同PC上按鼠標右鍵顯示的菜單,在Android平台上是長按來激活Context Menu,Context Menu一般用來顯示
Android ApiDemos示例解析(16) App->Activity->Translucent
Activity分類示例的最後幾個例子是來顯示半透明Activity。例子大同小異。實現Activity的半透明效果主要是通過Style和 Theme來實現的。看看Tra