Jude95 / SwipeBackHelper

make your activity can swipe to close
1.38k stars 268 forks source link

windowIsTranslucent设置为"true"之后 #41

Open ybADMIN opened 8 years ago

ybADMIN commented 8 years ago

windowIsTranslucent设置为"true"之后 从该activity中启动的所有activity都不可以应用其他动画了,比如我想要在发布按钮点击后向上弹出activity并且关闭发布界面的时候也要向下关闭

Jude95 commented 8 years ago

我暂时也没有很好的解决办法。希望你能帮忙找找...

ybADMIN commented 8 years ago

谢谢你的回答,如果我找到解决办法会即时通知你的

9h0st commented 8 years ago

windowIsTranslucent设置为true之后 还会破坏生命周期。当Activity A启动Activity B, A不透明,B透明,那么 A的onStop不会被调用,只会调用onPause。相当于启动了一个dialog。目前没有找到比较好的解决方式。

9h0st commented 8 years ago

@Jude95 为何项目里加入了Utils类,却没有使用?convertFromTranslucent这个反射方法可以在代码中更将windowIsTranslucent true改为false,不过和convertToTranslucent一样,有兼容性问题。

Paul-KK commented 7 years ago

只要windowIsTranslucent设置为true之后,就会影响activity生命周期,并且导致android:activityOpenExitAnimation和android:activityCloseEnterAnimation失效,这个和该开源库没有关系,因为google并不建议设置windowIsTranslucent为true,这样会导致activity无法回收。

softrice commented 7 years ago

@9h0st windowIsTranslucent设置为true 在activity启动的时候使用convertFromTranslucent置成false, 在滑动的时候使用convertToTranslucent置成true. 与正常的生命周期相比,只有细微差别 具体你可以打印看看

AndSync commented 7 years ago

@softrice 这个具体怎么设置啊 我设置了之后生命周期方法出来了 但是滑动的时候下面黑屏

 Utils.convertActivityFromTranslucent(this);
        SwipeBackHelper.onCreate(this);
        SwipeBackHelper.getCurrentPage(this)//get current instance
            .setSwipeBackEnable(true)//on-off
            .setSwipeRelateEnable(true)//if should move together with the following Activity
            .addListener(new SwipeListener() {
                @Override
                public void onScroll(float percent, int px) {
                    Utils.convertActivityToTranslucent((Activity) context);
                }

                @Override
                public void onEdgeTouch() {
                    Utils.convertActivityToTranslucent((Activity) context);
                }

                @Override
                public void onScrollToClose() {

                }
            })
            .setSwipeRelateOffset(500);
AndSync commented 7 years ago

@Jude95 看到这篇文章讲的 希望对这个有帮助 http://www.jianshu.com/p/b6d682e301c2#

caowen commented 7 years ago

关于动画的问题 可以在BaseActivity 里面 startActivity 和 finish 方法 调用 overridePendingTransition 添加动画即可