如何在android中监听视图加载完成

  介绍

今天就跟大家聊聊有关如何在android中监听视图加载完成,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

android是什么

android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国谷歌公司和开放手机联盟领导及开发。

<强>找到OnGlobalLayoutListener

/* *   *,才能Interface  definition  for  a  callback 用be  invoked  when 从而global  layout 状态   *,才能看,趁机visibility  of  views  within 从而view  tree 变化。   ,*/,public  interface  OnGlobalLayoutListener  {   ,/* *   ,,*,Callback  method 用be  invoked  when 从而global  layout  state 看,趁机visibility  of 观点   ,,*,within 从而view  tree 变化   ,,*/public 才能;void  onGlobalLayout ();   以前,}

注释的大概意思就是这个回调在布局状态和可见状态发生变化时回调,所以准确的说,这个不是监听视图的加载完成,而是监听布局变化的。

<强>我们来测试一下。

& lt; ? xml  version=?.0“,编码=皍tf-8" ?比;   & lt; LinearLayout  xmlns: android=癶ttp://schemas.android.com/apk/res/android"   ,xmlns:应用=癶ttp://schemas.android.com/apk/res-auto"   ,xmlns:工具=癶ttp://schemas.android.com/tools"   ,android: layout_width=癿atch_parent"   ,android: layout_height=癿atch_parent"   ,android:取向=皏ertical"   ,工具:上下文=癱om.example.myapplication.MainActivity"祝辞      & lt;按钮   android才能:onClick=皌est"   android:才能layout_width=癿atch_parent"   android:才能layout_height=皐rap_content"   android才能:文本=皌est"/比;      & lt; TextView   android:才能id=癅 + id/tv_test"   android:才能layout_width=皐rap_content"   android:才能layout_height=皐rap_content"   android:文本=安拍懿馐浴?比;   & lt;/LinearLayout> public  class  MainActivity  extends  AppCompatActivity  {      ,TextView  tv_test;   ,private  static  final  String  TAG =,“MainActivity";   ,@Override   ,protected  void  onCreate (Bundle  savedInstanceState), {   super.onCreate才能(savedInstanceState);      ,,setContentView (R.layout.activity_main);      tv_test 才能=,(TextView) findViewById (R.id.tv_test);//应用程序才能切换到后台,再点开会调用一次,屏幕关闭运行程序会调用两次   tv_test.getViewTreeObserver才能().addOnGlobalLayoutListener (new  ViewTreeObserver.OnGlobalLayoutListener (), {   @Override。才能   ,,public  void  onGlobalLayout (), {   ,,,Log.e(标签,,“onGlobalLayout:,“);   ,,}   ,,});   ,}            ,public  void 测试(View  v) {//改才能变可见性,调用一次//,,tv_test.setVisibility (View.GONE);//改才能变文字布的局,没有效果//,,tv_test.setGravity (Gravity.CENTER);//修才能改控件大小,调用一次//,,LinearLayout.LayoutParams  para =, (LinearLayout.LayoutParams), tv_test.getLayoutParams ();//,,para.height =, 200;//,,para.weight =, 100;//,,tv_test.setLayoutParams (para);//修才能改layoutgravity,这个是在LayoutParams中,调用一次   LinearLayout.LayoutParams 才能;para =, (LinearLayout.LayoutParams), tv_test.getLayoutParams ();   时间=para.gravity 才能;Gravity.CENTER_HORIZONTAL;   tv_test.setLayoutParams才能(para);   ,}   }

运行程序,得到从android监测中可以看的到,启动后调用了三次onGlobalLayout,很奇怪,为什么是三次?后来有一次屏幕锁了,发现调用了两次。经过测试,应用退到后台后重新进入会调用一次,屏幕锁屏后重新打开会调用两次(小米两次,努比亚1次),其中一次猜测是控件的可见性改变了。

通过按键的测试,分别修改控件的可见性和布的局,都会调用一次,修改控件内部布的局,不会调用,同时修改布局和可见性,只调用一次。

到此三次之谜依旧没有解决,不过,可以肯定的是,这个会重复

调用多次,使用的时候需要注意。解决的办法就是第一次回调后,就把回调删除掉,如:gv_test.getViewTreeObserver ()

<强> .removeOnGlobalLayoutListener(这);

看完上述内容,你们对如何在android中监听视图加载完成有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

如何在android中监听视图加载完成