XTab使用笔记
一.代码位置
- xlib-XTab
- 测试代码androidxXTester-fragment+tab+viewpager
- 项目中使用非androidx版本XMusic
- 效果图
初衷是整理一个可以快速搭建该效果界面的一个框架,利于后期开发。
二.引用
将JitPack存储库添加到您的构建文件中
将其添加到存储库末尾的root build.gradle中:1
2
3
4
5
6allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}添加依赖项
1
2
3
4dependencies {
...
implementation 'com.github.itemuse:XLib:Tag'
}初始化 Application中init
1
2
3
4
5
6
7import cn.xy.library.XApp;
...
@Override
public void onCreate() {
super.onCreate();
XApp.init(this);
}
三.代码
1 | import android.support.v4.app.Fragment; |
1 | import androidx.appcompat.app.AppCompatActivity; |
使用
- 布局
非androidx:androidx:1
2
3
4
5
6
7
8
9
10
11
12...
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
app:tabGravity="fill"
app:tabMode="fixed"
android:layout_height="wrap_content">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"/>
...1
2
3
4
5
6
7
8
9
10
11
12
13
14
15...
<com.google.android.material.tabs.TabLayout
android:layout_width="match_parent"
app:tabGravity="fill"
app:tabMode="fixed"
android:id="@+id/_tab"
android:layout_height="wrap_content">
</com.google.android.material.tabs.TabLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/_vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
... - activity中添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30private List<Fragment> mFragment;
private List<String> mTitle;
private TabLayout mTabLayout;
private ViewPager mViewPager;
private void initFragment() {
mTabLayout = (TabLayout)findViewById(R.id.playview_tab);
mViewPager = (ViewPager)findViewById(R.id.playview_midd_vp);
mFragment = new ArrayList<>();
mFragment.add(new fragment_00());
mFragment.add(new fragment_11());
mFragment.add(new fragment_22());
mFragment.add(new fragment_33());
mTitle = new ArrayList<>();
mTitle.add("歌曲");
mTitle.add("歌词");
mTitle.add("歌手");
mTitle.add("专辑");
XTab.addTab(mTabLayout,
mViewPager,
mFragment,
mTitle,
getSupportFragmentManager(),
1,
new XTab.onPageSelected() {
@Override
public void onPageSelected(int position) {
}
});
}
- 布局
一些方法的讲解
viewPager中,viewPager.setOffscreenPageLimit(offscreenPageLimit);是设置应保留在页面两侧的页数,以花更少的时间进行布局
经过打印可以,当我设置为2时,启动后前三个fragment走到了onResume完成了预加载1
2
3com.xy.fragment I/fragment_00.java: [ (fragment_00.java:27)#onResume ] execute
com.xy.fragment I/fragment_11.java: [ (fragment_11.java:27)#onResume ] execute
com.xy.fragment I/fragment_22.java: [ (fragment_22.java:28)#onResume ] execute而滑动到第四个时,第一个走了onpause
1
com.xy.fragment I/fragment_00.java: [ (fragment_00.java:39)#onPause ] execute
而关于viewpager的addOnPageChangeListener方法监听中
onPageScrolled是实时的滑动的距离的绘测
1 | /** |
- onPageSelected是当前的页面位置
- onPageScrollStateChanged是滑动状态
1 | /** |
- 在XTab工具类中我仅仅把onPageSelected的position值回传出来
1 | XTab.addTab(mTabLayout, |