结合之前几篇笔记的内容,这里从空白开始实现系统自带的BottomNavigation
模板和一些简单的属性动画
实现BottomNavigation
- 新建若干个
Fragment
- 在RES中新建
menu
在Menu中添加Menu-item
,并且为每个item添加文本和图标
注意这里每个itme的ID要和Fragment的ID相同,否则无法导航
- 在RES新建
navigation
,并将Fragment添加到其中,给每个Fragment设置ID,其ID与Menu中的ID一致;
- 配置
Activity
,添加BottomNavigation
和NavHostFragment
,并设置相应的menu和Navigation
- 在
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
后续还会接着写笔记的!!!