Java ViewPager设置所有屏幕的页边距

Java ViewPager设置所有屏幕的页边距,java,android,Java,Android,我正在用android ViewPager制作carouel。我需要展示这样的东西 我需要在屏幕中央显示一个元素,在侧面显示另一个元素的一小部分(如图所示)。我正在尝试 viewPager.setPageMargin(-390); 但这并不适用于所有屏幕,如何根据屏幕的密度设置正确的边距?这是一个很好的使用案例 在values/dimens.xml中,添加 <dimen name="page_margin">16dp</dimen> 这是一个很好的应用程序用例 在v

我正在用android ViewPager制作carouel。我需要展示这样的东西

我需要在屏幕中央显示一个元素,在侧面显示另一个元素的一小部分(如图所示)。我正在尝试

viewPager.setPageMargin(-390);

但这并不适用于所有屏幕,如何根据屏幕的密度设置正确的边距?

这是一个很好的使用案例

在values/dimens.xml中,添加

<dimen name="page_margin">16dp</dimen>

这是一个很好的应用程序用例

在values/dimens.xml中,添加

<dimen name="page_margin">16dp</dimen>

1.这是从后台到前台的ViewPager,请尝试:

package com.eftimoff.viewpagertransformers;

import android.view.View;

public class BackgroundToForegroundTransformer extends BaseTransformer {

@Override
protected void onTransform(View view, float position) {
    final float height = view.getHeight();
    final float width = view.getWidth();
    final float scale = min(position < 0 ? 1f : Math.abs(1f - position), 0.5f);

    view.setScaleX(scale);
    view.setScaleY(scale);
    view.setPivotX(width * 0.5f);
    view.setPivotY(height * 0.5f);
    view.setTranslationX(position < 0 ? width * position : -width * position * 0.25f);
}

private static final float min(float val, float min) {
    return val < min ? min : val;
}

}
包com.eftimoff.viewpagertransformers;
导入android.view.view;
公共类BackgroundToForegroundTransformer扩展了BaseTransformer{
@凌驾
受保护的无效转换(视图、浮动位置){
最终浮动高度=view.getHeight();
最终浮动宽度=view.getWidth();
最终浮动刻度=最小值(位置<0?1f:数学abs(1f-位置),0.5f);
视图。设置刻度(刻度);
视图。设置比例(比例);
视图.setPivotX(宽度*0.5f);
视图。设置枢轴(高度*0.5f);
视图.设置平移X(位置<0?宽度*位置:-宽度*位置*0.25f);
}
专用静态最终浮点最小值(浮点值,浮点最小值){
返回值
2.请检查此存储库。这种效果正是你想要的


1.这是一个从背景到前景的ViewPager,请尝试:

package com.eftimoff.viewpagertransformers;

import android.view.View;

public class BackgroundToForegroundTransformer extends BaseTransformer {

@Override
protected void onTransform(View view, float position) {
    final float height = view.getHeight();
    final float width = view.getWidth();
    final float scale = min(position < 0 ? 1f : Math.abs(1f - position), 0.5f);

    view.setScaleX(scale);
    view.setScaleY(scale);
    view.setPivotX(width * 0.5f);
    view.setPivotY(height * 0.5f);
    view.setTranslationX(position < 0 ? width * position : -width * position * 0.25f);
}

private static final float min(float val, float min) {
    return val < min ? min : val;
}

}
包com.eftimoff.viewpagertransformers;
导入android.view.view;
公共类BackgroundToForegroundTransformer扩展了BaseTransformer{
@凌驾
受保护的无效转换(视图、浮动位置){
最终浮动高度=view.getHeight();
最终浮动宽度=view.getWidth();
最终浮动刻度=最小值(位置<0?1f:数学abs(1f-位置),0.5f);
视图。设置刻度(刻度);
视图。设置比例(比例);
视图.setPivotX(宽度*0.5f);
视图。设置枢轴(高度*0.5f);
视图.设置平移X(位置<0?宽度*位置:-宽度*位置*0.25f);
}
专用静态最终浮点最小值(浮点值,浮点最小值){
返回值
2.请检查此存储库。这种效果正是你想要的


你是如何做到的?你是如何做到的?