Android Coverflow issue on 4.0.3 Samsung Galaxy S2

前端 未结 3 437
别那么骄傲
别那么骄傲 2021-02-04 19:16

I\'m using android coverflow, and it works fine on most of devices, but it seems that in Android 4.0.3 it does not put the center image back to the center once that you slide ba

相关标签:
3条回答
  • 2021-02-04 19:36

    I resolved following this code

    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();
    
    0 讨论(0)
  • 2021-02-04 19:52

    Are you using Neil Davies Coverflow Widget V2?

    If yes, I found out the problem. If no, I am sorry, I can't help you.

    The problem is in the function getCenterOfView. More accurate, it is a problem about view.getLeft(). <-- please tell me if anyone know why it is different after 4.0

    The value return from view.getLeft() is different at every time. So this will affect another function getChildStaticTransformation, it can't find which imageview is the center.

    My solution, a dirty fix, is give a range for it to detect its center.

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

    Please let me know if anyone has a better solution on this.

    0 讨论(0)
  • 2021-02-04 19:54

    I just added

    child.invalidate() 
    

    before

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

    so it becomes

    protected boolean getChildStaticTransformation(View child, Transformation t) {
    
        child.invalidate();
        final int childCenter = getCenterOfView(child);
        final int childWidth = child.getWidth();
        int rotationAngle = 0;
    
    0 讨论(0)
提交回复
热议问题