男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述安卓学习06相关的知识,希望能为你提供帮助。
今日学习了底部导航功能。
1、独立fragment需要三个独立的fragment,建立三个fragment布局。
文章图片
2、navigation由于三个fragment直接没有递进关系,所以三个fragment平行即可。
文章图片
3、menu的设计
文章图片
- 菜单中icon可以选择图标。
- 每个菜单的id要和fragment的id一致。
文章图片
- bottomNavigationView属性中的menu选择我们设计的菜单。
- 上方的是NavHostFragment。
package com.example.bottomnavigation; ? import androidx.appcompat.app.AppCompatActivity; import androidx.navigation.NavController; import androidx.navigation.Navigation; import androidx.navigation.ui.AppBarConfiguration; import androidx.navigation.ui.NavigationUI; ? import android.os.Bundle; ? import com.google.android.material.bottomnavigation.BottomNavigationView; ? public class MainActivity extends AppCompatActivity { ? @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigationView); NavController navController = Navigation.findNavController(this,R.id.fragment); AppBarConfiguration configuration = new AppBarConfiguration.Builder(bottomNavigationView.getMenu()).build(); NavigationUI.setupActionBarWithNavController(this,navController,configuration); NavigationUI.setupWithNavController(bottomNavigationView,navController); } }
6、各界面的小功能(view的动画)以第一个界面为例做旋转动画
package com.example.bottomnavigation; ? import androidx.lifecycle.ViewModelProviders; ? import android.animation.ObjectAnimator; import android.os.Bundle; ? import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; ? import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; ? public class firstFragment extends Fragment { ? private FirstViewModel mViewModel; private ImageView imageView; public static firstFragment newInstance() { return new firstFragment(); } ? @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.first_fragment, container, false); imageView = view.findViewById(R.id.imageView); return view; } ? @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mViewModel = ViewModelProviders.of(this).get(FirstViewModel.class); final ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(imageView,"rotation",0,0); objectAnimator.setDuration(300); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!objectAnimator.isRunning()){ objectAnimator.setFloatValues(imageView.getRotation(),imageView.getRotation() - 100); objectAnimator.start(); } } }); } ? }
【安卓学习06】
推荐阅读
- Android: Action Bar的使用
- .net core编译时设置不自动生成“netcoreapp3.0”目录
- uni-app文章详情-富文本展示 优雅展示代码块
- 什么是MongoDB分片和最佳实践()
- 从MySQL迁移到MariaDB很容易!
- 推荐下一个项目的前11个开源数据库
- 如何在Ubuntu 18上安装Chromium浏览器()
- 如何安装和基本的MySQL命令示例
- 故障排除(netstat: command not found)