【Android】从0开始Android开发-FunClub(一.Navigation的学习与使用)

文章讲述了作者在时隔一年后重新开始Android应用开发的过程,选择通过构建一个追星应用来复习技能。作者介绍了如何使用Navigation组件进行Fragment和Activity间的跳转,详细阐述了添加依赖、设计跳转流程、创建nav_graph、在MainActivity中设置FragmentContainerView以及处理按钮点击事件的方法。计划下一步实现自定义滑动列表功能。
摘要由CSDN通过智能技术生成

一.关于从0开始开发Android

        因为考研隔了一年没有开发过完整应用,全年接触java和c++也只用来学习数据结构和机试的算法题,AndroidStudio的快捷键都变得陌生又熟悉。如果要把一身的本领捡起来,最快的果然还是做个应用吧!

        于是开始了,想到哪里做哪里的愉快旅途(划掉),以自己为客户提出各种需求,开发一款愉快追星的fanclub吧!首先,追星需要获得明星的最新消息(把博文做成list列表时间线),多担也要一键爬墙(主页显示我的担好啦),ta经历的天气、粉丝版聊等等全都要有。大工程啊!!好难开发啊!

1.从跳来跳去的Navigation学起

Navigation能够实现多个Fragment、Activity之间的跳转action,通过bundle在fragment之间传递参数,通过清晰的nav_graph导航视图简化各fragment之间的跳转操作。

使用方法:

1.在gradle中添加navigation依赖,参考官网添加对应版本的依赖,这里我用的是java作为主要开发语言:

// Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"
// Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

2.新建若干个fragment,设计好跳转流程(例如:主页—>副主页->对应内容页),这里我预想可以从主页跳转到爱豆介绍页,再从爱豆介绍页跳转到爱豆最新博文ins等详细页。一一设计好简单的跳转button,就可以设计跳转路线了。

3.在res文件夹中新建navigation的resource directory,并在其中新建navgraph.xml。在design中new destination,将2中新建的所有fragment添加进导航图中。

    将homepageFragment定义为startDestination,并鼠标拖动直接设计跳转action。

app:startDestination="@id/homeFragment

    则会在homefragment处自动生成跳转action的代码:

<action
            android:id="@+id/action_homeFragment_to_memberFragment"
            app:destination="@id/memberFragment" />

4.在mainACTIVITY对应的layout中加入FragmentContainerView。根据布局需求,这里使得长宽match_parent,代入3中设计好的navgraph。

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragmentContainerView"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph" />

5.为fragment的button设置上点击动作,利用Navigation.findNavController(view)的NavController实现跳转功能,(顺带一提android下方返回键可以实现navigateUp()功能,返回上一页面),如下代码所示:

btn_1.setOnClickListener(view -> {
            Navigation.findNavController(view).navigate(R.id.action_aaaFragment_to_bbbFragment);
        });

p.s.button点击事件有多种实现方法:

上述采用的是lambda表达式写法

还有普通的set方法

        btn_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //do sth
            }
        });

利用databinding+viewmodel,为button添加onclick属性的方法:

android:onClick="@{ (view) -> viewModel.onClick(view) }"
    public void onClick(@NonNull final View view) {
        //do sth.
    }

以及Activity中继承 View.OnClickListener的方法:

//1.继承View.OnClickListener接口
public class MActivity extends AppCompatActivity implements View.OnClickListener
//2.对应btn设置点击事件监听器
btn.setOnClickListener(this)
//3.MActivity实现接口方法
     @Override
     public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn:{
                //相应id控件的对应点击动作
                ;
            }
        }
    }

明天目标是——做出美观实用的自定义滑动list列表(预计使用到glide+BottomNavigationView等)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值