Android UI绘制完成的标志及如何合理地获取屏幕的宽高
来源:互联网 发布:ubuntu安装hadoop 编辑:程序博客网 时间:2024/05/18 04:09
当我们需要获取屏幕的宽高时,一般情况是不能再onCreate和onResume方法中获取的,因为这个时候界面还没有绘制完成,大部分情况下获取到的都是0。
这里有两个解决方法:
一个是重写Activity中的onWindowFocusChanged方法,在onWindowFocusChanged方法中获取,参数hasFocus为true时表示当前Activity获取到了焦点。
@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); } }问题在于,当前Activity获取到焦点(HasFocus为true)和失去焦点(HasFocus为false)的时候就会执行这个方法,比如下拉通知栏等,会带来一些问题。
另一个就是在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); }
阅读全文
1 0
- Android UI绘制完成的标志及如何合理地获取屏幕的宽高
- Android获取屏幕宽高及状态栏高度的方法
- Android开发 获取屏幕宽高及尺寸的方法
- Android如何获取手机的屏幕宽高
- android 获取屏幕的宽高
- android获取屏幕的宽、高
- Android开发获取屏幕的宽高
- android 获取屏幕的宽高
- Android 获取屏幕的宽高
- android获取屏幕的宽高
- android获取屏幕的宽高
- android,获取屏幕宽高的方法
- Android获取屏幕的宽高
- android 获取屏幕的宽高
- android 获取屏幕、xml的宽高
- Android获取UI控件的宽高
- Android 获取屏幕宽高及像素
- Java的HashMap如何合理地初始化
- 第7周项目3-负数把正数赶出队列
- 内存地址的计算方法
- java获取客户端的ip 和IP所在地
- web.xml文件加载顺序
- jquery的$().each,$.each的区别--上
- Android UI绘制完成的标志及如何合理地获取屏幕的宽高
- Raspberry PI3红外库安装和使用方法
- 浮点型精度分析
- 前端简写技巧
- 2017腾讯云11.11大促 给你实实在在的优惠
- map返回另一个对象
- 仿消灭星星烟花爆炸效果
- laravel框架实现excel表格数据导入导出-php
- Windows与Linux下的select网络模型对比分析