安卓学习06

Posted 无人i

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓学习06相关的知识,希望对你有一定的参考价值。


今日学习了底部导航功能。

 

1、独立fragment

需要三个独立的fragment,建立三个fragment布局。

2、navigation

由于三个fragment直接没有递进关系,所以三个fragment平行即可。

3、menu的设计

  • 菜单中icon可以选择图标。

  • 每个菜单的id要和fragment的id一致。

4、主页面的布局

  • 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的主要内容,如果未能解决你的问题,请参考以下文章

片段从一开始就没有显示 |安卓工作室

安卓。片段 getActivity() 有时返回 null

linux学习:Nginx--常见功能配置片段与优化-06

保持地图居中无论你在哪里捏缩放安卓

安卓。通过从片段中的按钮调用片段中的方法来关闭片段?

安卓学习06