이 프로젝트는 OpenGL 2.0을 기반으로 하는 Android 시스템에서 3D 스타일의 페이지 넘기기를 구현하는 것을 목표로 합니다.
JNI 버전을 보려면 android-PageFlip-JNI를 방문하세요.
시사
설치
안드로이드 버전 지원
용법
특허
다음을 사용하여 build.gradle에 추가하세요.
allprojects {
repositories {
maven { url " https://jitpack.io " }
}
}
그리고:
dependencies {
compile ' com.github.eschao:android-PageFlip:1.0.2 '
}
다음 버전이 에뮬레이터에서 테스트되었습니다.
안드로이드 버전 | API 버전 | 지원하다 |
---|---|---|
3.2 | API 13 | 엑스 |
4.1 | API 16 | √ |
4.2 | API 17 | √ |
4.3 | API 18 | √ |
4.4 | API 19 | √ |
5.0 | API 21 | √ |
5.1 | API 22 | √ |
6.0 | API 23 | √ |
7.0 | API 24 | √ |
7.1.1 | API 25 | √ |
7.+ | API 26 | √ |
GLSurfaceView 에서 확장되는 표면 뷰 클래스를 생성합니다.
비트맵에 콘텐츠를 그리고 이를 PageFlip 의 텍스처로 설정하는 안드로이드 렌더러 인터페이스를 구현합니다.
표면 뷰의 생성자에서 PageFlip 개체를 인스턴스화합니다.
PageFlip 구성(예: 애니메이션 지속 시간, 페이지 모드 또는 메쉬 픽셀 설정)
아래 안드로이드 이벤트를 처리합니다.
그리기 메시지를 보내거나 받으려면 메시지 처리기가 필요할 수 있습니다. 샘플 애플리케이션의 PageFlipView 를 참고하세요.
메인 스레드와 OpenGL 렌더링 스레드 간의 충돌을 방지하려면 잠금이 필요할 수 있습니다. 샘플 애플리케이션의 PageFlipView 를 참고하세요.
자세한 내용은 샘플 애플리케이션에서 PageFlipView를 살펴보세요.
PageFlip 라이브러리는 동작을 사용자 정의하기 위한 몇 가지 구성을 제공합니다. 예: 그림자 색상 및 알파, 메쉬 픽셀 및 페이지 모드.
PageFlip 에서는 두 가지 페이지 모드를 제공합니다.
활성화AutoPage를 사용하여 자동 페이지 모드를 활성화하거나 비활성화할 수 있습니다(동일하게 단일 페이지 모드 활성화).
예:
// enable auto page mode
mPageFlip . enableAutopage ( true );
뒤집기 화면 클릭을 활성화/비활성화할 수 있습니다.
예:
// enable clicking to flip
mPageFlip . enableClickToFlip ( true );
페이지 너비 비율을 0에서 0.5f까지 지정하여 클릭 이벤트에 응답하여 페이지 넘기기를 실행할 영역을 설정할 수 있습니다. 기본값은 0.5f 입니다. 이는 단일 페이지 모드에서 화면의 왼쪽 절반을 클릭하면 뒤로 넘기기가 발생하고 단일 페이지 모드에서 화면의 오른쪽 절반을 클릭하면 앞으로 넘기기가 시작됨을 의미합니다.
예:
// set ratio with 0.3
mPageFlip . setWidthRatioOfClickToFlip ( 0.3f );
앞으로 뒤집기 또는 뒤로 뒤집기가 발생할 수 있는지 PageFlip 에 알리도록 리스너를 설정할 수 있습니다.
예:
mPageFlip . setListener ( mListener );
메시에 사용되는 픽셀 수를 설정합니다. 메쉬가 사용하는 픽셀 수가 적을수록 그리기가 더 정교해지고 성능이 낮아집니다. 기본값은 10픽셀입니다.
예:
mPageFlip . setPixelsOfMesh ( 5 );
페이지가 말리면 실제로 PageFlip 에 의해 반원통형으로 처리됩니다. 반원통의 크기를 설정하여 플립 모양을 변경할 수 있습니다. 반원통은 터치 지점에서 원점까지의 선 길이에 따라 달라지므로(아래 그림 참조), PageFlip에 반원통의 둘레를 알려 주기 위해 이 선 길이의 비율을 제공해야 합니다. 기본값은 0.8f입니다.
+----------------+
| touchP |
| . |
| |
| + p0 |
| |
| |
| p1 + |
| |
+----------------+
original point, that means you drag the page from here to touch point(touchP)
The length from p0 to p1 is peremeter of semi-cylinder and determined by ratio your giving
예:
mPageFlip . setSemiPerimeterRatio ( 0.6f );
단일 페이지 모드에서 페이지가 말려 있을 때 접힌 페이지 뒷면의 마스크 알파를 설정할 수 있습니다. 기본값은 0.6f입니다.
예:
mPageFlip . setMaskAlphaOfFold ( 0.5f );
접힌 페이지의 가장자리 그림자에 대해 시작/끝 색상과 시작/끝 알파를 설정할 수 있습니다.
예:
// set start color with 0.1f, start alpha with 0.2f, end color with 0.5f
// and end alpha with 1f
mPageFlip . setShadowColorOfFoldBase ( 0.1f , 0.2f , 0.5f , 1f );
접힌 페이지의 기본 그림자에 대해 시작/끝 색상과 시작/끝 알파를 설정할 수 있습니다.
예:
mPageFlip . setShadowColorOfFoldBase ( 0.05f , 0.2f , 0.5f , 1f );
페이지가 말리면 접힌 페이지의 크기가 손가락의 움직임에 따라 변경되며 그에 따라 가장자리 그림자 너비도 변경되어야 합니다. 그림자 너비에 적절한 너비 범위를 설정할 수 있습니다.
예:
// set the minimal width is 5 pixels and maximum width is 40 pixels.
// set the ratio is 0.3f which means the width will be firstly computed by formula:
// width = diameter of semi-cylinder * 0.3f, and then compare it with minimal
// and maximal value to make sure the width is in range.
mPageFlip . setShadowWidthOfFoldEdges ( 5 , 40 , 0.3f );
접힌 페이지의 가장자리 그림자 너비 와 마찬가지로 접힌 페이지의 기본 그림자에도 적절한 너비 범위를 설정할 수 있습니다.
예:
// see {@link #setShadowWidthOfFoldEdges} function
mPageFlip . setShadowWidthOfFoldBase ( 5 , 40 , 0.4f );
손가락 올리기 이벤트를 처리하기 위해 onFingerUp 함수를 호출할 때 플립 애니메이션 기간을 지정할 수 있습니다.
예:
// the last parameter is duration with millisecond unit, here we set it with 2 seconds.
mPageFlip . onFingerUp ( x , y , 2000 );
이 프로젝트는 Apache 라이센스 버전 2.0에 따라 라이센스가 부여됩니다.