android – onGlobalLayout区分各种调用

android – onGlobalLayout区分各种调用,第1张

概述我有一个标志视图,它是一个包含单个 ImageView的全屏片段. 标志图像完全可见后,我必须执行一些 *** 作. 以下代码用于调用特殊任务 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstan 我有一个标志视图,它是一个包含单个 ImageVIEw的全屏片段.
标志图像完全可见后,我必须执行一些 *** 作.

以下代码用于调用特殊任务

@OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) {        ImageVIEw logoImageMaster = new ImageVIEw(getContext());        //logoImageMaster.setimageResource(resID); //even after removing this,i am getting the callback twice        try {            // get input stream            inputStream ims = getActivity().getAssets().open("product_logo.png");            // load image as Drawable            Drawable d = Drawable.createFromStream(ims,null);            // set image to ImageVIEw            logoImageMaster.setimageDrawable(d);        }        catch(IOException ex) {        }        logoImageMaster.getVIEwTreeObserver().addOnGlobalLayoutListener(new VIEwTreeObserver.OnGlobalLayoutListener() {            @OverrIDe            public voID onGlobalLayout() {  //FIXME get called twice. Check this out,no info to distinguish first from second//                Log.e("PANEL","onGlobalLayout of logo IV ---------------------------------");                    activityInterface.doSpecialLogic();            }        });        return logoImageMaster;    }

我的确切问题是onGlobalLayout被调用两次这个视图层次结构.

我知道onGlobalLayout在VIEw.java的performTraversal中被调用,因此这是预期的.

对于单个单子视图的单个用户的用例,我想区分视图属性,使得在标识图像完全可见后[onGlobalLayout被调用两次]即可调用doSpecialLogic.
请建议一些想法.

解决方法 每次视图布局或可见性更改时,OnGlobalLayoutListener都将被调用.也许您在doSpecialLogic调用中重置视图?
编辑
正如@ Guille89所指出的那样,两个调用使得onGlobalLayout被调用两次

无论如何,如果你想调用OnGlobalLayoutListener只需一次,不需要它的任何其他,如何删除它后doSpecialLogic()调用?

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {             //noinspection deprecation              logoImageMaster.getVIEwTreeObserver().removeGlobalOnLayoutListener(this);                    } else {             logoImageMaster.getVIEwTreeObserver().removeOnGlobalLayoutListener(this);                    }activityInterface.doSpecialLogic();
总结

以上是内存溢出为你收集整理的android – onGlobalLayout区分各种调用全部内容,希望文章能够帮你解决android – onGlobalLayout区分各种调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1131898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存