ViewPager为所有屏幕设置页边距

时间:2015-11-19 00:37:21

标签: java android

我正在使用Android ViewPager制作一个carouel。我需要展示类似的东西 enter image description here

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

viewPager.setPageMargin(-390);

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

2 个答案:

答案 0 :(得分: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;
}

}

2.请检查此存储库。这种效果正是你想要的。

https://github.com/dolphinwang/ImageCoverFlow

enter image description here

答案 1 :(得分:1)

这是dimension resource的一个很好的用例。

在values / dimens.xml中,添加

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

然后在Java中你可以调用

int marginPx = getResources().getDimensionPixelSize(R.dimen.page_margin);
viewPager.setPageMargin(marginPx);