Android UI繪製完成的標誌及如何合理地獲取螢幕的寬高
當我們需要獲取螢幕的寬高時,一般情況是不能再onCreate和onResume方法中獲取的,因為這個時候介面還沒有繪製完成,大部分情況下獲取到的都是0。
這裡有兩個解決方法:
一個是重寫Activity中的onWindowFocusChanged方法,在onWindowFocusChanged方法中獲取,引數hasFocus為true時表示當前Activity獲取到了焦點。
問題在於,當前Activity獲取到焦點(HasFocus為true)和失去焦點(HasFocus為false)的時候就會執行這個方法,比如下拉通知欄等,會帶來一些問題。@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { Display display = getWindowManager().getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); int width = metrics.widthPixels; int height = metrics.heightPixels; Log.i(TAG, "onWindowFocusChanged: " + width + height); } }
另一個就是在onCreate和onResume裡使用Handler.postDelay方法了。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_empty); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { Display display = getWindowManager().getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); int width = metrics.widthPixels; int height = metrics.heightPixels; Log.i(TAG, "onWindowFocusChanged: " + width + height); } }, 500); }
相關推薦
Android UI繪製完成的標誌及如何合理地獲取螢幕的寬高
當我們需要獲取螢幕的寬高時,一般情況是不能再onCreate和onResume方法中獲取的,因為這個時候介面還沒有繪製完成,大部分情況下獲取到的都是0。 這裡有兩個解決方法: 一個是重寫Activit
Android螢幕適配3-動態獲取螢幕寬高及動態設定控制元件寬高
1、問題 在螢幕適配中,要求應用在不同的螢幕上顯示一樣的效果時,我們的佈局可以採用百分比來定位,也就是 layout_weight,但對於一些層層巢狀或更加複雜的情況下,使用百分比的效果並不是很好,頁無法解決一些問題,比如文字大小。 2、解決思路 我們
android獲取螢幕寬高與獲取控制元件寬高
// 獲取螢幕寬高(方法1) int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 螢幕寬(畫素,如:480px) int screenHeight = getWindowManager().getDe
Android獲取螢幕寬高,狀態列寬高,actionbar寬高,layout寬高,導航欄高度的方法彙總
看這個部落格你可以知道 獲取螢幕寬高,狀態列寬高,actionbar寬高,layout寬高,導航欄(虛擬按鍵欄)高度的方法 目錄順序為 程式碼測試的機型 狀態列高度 actionbar高度 螢幕高度 導航欄(虛擬按鍵欄)高度 layout寬高 總
Android UI繪製流程及原理
一、繪製流程原始碼路徑 1、Activity載入ViewRootImpl ActivityThread.handleResumeActivity() --> WindowManagerImpl.addView(decorView, layoutParams) --> WindowManager
Android UI繪製 -- 螢幕適配
#重要概念 螢幕尺寸 手機對角線的物理尺寸,單位英寸。 常見的有:5寸、5.5寸、6寸等 螢幕解析度 手機在橫向、縱向上的畫素點數總和,單位px。 常見的有:1080x1980、720x1280/480x800等 螢幕畫素密度 每英寸的畫素點數,單位dpi。
Android UI繪製
基礎知識 measure MeasureSpecs MeasureSpecs維護一個int型(32bit)資料,其中2bit表示mode,30bit表示size size = MeasureSpec.getSize(measureSpec) mode = Me
Android UI效能專項測試及優化
1 UI卡頓(Jank) 內容的快速載入很重要,渲染的流暢性也很重要。android團隊把滯緩,不流暢的動畫定義為jank,一般是由於丟幀引起的。安卓裝置的螢幕重新整理率一般是60幀每秒(1/60fps=16.6ms每幀),所以你想要渲染的內容能在16ms內完
Android-UI開發之Adapter及Adapter控制元件
一.Adapter的概述 ArrayAdapter SimpleAdapter SimpleCursorAdapter BaseAdapter及自定義Adapter Adapter控制元件 1.Adapter介面卡 Adapter物件在Adapt
經常用到的Android UI、開源專案及庫
README.mdTimLiu-Android目錄具體內容 =============================UIAwesome-MaterialDesign - MaterialDesignCenter改名為Awesome-MaterialDesign,優化了佈局,新增了不少庫。ChipsLibr
android螢幕適配的全攻略3-動態獲取手機螢幕寬高及動態設定控制元件寬高
1.獲取手機螢幕寬高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.width
最全的獲取元素寬高及位置的方法
offsetWidth / offsetHeight offsetWidth HTMLElement.offsetWidth 是一個只讀屬性,返回一個元素的佈局寬度。一個典型的(各瀏覽器的offsetWidth可能有所不同)offsetWidth是測量包含元素的邊框(border)、水平線上的內邊距(pa
JS實現圖片的預覽及預覽圖片的寬高獲取
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>圖片預覽</title> </head> <style
Android 獲取layout寬高之前呼叫View.measure(0,0)的原因
private ConstraintLayout constraintLayout; constraintLayout=findViewById(R.id.screen_test); constraintLayout.measure(0,0); Log.i(TAG,"onCreate:"+const
最全面的獲取元素寬高及位置的方法
HTMLElement.offsetWidth 是一個只讀屬性,返回一個元素的佈局寬度。一個典型的(各瀏覽器的offsetWidth可能有所不同)offsetWidth是測量包含元素的邊框(border)、水平線上的內邊距(padding)、豎直方向滾動條(
android onCreate中獲取view寬高為0的多種解決方法
這個問題大家肯定遇到過不止一次,其實很簡單,解決它也很容易,但是咱們追求的畢竟不是解決它,而是找到幾種方法去解決,並且這麼解決的原理是什麼。 這裡列出4種解決方案: Activity/View#onWindowFocusChanged 這個函式
C#:視窗大小,電腦螢幕寬高,程式的退出 及 窗體顯示位置、窗體顯示在最前 設定
1。直接上程式碼 using Microsoft.VisualBasic; using System; using System.Threading; using System.Windows.Forms; namespace WindowsFormsApp13 { public pa
android 螢幕寬高那點事
目錄 寬高的獲取方式 導航欄的高度獲取及導航欄監聽 寬高的獲取方式 1. DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager
Android中獲取View寬高方法
Android開發中經常需要獲取控制元件的寬高,比如前不久我在寫一個圖片載入庫時,因為需要對Bitmap進行裁剪就遇到了需要獲取ImageView寬高的問題。 如果稍微瞭解過一下View的繪製過程,就會知道直接在onCreate()等生命週期回撥方法中獲取寬高,獲取到的值是0
Android獲取螢幕寬和高
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); wm.getDefault