Jetpack学习笔记(五):BottomNavigation和属性动画

结合之前几篇笔记的内容,这里从空白开始实现系统自带的BottomNavigation模板和一些简单的属性动画

实现BottomNavigation

  • 新建若干个Fragment
  • 在RES中新建menu
    Jetpack学习笔记(五):BottomNavigation和属性动画_第1张图片
    在Menu中添加Menu-item,并且为每个item添加文本和图标
    Jetpack学习笔记(五):BottomNavigation和属性动画_第2张图片

注意这里每个itme的ID要和Fragment的ID相同,否则无法导航

  • 在RES新建navigation,并将Fragment添加到其中,给每个Fragment设置ID,其ID与Menu中的ID一致;
    Jetpack学习笔记(五):BottomNavigation和属性动画_第3张图片
  • 配置Activity,添加BottomNavigationNavHostFragment,并设置相应的menu和Navigation
    Jetpack学习笔记(五):BottomNavigation和属性动画_第4张图片
    Jetpack学习笔记(五):BottomNavigation和属性动画_第5张图片
  • Activity中调用导航
//获取导航控制
        NavController controller= Navigation.findNavController(this,R.id.fragment);
        //配置底部导航   用导航组来构建一个工具条
        AppBarConfiguration configuration=new AppBarConfiguration.Builder(menu.getMenu()).build();

        //为导航设置工具条  参数 ——  活动,导航控制器,工具条
        NavigationUI.setupActionBarWithNavController(this,controller,configuration);
        //绑定底部菜单与导航
        NavigationUI.setupWithNavController(menu,controller);

属性动画

1、实例化ObjectAnimator对象

三个参数分别为:动画的组件对象动画的属性(旋转rotation、移动X/Y、缩放scaleX/Y、透明度Alpha等)、动画关键帧

ObjectAnimator animator=ObjectAnimator.ofFloat(imageView,"Alpha",0,0);

使用setDuration()方法设置动画时长(毫秒)

animator.setDuration(500);

2、设置关键帧并启动

使用setFloatValues()方法传入关键帧(浮点型)参数,分别为起始、结束关键帧;

animator.setFloatValues(imageView.getAlpha(),imageView.getAlpha()+0.2f);

调用start()方法启动动画

 animator.start();

isRunning()方法可以判断动画是否正在执行;

3、一个点击随机移动的案例

绑定图像

ImageView imageView=view.findViewById(R.id.imageView);

设置属性动画

final ObjectAnimator animator=ObjectAnimator.ofFloat(imageView,"X",0,0);
        animator.setDuration(500);

添加点击监听
Randome.nextBoolean()可睡觉返回一个boolean值,使用三目运算符赋值向左100或向右100像素;
使用animator.isRunning判断动画是否在执行,如果在执行就取消触发,否则会叠加执行;

 imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!animator.isRunning()){
                    //随机生成一个Boolean
                    float yd=new Random().nextBoolean() ?100:-100;
                    animator.setFloatValues(imageView.getX(),imageView.getX()+yd);
                    animator.start();
                }
            }
        });

所有的笔记测试代码已经上传了GitHub,可以一起交流学习鸭!
点击跳转GitHub
后续还会接着写笔记的!!!

你可能感兴趣的:(安卓,移动开发,java)