Возможно, уже слишком поздно, чтобы ответить, но я нашел этот вопрос, когда искал что-то еще.
Я сделал это, имея собственную галерею и переопределив getChildStaticTransformation () и добавив некоторые другие вещи.
Вот пример
private int centerOfGallery;
public CustomGallery(Context context) {
super(context);
init();
}
public CustomGallery(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CustomGallery(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
setStaticTransformationsEnabled(true);
}
private int getCenterWidthOfView(View child) {
return child.getLeft() + child.getWidth() / 2;
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
centerOfGallery = (w - getPaddingLeft() - getPaddingRight()) / 2 + getPaddingLeft();
}
@Override
protected boolean getChildStaticTransformation(View child, Transformation t) {
mCamera.save();
final Matrix matrix = t.getMatrix();
final int centerWidthOfChild = getCenterWidthOfView(child);
final int delta = centerOfGallery - centerWidthOfChild;
final float scale = (float)(maxScale - Math.abs(delta) * 0.5f / centerOfGallery);
mCamera.getMatrix(matrix);
matrix.preScale(scale, scale);
matrix.preTranslate(-1, -1);
matrix.postTranslate(1, 1);
mCamera.restore();
if (version >= 15) { // For Jelly Bean hack
child.invalidate();
}
return true;
}
, где maxScale - максимальный масштаб, который вы хотите для выбранного элемента (например, 1,5f)
После этого, будьте осторожны с расстоянием между элементами в галерее, когдамасштабировать их.При необходимости вы можете использовать setSpacing ().
Надеюсь, это поможет
Seb