Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

我在顶层父类中 CancelAdapter,然后每个子类都根据具体情况来 CustemAdapter , 结果CustemAdapter 不起作用,因为父类实现了CancelAdapter #233

Closed
5 tasks done
yanglichuan opened this issue Oct 25, 2019 · 3 comments

Comments

@yanglichuan
Copy link

Environment

  • Autosize Version:
  • Target Android Version:
  • Device Model:
  • Device Resolution:
  • Design Size On AndroidManifest:

Bug Description:

Log:



Screenshot

Related Code:

  

Others:

@JessYanCoding
Copy link
Owner

JessYanCoding commented Oct 29, 2019

https://github.com/JessYanCoding/AndroidAutoSize/blob/master/autosize/src/main/java/me/jessyan/autosize/DefaultAutoAdaptStrategy.java#L61

框架是默认只要引入了项目,所有页面都需要屏幕适配的,只要实现了 CancelAdapt 永远不可能走到 CustomAdapt 的逻辑;

解决方案:

普通方式:
1.父类不要实现 CancelAdapter,让不想适配的子类实现 CancelAdapter
2.父类不要实现 CancelAdapter,将 不需要适配 的子类传入 ExternalAdaptManager#addCancelAdaptOfActivity 方法

高级方式:
1.父类实现 CancelAdapter,将 需要适配 的子类传入 ExternalAdaptManager#addExternalAdaptInfoOfActivity 方法

终极方式:
1.AndroidAutoSize 支持强大的自定义功能,你什么都不用改,只用自定义适配器,将你现在的适配逻辑实现到适配器中,框架就可以使用你的业务逻辑进行适配
依照你上面的逻辑步骤应该是:实现 AutoAdaptStrategy,并将这个 AutoAdaptStrategy 实现类注册给 AndroidAutoSize,实现类的逻辑完全复制 DefaultAutoAdaptStrategy,只用将 61 行 改成

if (target instanceof CancelAdapt && !target instanceof CustomAdapt) {

CustomAdapt 因为要实现一些方法,你也可以自己再新建一个没有任何方法的新接口,上面的 !target instanceof CustomAdapt 改成 !target instanceof 这个新接口,你只需要让 需要适配 的子类实现这个新的接口就可以了。

或者,只对实现了新接口的类进行适配,否则全部都 AutoSize.cancelAdapt(activity); return;

@JessYanCoding
Copy link
Owner

JessYanCoding commented Oct 29, 2019

  1. 不需要适配 的页面少于 需要适配 的页面就用 普通方式
  2. 不需要适配 的页面大于 需要适配 的页面就用 高级或终极方式
  3. 当然终极方式是最好的,因为这样你可以实现更多复杂的自定义业务逻辑

@yanglichuan
Copy link
Author

谢谢大佬的详细解答

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants