方向改变后的Android事件

时间:2013-11-08 13:00:40

标签: android events listview orientation listener

我有这个问题已经有一个多星期了,经过这里和谷歌的几十个主题后,我仍然没有答案。 问题是我正在动态地将数据加载到长ListView,因此初始化不会持续很长时间。更改手机方向后,ListView正在调整大小并且内部有空元素(没关系)。所以我认为OnConfigurationChanged事件会处理这个问题。不幸的是,在小部件调整大小之前它被解雇了,所以我仍然有空列表。这是我的问题:无论如何得到一个事件(或监听器),它将在widged调整大小并被绘制之后出现?

我已经在清单中了:

android:configChanges="keyboardHidden|orientation|screenSize

并且没有办法将其“关闭”,因为加载需要几秒钟而且我不希望在翻转手机方向时有几秒钟的延迟。

P.S。对不起任何语言错误;)

1 个答案:

答案 0 :(得分:0)

是肯定的。您可以使用将侦听的setOnGlobalLayoutListener(),并在布局完成后使用回调

同样在屏幕旋转时,应该销毁活动,重新创建,因此您的加载应该重新启动。你在做一些奇怪的事吗?

我在我的一个片段中执行此操作:

root = inflater.inflate(R.layout.fragment_booking_accepted, null);
    root.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    Dbg.e(TAG, "- On Layout Completed ! ");
                    // If you need this to be called again, then run again addOnGlobalLayoutListener.
                    // root.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    isLayoutCompleted = true;
                    // YOU write here all the coed you might need. }}}} close brackets

编辑:

  1. 大多数人认为不让android完成它的工作是非常可怕的:在屏幕旋转时销毁并重新创建。但你可以做你想做的事。
  2. 加载空列表视图非常轻松。加载布局几分钟是不可能的。您必须使用微调器加载布局和列表视图,以便让用户知道他的手机正在做什么(加载)。加载数据后,将数据更改通知适配器。
  3. 它改变了你的观点吗?问我,如果我知道,我会尽力回答。