Navigation的参数传递和过渡动画

Navigation的参数传递和过渡动画

  • Navigation导航中的参数传递和过渡动画
    • 设计一个文本,通过点击屏幕按钮实现将文本内容传递到指定下一个界面并显示文本
      • 运行项目
      • 项目改编:
    • 自定义动画——Tween Animation

本文为学习类文档,通过学习B站up主longway777的视频,如有侵权,请联系博主进行删除

Navigation导航中的参数传递和过渡动画

设计一个文本,通过点击屏幕按钮实现将文本内容传递到指定下一个界面并显示文本

  1. 创建两个Fragement
    HomeFragement:
    Navigation的参数传递和过渡动画_第1张图片



    

DetailFragement:
Navigation的参数传递和过渡动画_第2张图片




    

  1. 创建资源类my_nav并继承navigation
    Navigation的参数传递和过渡动画_第3张图片

  2. 将my_nav捆绑在Activity上:
    Navigation的参数传递和过渡动画_第4张图片

  3. 设置一个argument
    Navigation的参数传递和过渡动画_第5张图片

  4. 填写传递数据:
    HomeFragement.java:

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        getView().findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                NavController controller = Navigation.findNavController(v);
                controller.navigate(R.id.detailFragment);//传一个目的地或者传一个action效果看上去是一致的,建议用action

            }
        });
    }

DetailFragement.java:

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        String string = getArguments().getString("Name");//获取参数
        TextView textView = getView().findViewById(R.id.textView);
        textView.setText(string);
    }

运行项目

Navigation的参数传递和过渡动画_第6张图片
点击按钮将Jack传递过去:
Navigation的参数传递和过渡动画_第7张图片

项目改编:

首页设置一个编辑框,用户输入信息后点击按钮实现传递数据至第二个界面并显示出来:

  1. 在HomeFragement中添加一个输入框:
    Navigation的参数传递和过渡动画_第8张图片
  2. HomeFragement.java:
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        getView().findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText editText = getView().findViewById(R.id.editText);
                String string = editText.getText().toString();
                if (TextUtils.isEmpty(string)){ //条件判空,显示提示
                    Toast.makeText(getActivity(),"请输入姓名!",Toast.LENGTH_SHORT).show();
                    return;
                }
                Bundle bundle = new Bundle(); //建立bundle用以将数据带过去,并在下面controller中带入bundle
                bundle.putString("my_name",string);

                NavController controller = Navigation.findNavController(v);
                controller.navigate(R.id.action_homeFragment_to_detailFragment,bundle);//传一个目的地或者传一个action效果看上去是一致的,建议用action
            }
        });
    }
  1. DetailFragement.java:
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //String string = getArguments().getString("Name");//获取参数
        String string2 = getArguments().getString("my_name");
        TextView textView = getView().findViewById(R.id.textView);
        textView.setText(string2);
    }
  1. 运行代码:
    Navigation的参数传递和过渡动画_第9张图片
    点击按钮实现传递数据:
    Navigation的参数传递和过渡动画_第10张图片

自定义动画——Tween Animation

举例:
创建一个资源类文件,类型为Animation
Navigation的参数传递和过渡动画_第11张图片



    
    



    
    



    





应用场景中即可完成对应的效果:
Navigation的参数传递和过渡动画_第12张图片

你可能感兴趣的:(Navigation的参数传递和过渡动画)