在一对一直播源码开发中,个人主页滑动过程中,视图展现形式多以折叠头部悬浮导航栏和标题栏的方式呈现。为了实现此功能,我们用到了android5.0推出的新布局:CoordinatorLayout,CoordinatorLayout是一个直接继承自ViewGroup,并实现NestedScrollingParent接口的控件,它主要的功能,就是协调其内部的各个子控件之间的状态关系。下面说下具体实现方式。
首先在使用之前,需要在build.gradle文件中,添加对其的依赖:
"com.android.support:design:27.1.0"
接着是使用CoordinatorLayout的布局文件,其中RecycleView和ViewPager用来实现导航栏的滑动切换。
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginBottom="50dp"
>
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
>
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:collapsedTitleGravity="center_horizontal"
app:contentScrim="@color/transparent"
app:expandedTitleTextAppearance="@style/transparentText"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
>
<!--头部内容-->
<LinearLayout
android:id="@+id/head_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
</LinearLayout>
<!--标题栏-->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@color/white"
android:contentInsetLeft="0dp"
android:minHeight="48dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
app:layout_collapseMode="pin"
app:navigationIcon="@mipmap/icon_back3"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>
<!--导航栏-->
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:background="@color/white"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
</android.support.design.widget.CoordinatorLayout>
接下来是在一对一直播源码的个人主页的实现类中,设置标题栏标题,实现导航栏内容。部分代码如下。
先对相关控件进行定义,通过findViewById获取到对应控件,
private Toolbar mToolbar;
private AppBarLayout mAppBarLayout;
private RecyclerView mRecyclerView;
private ViewPager mViewPager;
设置标题栏标题:
mToolbar.setTitle(title);
setSupportActionBar(mToolbar);
通过横向的RecycleView和ViewPager配合实现导航栏:
mRecyclerView.setLayoutManager(new GridLayoutManager(mContext, 2, GridLayoutManager.VERTICAL, false)); mRecyclerView.setAdapter(mTitleAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mRecyclerView.scrollToPosition(position);
changePage(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
以上是我们在一对一直播源码中实现个人主页折叠头部内容悬浮导航栏和标题栏的大体思路和部分代码,如果您想获得更多关于直播、一对一直播的源码,请关注我们的账号,以后我们会更新更多关于直播类APP功能实现类的源码文章。
声明:本文为原创内容,转载请注明出处及作者.