跳转到内容
Go back

安卓开发流程-2025-4-26

Edit page

正常增加模块功能的步骤(针对于mvvm的app,以谷歌模板为例)


✅ 步骤一:确认你的阅读器项目的结构

你的项目现在应该是这种结构:

com.example.myapplication1
├── MainActivity
├── ui
│   ├── reader
│   │   ├── ReaderFragment
│   │   ├── ReaderViewModel
│   └── (其他...)
├── data
│   ├── Book.java
│   ├── Chapter.java
│   └── ...
└── utils
    └── TxtFileParser.java

GalleryFragmentSlideshowFragment一般在:

com.example.myapplication1.ui.gallery.GalleryFragment
com.example.myapplication1.ui.slideshow.SlideshowFragment

如果你的阅读器项目没有 galleryslideshow 目录, 直接复制(或者手动新建)这两个 Fragment 和它们的布局文件。

比如:


✅ 步骤三:在 navigation_graph.xml 中注册两个 Fragment

如果你项目是用 Navigation Component(导航图), 那么打开你的 res/navigation/nav_graph.xml, 手动加上 GalleryFragmentSlideshowFragment,像这样:

<fragment
    android:id="@+id/nav_gallery"
    android:name="com.example.myapplication1.ui.gallery.GalleryFragment"
    android:label="Gallery"
    tools:layout="@layout/fragment_gallery" />
    
<fragment
    android:id="@+id/nav_slideshow"
    android:name="com.example.myapplication1.ui.slideshow.SlideshowFragment"
    android:label="Slideshow"
    tools:layout="@layout/fragment_slideshow" />

✅ 这样导航图里面就有了 Gallery 和 Slideshow。


✅ 步骤四:在 drawer_menu.xml 加入菜单项(让侧边栏能跳转)

打开你的 res/menu/activity_main_drawer.xml, 加上对应的菜单按钮,比如:

<item
    android:id="@+id/nav_gallery"
    android:icon="@drawable/ic_menu_gallery"
    android:title="Gallery" />
<item
    android:id="@+id/nav_slideshow"
    android:icon="@drawable/ic_menu_slideshow"
    android:title="Slideshow" />

✅ 这样,点开抽屉就能看到这两个按钮。


✅ 步骤五:在 MainActivity 里自动处理跳转(通常已经有了)

如果你的 MainActivity 是标准模板(用 NavigationUI 自动绑定菜单), 通常像这样:

NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(binding.navView, navController);

那么只要你在 navigation_graph.xmlmenu 里面配置好了, 点击菜单项就会自动跳转GalleryFragmentSlideshowFragment了。

✅ 无需额外代码!


总结 🔥

要做的事描述
1复制 GalleryFragmentSlideshowFragment 代码和布局
2把 Fragment 注册到 nav_graph.xml
3drawer_menu.xml 加菜单按钮
4确认 MainActivity 已绑定 NavController

搞定之后,你的阅读器项目就拥有:阅读功能 + 画廊 + 幻灯片,而且切换自然顺滑!


安卓开发的组成MVVM怎么用


📱 安卓 App 开发的基本组成

一个安卓 App,最基础的组成部分是:

组件作用举例
Activity一个屏幕登录界面、主页
FragmentActivity 的小模块,页面的一部分列表、详情页
ViewUI 组件Button、TextView、RecyclerView
ViewModel管理界面数据(MVVM的V+VM桥梁)保存输入的内容、加载网络数据
LiveData可观察的数据监听数据变化,自动更新界面
Repository数据仓库(负责取数据)读数据库、网络请求
Room安卓内置数据库(SQLite封装)存用户信息、历史记录
Navigation页面跳转组件从登录页跳到首页

还有别的,比如 Service、BroadcastReceiver,但平时用得最多的就是上面这些。


📐 什么是 MVVM?为什么用它?

MVVM =

🔵 为什么用 MVVM?


🛠️ MVVM在安卓怎么使用?

超简单,我分成 3 步告诉你:


第1步:View层(比如 Fragment / Activity)

// 绑定ViewModel
ReaderViewModel viewModel = new ViewModelProvider(this).get(ReaderViewModel.class);

// 观察数据
viewModel.getCurrentBook().observe(getViewLifecycleOwner(), book -> {
    textViewTitle.setText(book.getTitle());
});

第2步:ViewModel层(ReaderViewModel)

public class ReaderViewModel extends AndroidViewModel {
    private final MutableLiveData<Book> currentBook = new MutableLiveData<>();

    public LiveData<Book> getCurrentBook() {
        return currentBook;
    }

    public void loadBook(String uriString) {
        // 从数据库或文件中加载
        Book book = new Book("我的书", uriString);
        currentBook.postValue(book); // 自动通知界面
    }
}

第3步:Model层(数据层)

@Entity
public class Book {
    @PrimaryKey(autoGenerate = true)
    private int id;
    private String title;
    private String uri;
    // getter / setter...
}

✨ 一个小总结:MVVM整体流动

[用户操作界面] --> 通知 ViewModel
[ViewModel] --> 拿到数据 --> 用LiveData通知 View
[View] --> 自动更新UI

一条链路就这么简单!


🌟 小举例(你的项目里的应用)

比如你在阅读器项目里:

例子
ViewReaderFragment 展示章节标题、阅读内容
ViewModelReaderViewModel 负责加载 Book、章节列表、记录进度
ModelBook, Chapter, 还有 BookDao(数据库操作)

你ReaderFragment用ViewModel拿数据,显示到界面上。数据库用Room管理Book和Chapter,不直接操作数据库。


🚀 小彩蛋:为什么用 LiveData?

因为它感知生命周期(Activity/Fragment消失就不再更新了), 可以防止内存泄漏,比直接写回调接口安全得多!


要不要我顺便给你画一个ReaderFragment + ReaderViewModel 的MVVM流程图? 看一眼就明白怎么串起来的!📈

要的话告诉我!⚡ (我还能教你怎么一键用 DataBinding,让界面直接绑定数据,不用 findViewById,超酷的~)要继续吗?👀


Edit page
Share this post on:

Previous Post
安卓开发-2025-4-27
Next Post
安卓开发2025-4-23