非常容易学的android笔记3
RecyclerView, nav menu, 滑动窗口, 以及nav drawer菜单, PagerAdapter新版中应用
up button
就是在Order Activity中加个父类,就是回退回倒哪个activity
AndroidManifest.xml
<activity android:name="com.example.android.droidcafeinput.OrderActivity"
android:label="Order Activity"
android:parentActivityName=".MainActivity">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
☕☕
滑动窗口
超级无语,又是一个改变很多的,就安卓官网的教程,还不更新?
activity_main.xml
4个元素 就是这样,滑动窗口主要靠TabLayout 和 ViewPages2 实现
<RelationLayout
<androidx.appcompat.widget.Toolbar
<com.google.android.material.tabs.TabLayout
<androidx.viewpager2.widget.ViewPager2
</RelativeLayout>
layout中加入三个fragment页面,其实就是滑动的3个窗口
右键,new 一个 Fragment
在layout下面,加入一些 TextView,区分三个不同文字。
对应的就是三个相关的Fragment class
删掉乱起八糟的,就剩一个 onCreateView 就好
public class TabFragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_home, container, false);
}
}
滑动窗口的适配器, 用 FragmentStateAdapter
public class PagerAdapter extends FragmentStateAdapter {
// FragmentManager 后面主程序中有用,
public PagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
super(fragmentManager, lifecycle);
}
// 表示几个窗口
@Override
public int getItemCount() {
return 3;
}
// 对应的位置
@NonNull
@Override
public Fragment createFragment(int position) {
switch (position) {
case 1: return new TabFragment2();
case 2: return new TabFragment3();
default: return new TabFragment1();
}
}
}
主程序
-
置入三元素:ViewPager2, TabLayout, PagerAdapter
-
findViewById(layout, viewpages2)
-
用FragmentManager链接PagerAdapter
-
viewPage2.setAdapter()
-
tablayout,把按标题倒哪个窗口的功能实现好–tabs.addTab(tabs.newTab().setText(R.string.tab_label1));
-
tablayout的互动功能,主要是改下下面的方法
tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { viewPager.setCurrentItem(tab.getPosition()); }
-
链接 ViewPager2滑动监听viewPager.registerOnPageChangeCallback()
public class MainActivity extends AppCompatActivity {
// 置入三元素
ViewPager2 viewPager;
TabLayout tabs;
PagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabLayout tabs = findViewById(R.id.tab_layout);
viewPager = findViewById(R.id.view_pager);
FragmentManager fragmentManager = getSupportFragmentManager();
adapter = new PagerAdapter(fragmentManager,getLifecycle());
viewPager.setAdapter(adapter);
tabs.addTab(tabs.newTab().setText(R.string.tab_label1));
tabs.addTab(tabs.newTab().setText(R.string.tab_label2));
tabs.addTab(tabs.newTab().setText(R.string.tab_label3));
tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
tabs.selectTab(tabs.getTabAt(position));
}
});
}
}
完成