您知道如何缩放图库中的所选项目吗?我知道显然从0.9 SDK中删除了getScale()和getAlpha()。那我怎么能达到同样的效果呢?
由于
答案 0 :(得分:3)
回答可能为时已晚,但在搜索其他内容时我发现了这个问题。
我是通过自定义图库并覆盖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
答案 1 :(得分:0)