一.关于从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等)