티스토리 뷰
목차
반응형
안드로이드 리스트뷰 이미지뷰 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(90, 180, centerX, centerY, 310.0f, false); } else { mImageView.setVisibility(View.GONE); mPhotosList.setVisibility(View.VISIBLE); mPhotosList.requestFocus(); rotation = new Rotate(90, 0, centerX, centerY, 310.0f, false); } rotation.setDuration(5000); rotation.setFillAfter(true); rotation.setInterpolator(new DecelerateInterpolator()); mContainer.startAnimation(rotation); } | cs |
[안드로이드 리스트뷰 이미지뷰 3D 변환 예제]
안드로이드 리스트뷰 이미지뷰 3D 변환 예제
반응형