Android MVVM框架搭建(五)Navigation + Fragment + BottomNavigationView

.fallback(R.drawable.wallpaper_bg) //url为空的时候,显示的图片

.error(R.mipmap.ic_loading_failed);//图片加载失败后,显示的图片

将这个值配置进去,如下图所示:

在这里插入图片描述

下面我们运行一下看是什么效果。

在这里插入图片描述

效果还可以的,下面进入主页面的代码编写。

五、主页面


当到了每日壁纸页面时,我们需要再提供一个入口可以进入下一个页面,现在的每日壁纸页面不能算是真正意义上的主页面,因此我们写一个入口,可以在MainActivity中增加一个浮动按钮,页面上下滑动时控制按钮的显示和消失。下面在activity_main.xml中增加如下布局代码:

<com.google.android.material.floatingactionbutton.FloatingActionButton

android:id=“@+id/fab_home”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_gravity=“end|bottom”

android:layout_margin=“20dp”

android:background=“@color/purple_500”

android:onClick=“toHome”

android:src=“@mipmap/ic_home”

app:backgroundTint=“@color/purple_500”

app:fabSize=“auto”

tools:ignore=“UsingOnClickInXml”

android:contentDescription=“主页” />

添加的位置如下,这里的图标到我的源码里拿就好,白色的放出来也看不见。

在这里插入图片描述

下面回到MainActivity中,继承BaseActivity,在initView方法中增加如下代码:

//页面上下滑动监听

dataBinding.scrollView.setOnScrollChangeListener((NestedScrollView.OnScrollChangeListener) (v, scrollX, scrollY, oldScrollX, oldScrollY) -> {

if (scrollY > oldScrollY) {

//上滑

dataBinding.fabHome.hide();

} else {

//下滑

dataBinding.fabHome.show();

}

});

然后也增加一个方法,当点击时跳转到HomeActivity,我们将在这个HomeActivity中显示Fragment,现在还没有,下面会创建的。

public void toHome(View view) {

jumpActivity(HomeActivity.class);

}

代码添加位置如下图所示:

在这里插入图片描述

下面在activity包下创建一个HomeActivity,对应的布局是activity_home.xml,在改动之前我们先做好准备的工作。

六、Navigation使用


在res包下新建一个navigation包,包下新建一个nav_graph.xml,里面的代码如下:

<?xml version="1.0" encoding="utf-8"?>

<navigation xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:app=“http://schemas.android.com/apk/res-auto”

xmlns:tools=“http://schemas.android.com/tools”

android:id=“@+id/nav_graph”

app:startDestination=“@id/news_fragment”>

<fragment

android:id=“@+id/news_fragment”

android:name=“com.llw.mvvm.ui.fragment.NewsFragment”

android:label=“news_fragment”

tools:layout=“@layout/news_fragment” />

<fragment

android:id=“@+id/video_fragment”

android:name=“com.llw.mvvm.ui.fragment.VideoFragment”

android:label=“video_fragment”

tools:layout=“@layout/video_fragment” />

这里就是将Fragment配置到Navigation中,app:startDestination表示显示的第一个Fragment。那么这一步就完成了,下面是另一个操作,就是通过点击底部导航栏菜单去进行Fragment的切换。我们在res下新建一个menu包,包下新建一个navigation_menu.xml,里面的代码如下:

<?xml version="1.0" encoding="utf-8"?>

<item

android:id=“@+id/news_fragment”

android:icon=“@mipmap/ic_hot_news”

android:title=“新闻” />

<item

android:id=“@+id/video_fragment”

android:icon=“@mipmap/ic_hot_video”

android:title=“视频” />

这里有两个图标,同样是白色的。

在这里插入图片描述

下面我们回到activity_home.xml中,里面的代码如下:

<?xml version="1.0" encoding="utf-8"?>

<layout xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:app=“http://schemas.android.com/apk/res-auto”

xmlns:tools=“http://schemas.android.com/tools”>

<RelativeLayout

android:layout_width=“match_parent”

android:layout_height=“match_parent”

tools:context=“.ui.activity.HomeActivity”>

<com.google.android.material.appbar.MaterialToolbar

android:id=“@+id/toolbar”

android:layout_width=“match_parent”

android:layout_height=“?attr/actionBarSize”

android:background=“@color/purple_500”>

<TextView

android:id=“@+id/tv_title”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_gravity=“center”

android:text=“头条新闻”

android:textColor=“@color/white”

android:textSize=“18sp”

android:textStyle=“bold” />

</com.google.android.material.appbar.MaterialToolbar>

<fragment

android:id=“@+id/nav_host_fragment”

android:name=“androidx.navigation.fragment.NavHostFragment”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:layout_above=“@+id/bottom_navigation”

android:layout_below=“@+id/toolbar”

app:navGraph=“@navigation/nav_graph” />

<com.google.android.material.bottomnavigation.BottomNavigationView

android:id=“@+id/bottom_navigation”

android:layout_width=“match_parent”

android:layout_height=“?attr/actionBarSize”

android:layout_alignParentBottom=“true”

android:background=“#FFF”

app:menu=“@menu/navigation_menu” />

