MaterialContainerTransform容器转换的使用
这个类的作用是让两个页面之间转跳附带动画Activity之间转跳和Fragment之间转跳不太一样Fragment转跳Activity和Activity之间转跳是一样的这里主要讲Fragment转跳Activity的方法和细节首先在Fragment中添加容器变换的开始控件实现点击事件card_.setOnClickListener(this::toActivity);转跳方法private voi
·
这个类的作用是让两个页面之间转跳附带动画
Activity之间转跳和Fragment之间转跳不太一样
Fragment转跳Activity和Activity之间转跳是一样的
这里主要讲Fragment转跳Activity的方法和细节
首先在Fragment中添加容器变换的开始控件
实现点击事件
card_.setOnClickListener(this::toActivity);
转跳方法
private void toActivity(View sharedElement) {
Intent intent = new Intent(getContext(), TimeTableAcivity.class);
ActivityOptions options =
ActivityOptions.makeSceneTransitionAnimation(getActivity(), sharedElement, "shared_element_end_root");
startActivity(intent, options.toBundle());
}
接着在要转跳的Activity中的Window中请求功能
而且必须在添加内容之前调用哦
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
findViewById(android.R.id.content).setTransitionName("shared_element_end_root");
setEnterSharedElementCallback(new MaterialContainerTransformSharedElementCallback());
getWindow().setSharedElementEnterTransition(buildContainerTransform(true));
getWindow().setSharedElementReturnTransition(buildContainerTransform(false));
super.onCreate(savedInstanceState);
}
private MaterialContainerTransform buildContainerTransform(boolean entering) {
MaterialContainerTransform transform = new MaterialContainerTransform(this, entering);
transform.setAllContainerColors(
MaterialColors.getColor(findViewById(android.R.id.content), R.attr.colorSurface));
transform.addTarget(android.R.id.content);
//设置动画持续时间(毫秒)
transform.setDuration(666);
return transform;
}
最后在fragment的Activity的window也要请求功能,否则从Activity返回后,开始容器的控件会闪烁
在fragment的Activity加上即可
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
setExitSharedElementCallback(new MaterialContainerTransformSharedElementCallback());
getWindow().setSharedElementsUseOverlay(false);
super.onCreate(savedInstanceState);
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)