replugin插件化,插件转场动画失效的问题解决
说明
随着应用功能的丰富,Android程序的安装包也逐渐变大,这成为应用程序现有框架下难以摆脱的瓶颈。所以引入了rePlugin插件化框架,将应用按功能拆分为插件,以此减小apk的大小并同时增加应用的灵活性。rePlugin相关信息见此处 https://github.com/Qihoo360
问题描述
插件化开发过程中发现,插件程序中之前的转场动画出现异常,写在theme/styles中的动画会不展示,而在activity中调用 overridePendingTransition(int enterAnim, int exitAnim) 实现的专场动画会使程序卡死,黑屏。
问题解决
分析发现出现这一问题的原因是插件程序中的anim资源不能正常访问;而rePlugin官方的FEQ也验证了我们的猜想

出处见链接 https://github.com/Qihoo360/RePlugin/wiki/%E5%B1%80%E9%99%90%E5%92%8C%E6%9C%AA%E6%9D%A5%E5%A4%A7%E8%AE%A1%E5%88%92
而解决思路也有两个
1.用系统的转场动画替换自定义的转场动画;
实现:
跳转按钮的跳转方式:
startActivity(new Intent(this, ExplodeActivity.class), ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
在当前类(所要跳转的Activity页面) 中设置该Activity的进出场动画即可:
getWindow().setEnterTransition(new Explode().setDuration(2000));
getWindow().setExitTransition(new Explode().setDuration(2000));
使用系统提供的转场动画避开了对anim资源的访问,解决了上述的问题。具体实现 https://blog.csdn.net/w630886916/article/details/78319502
但是此方法会存在几个问题:
- Android系统转场动画只支持5.0(sdk21)以上的系统;
- 默认动画为Material Design风格动画,不一定与自己定义的动画完全一样
- 退场动画只支持back出发而finish推出则不会出现退场动画。
- 在singleTask模式下的退场动画不显示(原因不详)
2.将动画资源放在宿主中,通过public.xml传递Id进行资源访问;
由于第一种方式存在的诸多问题,我们推荐使用第二种方式,也是RePlugin官方提示的解决方式;
第一步:将插件中用到的anim资源复制到host宿主程序的anim目录下(如不存在手动添加);之后进行编译。

第二步:
将宿主文件中anim资源对应的id写到宿主的public.xml中(关键步骤)

注:资源id为编译生成可在R文件中查看,public.xml为手动添加; android public.xml 用法
第三步:将插件中用到的资源替换城宿主中public.xml对应的id

运行,完美解决。
replugin插件化,插件转场动画失效的问题解决的更多相关文章
- 又一开源项目爆火于GitHub,Android高级插件化强化实战
一.插件化起源 插件化技术最初源于免安装运行 Apk的想法,这个免安装的 Apk 就可以理解为插件,而支持插件的 app 我们一般叫 宿主. 想必大家都知道,在 Android 系统中,应用是以 Ap ...
- Android插件化-RePlugin项目集成与使用
前言:前一段时间新开源了一种全面插件化的方案-- RePlugin,之前一种都在关注 DroidPlugin 并且很早也在项目中试用了,但最终没有投入到真正的生产环节,一方面是项目中没有特别需要插件化 ...
- 关于360插件化Replugin Activity动态修改父类的字节码操作
近期在接入360插件化方案Replugin时,发现出现崩溃情况. 大概崩溃内容如下: aused by: java.lang.ClassNotFoundException: Didn't find c ...
- 360插件化Replugin爬坑之路
前言 继上次爬完了热修复的坑位,中途爬了各种各样的坑.今天我们来说说插件化Replugin的坑位.Replugin刚出的时候我就看过了.第一次看的时候可能心态不好.没看懂= =第二次重头在看,发现蛮简 ...
- RePlugin 插件化-内置加载
PS:插件化是什么这里就不再说了,从这里开始两种加载方式中的一种(内置加载),该框架是奇虎360开发的,官方给出优点 RePlugin是一套完整的.稳定的.适合全面使用的,占坑类插件化方案.我们&qu ...
- Android 全面插件化 RePlugin 流程与源码解析
转自 Android 全面插件化 RePlugin 流程与源码解析 RePlugin,360开源的全面插件化框架,按照官网说的,其目的是“尽可能多的让模块变成插件”,并在很稳定的前提下,尽可能像开发普 ...
- android 插件化框架VitualAPK
推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) LeakCanary 与 鹅场Matrix ResourceCa ...
- 有关Android插件化思考
最近几年移动开发业界兴起了「 插件化技术 」的旋风,各个大厂都推出了自己的插件化框架,各种开源框架都评价自身功能优越性,令人目不暇接.随着公司业务快速发展,项目增多,开发资源却有限,如何能在有限资源内 ...
- 《Android插件化开发指南》面世
本书在京东购买地址:https://item.jd.com/31178047689.html 本书Q群:389329264 (一)这是一本什么书 如果只把本书当作纯粹介绍Android插件化技术的书籍 ...
随机推荐
- C#代码总结02---使用泛型来获取Asp前台页面全部控件,并进行属性修改
该方法:主要用于对前台页面的不同类型(TextBox.DropDownList.等)或全部控件进行批量操作,用于批量修改其属性(如,Text.Enable). private void GetCont ...
- GDB 调试 C++ 程序 core dump
https://blog.csdn.net/yockie/article/details/51973740
- 【C语言编程练习】5.7填数字游戏求解
之前的东西就不上传了,大致就跟现在的一样 1. 题目要求 计算 ABCD * E DCBA 这个算式中每个字母代表什么数字? 2. 题目分析 如果是我们人去做这道题会怎么办,一定是这样想把,一个四位 ...
- 用generator改写ajax
function request(url) { // this is where we're hiding the asynchronicity, // away from the main code ...
- Web框架之Django篇
1.创建Project 命令: django-admin startproject mysite 2.配置 (1)模板配置 (2)静态文件配置 (3)csrf隐藏 3.路由关系 一个url对应一个函数 ...
- SpringBoot报错:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone
解决方法: 在数据库连接url配置后边加&serverTimezone=GMT%2B8 例: jdbc:mysql://127.0.0.1:3306/test改为jdbc:mysql://12 ...
- NOIP2017感悟
Day1 第一次会做的题这么多却比以前靠的更差. 其实停课期间水平还是提升了很多,但是做题速度和心态问题一就是我最难克服的一个地方. 题目很简单,但是又很恶心,主要是我代码能力太差,第二题调不出来,第 ...
- [LeetCode] Reordered Power of 2 重新排序为2的倍数
Starting with a positive integer N, we reorder the digits in any order (including the original order ...
- python爬虫第四天
昨天学到了正则表达式基础知识 :原子 今天开始学习第二个基础知识:元字符 元字符 就是正则表达式中含有特殊含义的一些字符 常见的元字符及含义 符号 含义 . 匹配除换行符以外 的任 ...
- centos7防火墙配置
一.在工作中远程连接经常通过堡垒机连接,不能直接开启防火墙.所以就需要写入配置文件中 编译配置文件 /etc/firewalld/zones/public.xml <?xml version ...