首页后端开发JAVAViewPager2使用笔记(viewpager使用方法)

ViewPager2使用笔记(viewpager使用方法)

时间2023-03-24 17:23:11发布访客分类JAVA浏览1290
导读:一.代码位置(阅读原文 XTester-fragment+tab+viewpager2二.引用implementation 'com.google.android.material:material:1.2.1' implementatio...

一.代码位置(阅读原文)

XTester-fragment+tab+viewpager2

二.引用

implementation 'com.google.android.material:material:1.2.1'
implementation "androidx.viewpager2:viewpager2:1.0.0"

三.实现

基本效果

  ?xml version="1.0" encoding="utf-8"?>
    
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    

    androidx.viewpager.widget.ViewPager
        android:id="@+id/_vp"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />
    
/LinearLayout>
    

java

mViewPager = findViewById(R.id.viewpager2);
    
mAdapter = new ViewPager2Adapter(this);
    
mViewPager.setAdapter(mAdapter);
    
mViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
     //设置ViewPager2滑动方向  ORIENTATION_VERTICAL
fragments.add(new Fragment1(mViewPager));
    
fragments.add(new Fragment2(mViewPager));

FragmentStateAdapter

class ViewPager2Adapter extends FragmentStateAdapter {

    public ViewPager2Adapter(FragmentActivity fragmentActivity) {
    
        super(fragmentActivity);

    }


    @Override
    public Fragment createFragment(int position) {
    
        return fragments.get(position);

    }


    @Override
    public int getItemCount() {
    
        return fragments.size();

    }

}

  • 纵向效果图
  • 根据PageTransformer做渐变效果
    • ViewPager2.PageTransformer
 public class MyPageTransformer implements ViewPager2.PageTransformer {
    

    private static final float ROT_MAX = 20.0f;
    
    private float mRot;
    
    private static float MIN_SCALE = 0.75f;
    
    private static float MIN_ALPHA = 0.5f;


    /**
     * @param view     滑动中的那个view
     * @param position
     */
    public void transformPage(View view, float position) {
    

        int pageWidth = view.getWidth();

        if (position  -1) {
     // [-Infinity,-1)//This page is way off-screen to the left.
            view.setAlpha(0);

        }
 else if (position = 0) {
     // [-1,0]Use //the default slide transition when moving to the left page
            view.setAlpha(1);
    
            view.setTranslationX(0);
    
            view.setScaleX(1);
    
            view.setScaleY(1);

        }
 else if (position = 1) {
     // (0,1]// Fade the page out.
            view.setAlpha(1 - position);
    
            // Counteract the default slide transition
            view.setTranslationX(pageWidth * -position);
    
            // Scale the page down (between MIN_SCALE and 1)
            float scaleFactor = MIN_SCALE + (1 - MIN_SCALE)
                    * (1 - Math.abs(position));
    
            view.setScaleX(scaleFactor);
    
            view.setScaleY(scaleFactor);

        }
 else {
     // (1,+Infinity]
            // This page is way off-screen to the right.
            view.setAlpha(0);

        }

    }

}
    

activity中设置

mViewPager.setPageTransformer(new MyPageTransformer());
    

  • 纵向效果图
  • 与Tab联动
    • xml
 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>
    

abLayoutMediator

private TabLayoutMediator mediator;
    
private ListString>
     mTitle;
    
TabLayout mTabLayout;
    
    ...
        mTitle = new ArrayList>
    ();
    
        mTitle.add("播放界面");
    
        mTitle.add("歌曲界面");
    
    mTabLayout = (TabLayout)findViewById(R.id._tab);

       mediator = new TabLayoutMediator(mTabLayout, mViewPager, new TabLayoutMediator.TabConfigurationStrategy() {

        @Override
        public void onConfigureTab(TabLayout.Tab tab, int position) {
    
            TextView tabView = new TextView(Activity.this);
    
            tabView.setText(mTitle.get(position));
    
            tabView.setTextColor(getColor(R.color.design_default_color_primary));
    
            tab.setCustomView(tabView);

        }

    }
    );
    
    mediator.attach();
    

效果图

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

javaxmlfragment

若转载请注明出处: ViewPager2使用笔记(viewpager使用方法)
本文地址: https://pptw.com/jishu/136.html
Java 修饰符和运算符 Laravel 事件

游客 回复需填写必要信息