安卓学习06

男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述安卓学习06相关的知识,希望能为你提供帮助。


今日学习了底部导航功能。
 
1、独立fragment需要三个独立的fragment,建立三个fragment布局。
安卓学习06

文章图片

2、navigation由于三个fragment直接没有递进关系,所以三个fragment平行即可。
安卓学习06

文章图片

3、menu的设计
安卓学习06

文章图片

  • 菜单中icon可以选择图标。
  • 每个菜单的id要和fragment的id一致。
4、主页面的布局
安卓学习06

文章图片

  • bottomNavigationView属性中的menu选择我们设计的菜单。
  • 上方的是NavHostFragment。
5、主界面的逻辑代码
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】 

    推荐阅读