直播软件开发,同一分类下仅状态栏切换有无特效两个版本


直播软件开发,同一分类下仅状态栏切换有无特效两个版本实现的相关代码

1、首先是ViewPager无特效效果

这个是ViewPager定义时最初的切换样式

部分布局


        android:id="@+id/record_tabs"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        app:tabGravity="center"
        app:tabMode="fixed"
        app:tabTextColor="@color/grey_7D7D7D"
        app:tabSelectedTextColor="@color/black"
        app:tabIndicatorColor="@color/black"/>

    android:id="@+id/record_vp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
public class RecordPagerAdapter extends FragmentPagerAdapter {
    List fragmentList;
    String[]titles = {"界面1","界面2"};
    public RecordPagerAdapter(@NonNull FragmentManager fm, ListfragmentList) {
        super(fm);
        this.fragmentList = fragmentList;
    }
    @NonNull
    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }
    @Override
    public int getCount() {
        return fragmentList.size();
    }
    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position];
    }
}
创建两个空白的Fragment 
设置ViewPager加载页面
private void initPager() {
        List fragmentList = new ArrayList<>();
        OutcomeFragment outFrag = new OutcomeFragment(); 
        IncomeFragment inFrag = new IncomeFragment(); 
        fragmentList.add(outFrag);
        fragmentList.add(inFrag);
//        创建适配器
        RecordPagerAdapter pagerAdapter = new RecordPagerAdapter(getSupportFragmentManager(), fragmentList);
//        设置适配器
        viewPager.setAdapter(pagerAdapter);
        //将TabLayout和ViwePager进行关联
        tabLayout.setupWithViewPager(viewPager);
    }

2.自定义ViewPager切换特效效果

public class RotateDownPageTransformer implements ViewPager.PageTransformer
{
    private static final float ROT_MAX = 20.0f;
    private float mRot;
    public void transformPage(View view, float position) {
        if (position < -1) {
            ViewHelper.setRotation(view, 0);
        } else if (position <= 1) {
            if (position < 0) {
                /**
                 * mRot 旋转的角度
                 * 转动的中心(ViewHelper.setPivotX, ViewHelper.setPivotY)
                 */
                mRot = (ROT_MAX * position);
                ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f);
                ViewHelper.setPivotY(view, view.getMeasuredHeight());
                ViewHelper.setRotation(view, mRot);
            } else {
                mRot = (ROT_MAX * position);
                ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f);
                ViewHelper.setPivotY(view, view.getMeasuredHeight());
                ViewHelper.setRotation(view, mRot);
            }
        } else {
            ViewHelper.setRotation(view, 0);
        }
    }
}

以上就是直播软件开发,同一分类下仅状态栏切换有无特效两个版本实现的相关代码, 更多内容欢迎关注之后的文章

相关