全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

android获取屏幕宽高与获取控件宽高(三种方法)

1.获取屏幕宽高

方法1:

int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕宽(像素,如:480px) 
int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p) 
Log.e(TAG + " getDefaultDisplay", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight); 

方法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 xdpi = dm.xdpi; 
float ydpi = dm.ydpi; 
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi); 
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI); 
screenWidth = dm.widthPixels; // 屏幕宽(像素,如:480px) 
screenHeight = dm.heightPixels; // 屏幕高(像素,如:800px) 
Log.e(TAG + " DisplayMetrics(111)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight); 

方法3:

dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) 
densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320) 
xdpi = dm.xdpi; 
ydpi = dm.ydpi; 
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi); 
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI); 
int screenWidthDip = dm.widthPixels; // 屏幕宽(dip,如:320dip) 
int screenHeightDip = dm.heightPixels; // 屏幕宽(dip,如:533dip) 
Log.e(TAG + " DisplayMetrics(222)", "screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip); 
screenWidth = (int)(dm.widthPixels * density + 0.5f); // 屏幕宽(px,如:480px) 
screenHeight = (int)(dm.heightPixels * density + 0.5f); // 屏幕高(px,如:800px) 
Log.e(TAG + " DisplayMetrics(222)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight); 

2.获取控件的宽高,一般来说,我们在onCreate里面得到的控件的宽高全是0.采用下面的方法,可以得到真实的宽高

方法一 :

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(); 
textView.append("\n"+height+","+width); 

此方法会加载onMeasure三次

方法二 :

ViewTreeObserver vto = imageView.getViewTreeObserver(); 
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 
  public boolean onPreDraw() { 
    int height = imageView.getMeasuredHeight(); 
    int width = imageView.getMeasuredWidth(); 
    textView.append("\n"+height+","+width); 
    return true; 
  } 
}); 

此方法会加载onMeasure二次,但是回调函数会回调很多次

方法三:

ViewTreeObserver vto2 = imageView.getViewTreeObserver();  
vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
   @Override  
   public void onGlobalLayout() { 
    imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);  
    textView.append("\n\n"+imageView.getHeight()+","+imageView.getWidth()); 
  }  
}); 

此方法会加载onMeasure二次,但是回调函数只回调一次  

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# android  # 获取控件高度  # 获取控件宽度  # android获取屏幕宽高  # Android编程获取屏幕宽高与获取控件宽高的方法  # Android 获得屏幕宽高的三种方式  # Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法  # Android获取设备屏幕宽高pix值的方法  # 回调  # 法会  # 加载  # 可以得到  # 很多次  # float  # getDisplayMetrics  # density  # dm  # DisplayMetrics  # TAG  # getResources  # xdpi  # widthPixels  # ydpi  # densityDPI 


相关文章: 如何在阿里云通过域名搭建网站?  如何选择网络建站服务器?高效建站必看指南  高防服务器租用如何选择配置与防御等级?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  南宁网站建设制作定制,南宁网站建设可以定制吗?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何选择PHP开源工具快速搭建网站?  网站制作员失业,怎样查看自己网站的注册者?  如何在七牛云存储上搭建网站并设置自定义域名?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  如何在香港服务器上快速搭建免备案网站?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  建站主机数据库如何配置才能提升网站性能?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  招贴海报怎么做,什么是海报招贴?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何快速搭建个人网站并优化SEO?  网站制作话术技巧,网站推广做的好怎么话术?  如何生成腾讯云建站专用兑换码?  如何零基础在云服务器搭建WordPress站点?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  ppt制作免费网站有哪些,ppt模板免费下载网站?  建站之星导航配置指南:自助建站与SEO优化全解析  微信小程序 input输入框控件详解及实例(多种示例)  ,网页ppt怎么弄成自己的ppt?  如何在景安服务器上快速搭建个人网站?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  c# await 一个已经完成的Task会发生什么  行程制作网站有哪些,第三方机票电子行程单怎么开?  高端云建站费用究竟需要多少预算?  太原网站制作公司有哪些,网约车营运证查询官网?  建站之星收费标准详解:套餐费用及年费价格表一览  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  如何获取免费开源的自助建站系统源码?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  如何做静态网页,sublimetext3.0制作静态网页?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  无锡营销型网站制作公司,无锡网选车牌流程?  如何快速搭建FTP站点实现文件共享?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  建站之星导航菜单设置与功能模块配置全攻略  北京网站制作的公司有哪些,北京白云观官方网站?  如何通过老薛主机一键快速建站?  ,如何利用word制作宣传手册? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。