Android 如何增加ViewPager2中图像的宽度?

Android 如何增加ViewPager2中图像的宽度?,android,Android,我正在使用viewPager2制作项目中的图像幻灯片,并在没有适当知识的情况下从中复制了一些代码,试图理解,但我无法理解,请有人告诉我代码中发生了什么,以及如何将图像固定到屏幕宽度 活动\u home.xml 我在ScrollView的顶部有一个工具栏,根布局为ConstantLayout HomeScreen.java protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSt

我正在使用
viewPager2
制作项目中的图像幻灯片,并在没有适当知识的情况下从中复制了一些代码,试图理解,但我无法理解,请有人告诉我代码中发生了什么,以及如何将图像固定到屏幕宽度

活动\u home.xml

我在ScrollView的顶部有一个工具栏,根布局为ConstantLayout
HomeScreen.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_screen);
    viewPager2 = findViewById(R.id.viewpageimageSlider);
    //hear i'm preparing list of images from drawable,
    sliderItemBeans = new ArrayList<>();
    sliderItemBeans.add(new SliderItemBean(R.drawable.plateofcarrot));
    sliderItemBeans.add(new SliderItemBean(R.drawable.bread));
    sliderItemBeans.add(new SliderItemBean(R.drawable.cucumber));
    sliderItemBeans.add(new SliderItemBean(R.drawable.vegetables));
    sliderItemBeans.add(new SliderItemBean(R.drawable.donuts));
    viewPager2.setAdapter(new SliderAdapter(sliderItemBeans, viewPager2));

    viewPager2.setOffscreenPageLimit(1);
    viewPager2.getChildAt(0).setOverScrollMode(RecyclerView.OVER_SCROLL_ALWAYS);

    float pageMargin = getResources().getDimensionPixelOffset(R.dimen.pageMargin);//10
    float pageOffset = getResources().getDimensionPixelOffset(R.dimen.offset);//20

//I don't understand the code in here what's actually happening.

    viewPager2.setPageTransformer((page, position) -> {
        float myOffset = position * -(2 * pageOffset + pageMargin);
        if (position < -1) {
            page.setTranslationX(-myOffset);
        } else if (position <= 1) {
            float scaleFactor = Math.max(0.7f, 1 - Math.abs(position - 0.14285715f));
            page.setTranslationX(myOffset);
            page.setScaleY(scaleFactor);
            page.setAlpha(scaleFactor);
        } else {
            page.setAlpha(0);
            page.setTranslationX(myOffset);
        }
    });
    viewPager2.setPageTransformer(compositePageTransformer);
    viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageSelected(int position) {
            super.onPageSelected(position);
            sliderHandler.removeCallbacks(sliderRunnable);
            sliderHandler.postDelayed(sliderRunnable, 3000);//slide duration
        }
    });
}

private Runnable sliderRunnable = new Runnable() {
    @Override
    public void run() {
        viewPager2.setCurrentItem(viewPager2.getCurrentItem() + 1,true);
    }
};

@Override
protected void onPause() {
    super.onPause();
    sliderHandler.removeCallbacks(sliderRunnable);
}

@Override
protected void onResume() {
    super.onResume();
    sliderHandler.postDelayed(sliderRunnable, 3000);
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u主屏幕);
viewPager2=findViewById(R.id.viewpageimageSlider);
//听说我正在准备drawable的图片列表,
sliderItemBeans=新的ArrayList();
添加(新的SliderItemBan(R.drawable.plateofcarrot));
添加(新的slideritemban(R.drawable.bread));
添加(新的slideritemban(R.drawable.cumber));
添加(新的slideritemban(R.drawable.vegets));
添加(新的SliderItemBean(R.drawable.donuts));
setAdapter(新的SliderAdapter(sliderItemBeans,viewPager2));
ViewPage2.setOffscreenPageLimit(1);
viewPager2.getChildAt(0.setOverScrollMode(RecyclerView.OVER_SCROLL_ALWAYS));
float pageMargin=getResources().getDimensionPixelOffset(R.dimen.pageMargin);//10
float pageOffset=getResources().getDimensionPixelOffset(R.dimen.offset);//20
//我不明白这里的代码,实际上发生了什么。
viewPager2.setPageTransformer((页面,位置)->{
float myOffset=位置*-(2*页偏移量+页边距);
如果(位置<-1){
page.setTranslationX(-myOffset);
}否则,如果(位置)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_screen);
    viewPager2 = findViewById(R.id.viewpageimageSlider);
    //hear i'm preparing list of images from drawable,
    sliderItemBeans = new ArrayList<>();
    sliderItemBeans.add(new SliderItemBean(R.drawable.plateofcarrot));
    sliderItemBeans.add(new SliderItemBean(R.drawable.bread));
    sliderItemBeans.add(new SliderItemBean(R.drawable.cucumber));
    sliderItemBeans.add(new SliderItemBean(R.drawable.vegetables));
    sliderItemBeans.add(new SliderItemBean(R.drawable.donuts));
    viewPager2.setAdapter(new SliderAdapter(sliderItemBeans, viewPager2));

    viewPager2.setOffscreenPageLimit(1);
    viewPager2.getChildAt(0).setOverScrollMode(RecyclerView.OVER_SCROLL_ALWAYS);

    float pageMargin = getResources().getDimensionPixelOffset(R.dimen.pageMargin);//10
    float pageOffset = getResources().getDimensionPixelOffset(R.dimen.offset);//20

//I don't understand the code in here what's actually happening.

    viewPager2.setPageTransformer((page, position) -> {
        float myOffset = position * -(2 * pageOffset + pageMargin);
        if (position < -1) {
            page.setTranslationX(-myOffset);
        } else if (position <= 1) {
            float scaleFactor = Math.max(0.7f, 1 - Math.abs(position - 0.14285715f));
            page.setTranslationX(myOffset);
            page.setScaleY(scaleFactor);
            page.setAlpha(scaleFactor);
        } else {
            page.setAlpha(0);
            page.setTranslationX(myOffset);
        }
    });
    viewPager2.setPageTransformer(compositePageTransformer);
    viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageSelected(int position) {
            super.onPageSelected(position);
            sliderHandler.removeCallbacks(sliderRunnable);
            sliderHandler.postDelayed(sliderRunnable, 3000);//slide duration
        }
    });
}

private Runnable sliderRunnable = new Runnable() {
    @Override
    public void run() {
        viewPager2.setCurrentItem(viewPager2.getCurrentItem() + 1,true);
    }
};

@Override
protected void onPause() {
    super.onPause();
    sliderHandler.removeCallbacks(sliderRunnable);
}

@Override
protected void onResume() {
    super.onResume();
    sliderHandler.postDelayed(sliderRunnable, 3000);
}
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/slideImage"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</ImageView>