一对一直播源码中个人主页折叠悬浮效果的实现方法

在一对一直播源码开发中,个人主页滑动过程中,视图展现形式多以折叠头部悬浮导航栏和标题栏的方式呈现。为了实现此功能,我们用到了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功能实现类的源码文章。
声明:本文为原创内容,转载请注明出处及作者.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值