티스토리 뷰

목차

    반응형

    안드로이드 리스트뷰 이미지뷰 3D 변환 예제


    Project 소스 파일 - Swap3D.zip


    출처는 Sravan이란 분의 블로그였는데 사라지고 없네요.

    간단하게, 안드로이드 리스트뷰와 안드로이드 이미지뷰의 XY 축을 90도로 회전시키는 원리를 이용했다고 하네요.


    아래는 주요 소스 코드입니다.


    안드로이드 리스트뷰[안드로이드 리스트뷰 이미지뷰 3D 변환 예제]


    이미지 회전 소스


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     protected void applyTransformation(float interpolatedTime, Transformation t) {
        final float fromDegrees = mFromDegrees;
        float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);
     
        final float centerX = mCenterX;
        final float centerY = mCenterY;
        final Camera camera = mCamera;
     
        final Matrix matrix = t.getMatrix();
     
        camera.save();
     
        if (mReverse) {
            camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
        } else {
            camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));
        }
     
        camera.rotateY(degrees);
        camera.getMatrix(matrix);
        camera.restore();
     
        matrix.preTranslate(-centerX, -centerY);
        matrix.postTranslate(centerX, centerY);
    }
    cs


    안드로이드 이미지뷰[안드로이드 리스트뷰 이미지뷰 3D 변환 예제]


    3D 전환 소스


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public void run() {
        final float centerX = mContainer.getWidth() / 2.0f;
        final float centerY = mContainer.getHeight() / 2.0f;
        Rotate rotation;
                
        if (mPosition > -1) {
            mPhotosList.setVisibility(View.GONE);
            mImageView.setVisibility(View.VISIBLE);
            mImageView.requestFocus();
     
            rotation = new Rotate(90180, centerX, centerY, 310.0f, false);
        } else {
            mImageView.setVisibility(View.GONE);
            mPhotosList.setVisibility(View.VISIBLE);
            mPhotosList.requestFocus();
     
            rotation = new Rotate(900, centerX, centerY, 310.0f, false);
        }
     
            rotation.setDuration(5000);
            rotation.setFillAfter(true);
            rotation.setInterpolator(new DecelerateInterpolator());
     
            mContainer.startAnimation(rotation);
    }
    cs


    안드로이드 리스트뷰 3D[안드로이드 리스트뷰 이미지뷰 3D 변환 예제]


    안드로이드 리스트뷰 이미지뷰 3D 변환 예제

    반응형