轻量级前端框架助力开发者提升项目效率与性能
611
2022-10-25
轻量级免声明的 Activity 代理框架
AyoActivityNoManifest
demo apk
1 这是什么?
2 ActivityAttacher的使用
(1) manifest
在gradle里引入:compile 'org.ayo:ayo-attacher:1.0.0'
(2) ActivityAttacher
ActivityAttacher的意义: ActivityAttacher就是附着在上面4个模板Activity里的Activity代理ActivityAttacher中持有一个Activity实例对象,是在onCreate时赋值的ActivityAttacher可以处理Activity中的所有配置和生命周期ActivityAttacher提供的接口,原则上应该完全仿Activity,这一点类似v7源码中的和AppCompactActivity相关的一个delegate类,但不知道这个类是干什么用的
(3) 定义Activity
public class SampleActivity extends AyoActivityAttacher{ public static void start(Context c, boolean takeSystemBar, int lanuchMode, OnResultCallBack callBack){ SimpleBundle sb = new SimpleBundle(); sb.putExtra("takeSystemBar", takeSystemBar); ActivityAttacher.startActivity(c, SampleActivity.class, sb, false, lanuchMode, callBack); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ac_tmpl); }}public class SampleActivity extends AyoActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ac_tmpl); }}
(4) 启动ActivityAttacher
启动方式变成这样:
public static void start(Context c, boolean takeSystemBar, int lanuchMode, OnResultCallBack callBack){ SimpleBundle sb = new SimpleBundle(); sb.putExtra("takeSystemBar", takeSystemBar); ActivityAttacher.startActivity(c, SampleActivity.class, sb, false, lanuchMode, callBack);}
SimpleBundle:功能类似于intent或者bundle,存的是传到下一个Activity的参数 取出参数:boolean takeSystemBar = getIntent().getBooleanExtra("takeSystemBar");这里,在Activity之间传的都是引用,不再需要考虑序列化问题,当然只适用于app单进程内 OnResultCallBack是接收Activity的回传结果 如何回传:getResultCallback().onResult("代替OnActivityReslt和setResult"); finish(); lanuchMode是选择Activity的启动模式,也就是选择模板: ActivityAttacher.LAUNCH_MODE_STANDARDActivityAttacher.LAUNCH_MODE_SINGLE_TASKActivityAttacher.LAUNCH_MODE_SINGLE_TOPActivityAttacher.LAUNCH_MODE_SINGLE_INSTANCE
(5) Activity主题
这里提供了两个主题:AyoTransparentTheme和AyoTheme,没啥特殊的
3 状态栏一体化问题
问题1:颜色设置,可以开启和关闭,分status bar和navigation bar
问题2:是否侵入,可以开启和关闭,和颜色设置不冲突
代码:
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sample_ac_main); //关闭StatusBar和NavigationBar侵入 getAgent().enableSystemBarTakenByContent(false); //给StatusBar和NavigaionBar染色 getAgent().renderSystemBar(Color.parseColor("#55ff0000"), Color.parseColor("#55ff0000"));}
解析: 这里就是对开源代码SystemBarTintManager的简单封装enableSystemBarTakenByContent其实就是设置根布局的android:fitsSystemWindows属性
4 状态保存问题
https://github.com/frankiesardo/icepick
5 其他
关于clipToPadding和clipToChildren:默认都为true http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0317/2613.html
好像和滚动有关,可以上下滚动时,内容是否可以滚动到标题栏里
ListView初始化之后,由于top的50dp的padding,看似顶着标题栏,但往上滚动时,内容就会跑到padding的50dp里,也就能从标题栏看到了(如果标题栏带透明)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~