当前位置: 首页 > 知识库问答 >
问题:

物料容器转换转换在背压机上不起作用

邬承悦
2023-03-14

我在这里读到了添加到材料设计库中的新运动过渡https://material.io/develop/android/theming/motion.并想为我的应用程序实现同样的功能。

我的应用是销售产品的电子商务应用。所以我想在点击回收器视图中的产品导航到产品详细信息时实现容器转换。我浏览了很多教程,这些教程主要是在kotlin中,然后在我的java代码中使用,现在从产品列表过渡到详细信息工作,但当我单击“上一步”时,它不会显示像“收缩到回收项目”这样的过渡。不知道我错过了什么。仅供参考,我正在为应用程序使用导航架构组件。

这是我实现的代码

ProductListFragment。JAVA

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setExitTransition(new Hold());
    setReenterTransition(new Hold());
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {

    postponeEnterTransition();
    ViewGroup viewGroup = (ViewGroup) view.getParent();
    viewGroup
            .getViewTreeObserver()
            .addOnPreDrawListener(() -> {
                startPostponedEnterTransition();
                return true;
            });
    super.onViewCreated(view, savedInstanceState);
}

ProductAdapter。JAVA

public void onProductClick(View view) {
        FragmentNavigator.Extras.Builder extras = new FragmentNavigator.Extras.Builder();
        binding.container.setTransitionName(products.get(position).getProductId());
        extras.addSharedElement(binding.container,binding.container.getTransitionName());
        FragmentNavigator.Extras build = extras.build();

        NavController navController = Navigation.findNavController(activity, R.id.nav_host_fragment);
        navController.navigate(ProductListDirections.actionNavHomeToNavProductDetails(products.get(position).getProductId()),build);
    }

产品Details.java

 @Override
public void onCreate(@Nullable Bundle savedInstanceState) {

    MaterialContainerTransform transform = new MaterialContainerTransform();
    transform.setDuration(300);
    transform.setFadeMode(MaterialContainerTransform.FADE_MODE_CROSS);
    transform.setElevationShadowEnabled(true);
    transform.setScrimColor(Color.TRANSPARENT);
    transform.setContainerColor(Color.WHITE);
    //transform.setAllContainerColors(R.attr.color);
    postponeEnterTransition();
    setSharedElementEnterTransition(transform);
    super.onCreate(savedInstanceState);
}

 @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    binding.detailsContainer.setTransitionName(ProductDetailsFragmentArgs.fromBundle(getArguments()).getProductId());

}

 @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
 mViewModel.observeProductDetails().observe(getViewLifecycleOwner(), new Observer<ProductDetails>() {
        @Override
        public void onChanged(ProductDetails productDetails) {
           
            startPostponedEnterTransition();
        }
    });
}

我错过什么了吗?请帮帮我。

共有1个答案

巫马善
2023-03-14

当谈到Android转换时,我仍然是一个蚱蜢,但我确实遇到了Chris Banes的这篇文章,他说如果你使用FragmentManager,你需要添加

.setReorderingAllowed(true)

在片段事务开始时,如果要推迟转换。

希望这能指引你正确的方向...

 类似资料:
  • 我正在尝试添加一个css过渡,因此当用户悬停在div上时,后台将像这样放大https://codepen.io/mrsalami/pen/eplzme。但是,转换延迟不起作用。 我得HTML: 我的CSS: 我的问题的代码是https://codepen.io/mrsalami/pen/wkjrjr

  • 问题内容: 我试图通过将其旋转10度来变换菜单项。我的CSS在Firefox中可以使用,但是我无法在Chrome和Safari中复制效果。我知道IE不支持CSS3属性,所以这不是问题。 我使用以下CSS: 有人可以建议我要去哪里错吗? 谢谢。 问题答案: 这只是一个有根据的猜测,而没有看到其余的HTML / CSS: 您申请了还是申请了?如果没有,请尝试。 否则,请尝试应用CSS3转换规则。

  • 问题内容: 这是我的xml文档。我只想使用xml签名对userID部分进行签名。我正在使用xpath转换来选择该特定元素。 我正在使用以下代码添加转换: 但是我得到以下内容: 因此,我尝试删除xmlns部分。 但是它在整个文档上签名并给出以下消息: 问题是什么? 编辑 正如@JörnHorstmann所说,消息只是一条日志或类似的东西。现在的问题是,即使在给xpath查询后,整个文档也会被签名,而

  • 问题内容: 我在使转换原点在Firefox(v.18 +,未测试的其他版本)中工作时遇到问题。Webkit浏览器可以正常工作。我正在尝试将原点设置为组的中心,但到目前为止我没有尝试过。 这是代码: 问题答案: 我试图使用CSS过渡围绕其中心点旋转一个简单的齿轮svg图形。我和Firefox有同样的问题;转换原点似乎没有任何效果。 解决方案是绘制原始svg形状,以使其中心位于坐标0、0处: 然后在其

  • 在一个Apache NIFI数据流中,我试图将一个日期从MM-dd-yyyy转换成yyyy-MM-DD(MySQL将接受的默认日期格式)。 在带有DSL“链”的JoltTransformJSON 1.15.0处理器的NIFI高级编辑器中,我输入了: 输入Json: 转换Jolt脚本: 结果: 我没有收到任何语法错误。似乎颠簸转型并没有改变任何事情。为什么生日没有变形?