Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android獲取屏幕寬高與獲取控件寬高 方法總結

android獲取屏幕寬高與獲取控件寬高 方法總結

編輯:關於Android編程

獲取屏幕 寬高 和 獲取空間的寬高 在開發的時候經常用到,剛開始做開發的時候 總是 復制粘貼 不知道 所以然 ,今天 徹底的 總結一下 獲取寬高的 用法

先講一下原理 在最後貼出代碼之一直接使用。

1. 獲取屏幕的寬高。

首先要只一個 函數就是 WindowManager

他的api是這樣說的

android.view
接口 WindowManager

所有超級接口: ViewManager
public interface WindowManagerextends ViewManager

The interface that apps use to talk to the window manager.

Use Context.getSystemService(Context.WINDOW_SERVICE) to get one of these.

Use Context.getSystemService(Context.WINDOW_SERVICE) to get one of these. 這句話很重要 因為這句話 就可以獲取屏幕空間了。

可以依照api寫出這句話 獲取屏幕的服務了。

WindowManager a = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 這句怎麼用先不用著急 先放著。

還有一個函數Display

Display

結構

繼承關系

public class Display extends Object

java.lang.Object

android.view.Display

類概述

Display類提供關於屏幕尺寸和分辨率的信息。

常用方法有 getSize()目前 替代了 getWidth(),getHeight(),當然了都可以同時使用。

還有一個類 DisplayMetrics

有如下常用方法。

density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)densityDpi; // 屏幕密度(每寸像素:120/160/240/320)widthPixels; // 屏幕寬(像素,如:480px) heightPixels; // 屏幕高(像素,如:800px)

下面開始上代碼 直接復制粘貼就行了。

方法1

	/*
			 * 將對話框的大小按屏幕大小的百分比設置
			 */
			WindowManager m = getWindowManager();			
			Display d = m.getDefaultDisplay(); // 獲取屏幕寬、高用
			System.out.println("------------d1---------:" + d.getHeight());
			System.out.println("------------d1---------:" + d.getWidth());

也可以這麼寫

// 獲取屏幕寬高(方法1)  
int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕寬(像素,如:480px)  
int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p)  

現在的版本 用getSize()代替了個頭getHeight()

這麼寫了

			WindowManager a = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
			Display d1 = a.getDefaultDisplay(); // 獲取屏幕寬、高用
			
			Point size = new Point();
			d.getSize(size);
			int width = size.x;
			int height = size.y;
			System.out.println("---------------------:" + width + height);
注意 :這個代碼不在acitiviy中寫的時候 要用
WindowManager a = (WindowManager) getSystemService(Context.WINDOW_SERVICE);


方法2 :

			DisplayMetrics dm = new DisplayMetrics();
			dm = getResources().getDisplayMetrics();
			float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
			int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
			float scaledDensity=dm.scaledDensity;
			float xdpi = dm.xdpi;
			float ydpi = dm.ydpi;
			int screenWidth = dm.widthPixels; // 屏幕寬(像素,如:480px)  
			int screenHeight = dm.heightPixels; // 屏幕高(像素,如:800px)  


方法3: 這個方法待定還。

			
			DisplayMetrics	dm1 = getResources().getDisplayMetrics();
			getWindowManager().getDefaultDisplay().getMetrics(dm1);  
			float density1 = dm1.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)  
			int	densityDPI1 = dm1.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)  
			float xdpi1 = dm1.xdpi;  
			float ydpi1 = dm1.ydpi;  
			int screenWidthDip1 = dm1.widthPixels; 
			int screenHeightDip1 = dm1.heightPixels; 

1.獲取空間的寬高 在oncreate中獲取空間寬高往往得到的是0 。下面兩種方法 獲取寬高

1.很簡單直接 復用activity方法

@Override
	public void onWindowFocusChanged(boolean hasFocus) {
		// TODO Auto-generated method stub
		super.onWindowFocusChanged(hasFocus);
		System.out.println("dialog1:" + dialog1.getWidth());
	}
我基本用方法1

2.用onmeasure方法

int w = View.MeasureSpec.makeMeasureSpec(0,
					View.MeasureSpec.UNSPECIFIED);
			int h = View.MeasureSpec.makeMeasureSpec(0,
					View.MeasureSpec.UNSPECIFIED);
			btn_dialog1_2.measure(w, h);
			int height = btn_dialog1_2.getMeasuredHeight();
			int width = btn_dialog1_2.getMeasuredWidth();
			System.out.println("height:" + height + "width" + width);

看著就麻煩。這個文章只說明 獲取 寬高 方便使用,拿來主義

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved