码迷,mamicode.com
首页 > 其他好文 > 详细

post

时间:2019-12-10 17:26:22      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:star   resume   详细   nbsp   直接   示例   get   rri   div   

二、使用View.post()获取View的宽高

       看到这个标题的时候,您可能会很纳闷,平时工作中不是可以直接通过view.getWidth()(getHeight也一样,后面不赘述)就能获取view的宽高吗,通过View.post()来实现岂不是多此一举?

  1、通过post获取宽高的示例演示

       对于上述疑惑,咱们先来一个例子:

 1 private Button mStartBtn;
 2 @Override
 3 protected void onCreate(Bundle savedInstanceState) {
 4     super.onCreate(savedInstanceState);
 5     setContentView(R.layout.activity_intent_service);
 6     mStartBtn = findViewById(R.id.start);
 7     Log.d(TAG, "width-1=" + mStartBtn.getWidth());
 8     mStartBtn.post(new Runnable() {
 9         @Override
10         public void run() {
11             Log.d(TAG, "width-3=" + mStartBtn.getWidth());
12         }
13     });
14     mStartBtn.setOnClickListener(new View.OnClickListener() {
15         @Override
16         public void onClick(View v) {
17             Log.d(TAG, "width-4=" + mStartBtn.getWidth());
18         }
19     });
20 }
21 @Override
22 protected void onResume() {
23     super.onResume();
24     Log.d(TAG, "width-2=" + mStartBtn.getWidth());
25 }

运行后得到如下log:

1 12-10 16:16:49.059 18918-18918/com.example.demos D/postDemo: width-1=0
2 12-10 16:16:49.065 18918-18918/com.example.demos D/postDemo: width-2=0
3 12-10 16:16:49.104 18918-18918/com.example.demos D/postDemo: width-3=264
4 12-10 16:16:53.074 18918-18918/com.example.demos D/postDemo: width-4=264

 看到这份log,对于部分童鞋来说,是不是无法淡定了?第7行和第24行为什么得到的值是0呢?后面我们会详细分析原因,这里咱们先知道会有这个现象,这就是为什么要使用view.post()来获取view宽高的原因了。第8~13行演示了该方法的使用示例,使用起来也是很简单的。

 

2、view绘制的时机问题

       通过上面

post

标签:star   resume   详细   nbsp   直接   示例   get   rri   div   

原文地址:https://www.cnblogs.com/andy-songwei/p/12017498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!