編輯:關於Android編程
獲取屏幕 寬高 和 獲取空間的寬高 在開發的時候經常用到,剛開始做開發的時候 總是 復制粘貼 不知道 所以然 ,今天 徹底的 總結一下 獲取寬高的 用法
先講一下原理 在最後貼出代碼之一直接使用。
1. 獲取屏幕的寬高。
首先要只一個 函數就是 WindowManager
他的api是這樣說的
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)
這麼寫了
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.很簡單直接 復用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);
看著就麻煩。這個文章只說明 獲取 寬高 方便使用,拿來主義
SurfaceView, GLSurfaceView, SurfaceTexture和TextureView是Android當中名字比較繞,關系又比較密切的幾個類。本文基
1.修改SDK版本: 打開File--Project Structure... Modules--app--Properties
我們先用AndroidStudio新建一個項目,選擇空白模板,然後像其中拖入兩個Button,將他們的id分別命名為btDate(顯示日期),btTime(顯示時間),他
本文承接,Android 開發第五彈:簡易時鐘(鬧鐘) 和 Android 開發第六彈:簡易時鐘(計時器),這一部分是關於秒表的。布局同樣是新建一個類(StopWatch