在4.0.3三星Galaxy S2的Android的CoverFlow问题(Android Cove

2019-08-01 17:54发布

我使用的是安卓的CoverFlow,并能正常工作的大多数设备,但它似乎在安卓4.0.3它不会把中心图像回到中心一旦你来回滑动。

他们仍然“坚持”和错误的角度下。

有没有人有类似的问题? 什么可能导致此行为?

因此,附加的图像上中间的图像应居中,而不是倾斜的,它是。

Answer 1:

我只是说

child.invalidate() 

之前

final int childCenter = getCenterOfView(child); in getChildStaticTransformation(View child, Transformation t) 

因此它成为

protected boolean getChildStaticTransformation(View child, Transformation t) {

    child.invalidate();
    final int childCenter = getCenterOfView(child);
    final int childWidth = child.getWidth();
    int rotationAngle = 0;


Answer 2:

您使用的尼尔·戴维斯的CoverFlow的Widget V2?

如果是的话,我发现了这个问题。 如果没有,我很抱歉,我不能帮你。

问题是在功能getCenterOfView。 更准确,这是一个关于view.getLeft问题()。 < - 请告诉我,如果有人知道它为什么4.0后是不同的

从view.getLeft()的返回值是在每个时间不同。 因此,这将影响到另一个功能getChildStaticTransformation,它不能找到它的ImageView为中心。

我的解决办法,一个肮脏的修复,是给一个范围,它检测到它的中心。

if (childCenter <= mCoveflowCenter + 125
            && childCenter >= mCoveflowCenter - 125) {
        transformImageBitmap((ImageView) child, t, 0);
}

请让我知道如果任何人有这个更好的解决办法。



Answer 3:

我决定跟随这名代码

private int offsetChildrenLeftAndRight() {
    int offset = 0;
    for (int i = getChildCount() - 1; i >= 0; i--) {

        getChildAt(i).offsetLeftAndRight(offset);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN)
            getChildAt(i).invalidate();
    }
    return offset;
}


final int childCenter = getCenterOfView(child) + offsetChildrenLeftAndRight();


文章来源: Android Coverflow issue on 4.0.3 Samsung Galaxy S2