編輯:關於Android編程
如何獲取一個控件的長和高,相信很多朋友第一眼看見這個問題都會覺得很簡單,直接在onCreate裡面調用getWidth、getMeasuredWidth不就可以獲得了嗎,但是,事實上是並沒有簡單的,不信的話,你可以去試一下,在onCreate裡面,你是無法獲得長寬值的,始終為0。
這是為什麼呢,其實熟悉view繪制流程的朋友應該一眼就看出來了,在onCreate中,我們的控件其實還並沒有畫好,換句話說,等onCreate方法執行完了,我們定義的控件才會被度量(measure),所以我們在onCreate方法裡面通過view.getHeight()獲取控件的高度或者寬度肯定是0。
No1:
int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); imageView.measure(w, h); int height = imageView.getMeasuredHeight(); int width = imageView.getMeasuredWidth();
No2:
ViewTreeObserver vto = imageView.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { vto.removeOnPreDrawListener(this); int height = imageView.getMeasuredHeight(); int width = imageView.getMeasuredWidth(); return true; } });
這個方法,我們需要注冊一個ViewTreeObserver的監聽回調,這個監聽回調,就是專門監聽繪圖的,既然是監聽繪圖,那麼我們自然可以獲取測量值了,同時,我們在每次監聽前remove前一次的監聽,避免重復監聽。
No3:
ViewTreeObserver vto = imageView.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this); imageView.getHeight(); imageView.getWidth(); } });
OK,現在看來,看似簡單問題也不是那麼簡單吧。
以上。
在開發Android應用時,UI布局是一件令人煩惱的事情。下面主要講解一下Android中的界面布局。一、線性布局(LinearLayout)線性布局分為:(1)垂直線性
??嵌入式設備的一個普遍特點是內存容量相對有限。當運行的程序超過一定數量時,或者涉及復雜的計算時,很可能出現內存不足,進而導致系統卡頓的現象。Android 系統也不例外
簡介GreenDAO是一個開放的安卓代碼庫,來提供一個容易使用的SQLite數據庫接口,幫助開發者更加高效的處理數據——將開發者從處理低級的數據庫
一、猜想數據存放路徑微信現在是老少皆宜,大街小巷都在使用,已經替代了傳統的短信聊天方式了,只要涉及到聊天就肯定有隱私消息,那麼本文就來講解如何獲取微信的聊天記錄以及通訊錄