直播軟體開發,同一分類下僅狀態列切換有無特效兩個版本

zhibo系統開發發表於2022-03-03

直播軟體開發,同一分類下僅狀態列切換有無特效兩個版本實現的相關程式碼

1、首先是ViewPager無特效效果

這個是ViewPager定義時最初的切換樣式

部分佈局

<com.google.android.material.tabs.TabLayout
        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"/>
</RelativeLayout>
<androidx.viewpager.widget.ViewPager
    android:id="@+id/record_vp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
public class RecordPagerAdapter extends FragmentPagerAdapter {
    List<Fragment> fragmentList;
    String[]titles = {"介面1","介面2"};
    public RecordPagerAdapter(@NonNull FragmentManager fm, List<Fragment>fragmentList) {
        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<Fragment> 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);
        }
    }
}


以上就是直播軟體開發,同一分類下僅狀態列切換有無特效兩個版本實現的相關程式碼, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2862858/,如需轉載,請註明出處,否則將追究法律責任。

相關文章