插件化问题:oppo,一加手机 Activity转场出现黑边[已解决]

62 阅读1分钟

场景

从宿主Activity跳转到插件下一个页面时,如果中间有一个透明的Activity用于处理业务逻辑,在oppo,一加手机中,下一个页面显示时会出现黑边,目前猜测是动画衔接有些错位 出现这个场景仍然有一些要求

  • 插件坑位Activity全局透明
  • 插件Activity主题为不透明

解决方案:

在宿主中新建一个anim文件 activity_plugin_right_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_shortAnimTime"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:shareInterpolator="false">

    <translate
        android:fromXDelta="100%"
        android:fromYDelta="0%p"
        android:toXDelta="0%"
        android:toYDelta="0%" />
</set>

这个时候我们在 透明Activity中设置

@Override
public void finish() {
    super.finish();
    try {
        int resourceId = getResources().getIdentifier("activity_plugin_right_in", "anim", getPackageName());
        overridePendingTransition(resourceId,0);
    } catch (Throwable e) {

    }
}

注意:

我这里是分离式插件化,插件resourceId和宿主不对齐,所以activity_plugin_right_in.xml不能放在插件中,否则获取到的resourceId传到overridePendingTransition中不生效

另外我的插件包名和宿主是一样的,所以使用getPackageName(),如果你的插件和宿主包名不一致,要填入宿主包名