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: 这个方法待定还。

DisplayMetricsdm1 = getResources().getDisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm1);

float density1 = dm1.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)

intdensityDPI1 = 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);

看着就麻烦。这个文章只说明 获取 宽高 方便使用,拿来主义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值