2011-04-27 60 views
1

您知道如何縮放圖庫中的選定項目嗎?我知道getScale()和getAlpha()顯然是從0.9 SDK中刪除的。那麼我怎麼才能達到同樣的效果呢?在圖庫中縮放選定的項目

感謝

+0

你想出了一個解決這個問題? – schlingel 2012-02-01 16:03:38

回答

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()。

希望這有助於

勒布

+0

什麼是mCamera它是一個畫布? – Abdullah 2013-06-06 21:57:52

+0

我仍然看到一些問題,如重疊的項目,但這是迄今爲止我遇到的最好的解決方案。 – 2013-08-16 23:18:21

+0

@Abdullah mCamera是android.graphics.Camera – 2013-08-16 23:18:47

0
+0

我認爲它不適用,因爲縮放是基於觸摸事件完成的。在我的casa中,我想在投擲時選擇項目時應用縮放,所以基本上縮放應該在做出選擇時自動完成。有任何想法嗎? – lblasa 2011-04-27 16:28:46

+0

我dnt很多,你可以參考這個&執行在一甩,sry – 2011-04-27 16:33:58