这里分为三个部分,一个是标题栏、一个是装载Fragment的容器,另一个是控制Fragment切换的。

下面我们进入到HomeActivity页面,修改代码如下:

public class HomeActivity extends BaseActivity {

private ActivityHomeBinding binding;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

binding = DataBindingUtil.setContentView(this, R.layout.activity_home);

initView();

}

/**

  • 初始化

*/

private void initView() {

//获取navController

NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);

binding.bottomNavigation.setOnNavigationItemSelectedListener(item -> {

switch (item.getItemId()) {

case R.id.news_fragment:

binding.tvTitle.setText(“头条新闻”);

navController.navigate(R.id.news_fragment);

break;

case R.id.video_fragment:

binding.tvTitle.setText(“热门视频”);

navController.navigate(R.id.video_fragment);

break;

default:

}

return true;

});

}

}

下面在fragment包下创建一个BaseFragment,里面的代码如下:

public class BaseFragment extends Fragment {

protected AppCompatActivity context;

@Override

public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

return super.onCreateView(inflater, container, savedInstanceState);

}

@Override

public void onViewCrea

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android MVVM框架搭建需要使用Java语言。MVVM框架是一种基于模型-视图-视图模型的设计模式,它可以帮助开发者更好地组织和管理Android应用程序的代码。在搭建MVVM框架时,需要使用一些常用的开源框架,如Data Binding、LiveData、ViewModel等。同时,还需要了解一些基本的Android开发知识和Java语言的基础知识。搭建MVVM框架需要一定的技术水平和经验,但是它可以提高应用程序的可维护性和可扩展性,让开发者更加高效地开发Android应用程序。 ### 回答2: 在Android开发过程中,MVVM框架已经成为了一种非常流行的设计模式,因为它能够很好地解决传统的MVC模式中存在的问题。这篇文章将着重讲解如何使用Java来构建MVVM框架MVVM框架主要由三个部分组成:View、ViewModel和Model。其中,View指的是用户界面;ViewModel则是View和Model之间的中间层,它包含View所需的数据和业务逻辑;而Model则是数据层,负责从数据源中获取和管理数据。 在Java中构建MVVM框架,可以使用以下几个关键技术: 1. Data Binding:Data Binding是一种新兴的技术,可以轻松地将数据绑定到用户界面上。在Android中,Data Binding库已经成为了MVVM框架构建中不可少的一部分。 2. LiveData:LiveData是Jetpack组件库中的一部分,它是用于构建响应式应用程序的一种强大的工具,也是MVVM模式的关键组成部分。LiveData可以监听数据源中的更改,并在数据发生变化时通知ViewModel。 3. ViewModel:ViewModel是MVVM中的重要组成部分,主要用于保存状态、管理数据和处理业务逻辑。它允许View对Model进行观察,从而实现MVVM框架的完整性和数据驱动。 4. RxJava:RxJava是一种Reactive编程框架,可以用于处理异步事件流,并在应用程序中实现非阻塞的、响应式编程。RxJava可以与MVVM框架结合使用,使架构更加灵活和响应。 搭建MVVM框架的过程中,首先需要创建View、ViewModel和Model三个关键组件。ViewModel将负责将Model的数据更新到View上,并处理业务逻辑。此外,使用Data Binding和LiveData建立数据流,实现双向数据绑定,保持ViewModel和View的同步。 最终,使用RxJava将ViewModel和View解耦,实现响应性和灵活性。在整个MVVM框架中,使用Java构建时需要注意的重要细节包括内存泄漏问题、持久性存储问题等等,尽可能地在代码编写时去考虑这些问题,以确保框架的可靠性和稳定性。 总而言之,使用Java搭建MVVM框架需要一定的技术积累和编码能力,但这种框架Android开发中已经被广泛应用,相信有机会成为您的一个不错的选择。 ### 回答3: MVVM是Model-View-ViewModel的缩写,是一种软件架构模式。在安卓应用开发中,我们可以利用MVVM框架搭建Java开发项目,实现数据和用户交互分离,让代码更加清晰易懂,可读性更高。 MVVM架构中,Model代表实体模型,View代表图形界面,ViewModel作为桥梁连接Model和View,负责将Model转化成View的形式,以及监听View的变化反向更新Model。 在搭建Android MVVM框架时,我们需要先定义布局文件,将View的控件和ViewModel关联。然后定义ViewModel类,在类中添加模型数据和业务逻辑。最后,在Activity或Fragment中实现ViewModel的数据绑定和监听,将数据和页面连接起来。 在Java开发中,我们可以利用一些主流的MVVM框架,例如Google官方提供的Android Architecture Components框架,它包含LiveData、ViewModel、Room和DataBinding四个组件,能够快速搭建MVVM架构,实现组件之间的数据通信和交互。 除此之外,还有Databinding框架,它可以在布局文件中直接绑定数据,省去了一些繁琐的代码,但是需要一定的学习成本。 总而言之,MVVM框架搭建Java项目是非常有利于提高代码可维护性和可读性,通过桥梁连接View与Model,让开发更加高效。不同的情况需要使用不同的框架,开发者可以根据自己的需求进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值