Целью этого проекта является реализация переворачивания страниц в 3D-стиле в системе Android на основе OpenGL 2.0.
Для версии JNI посетите: android-PageFlip-JNI.
Предварительный просмотр
Установка
Поддержка версий Android
Использование
Лицензия
Добавьте его в свой build.gradle с помощью:
allprojects {
repositories {
maven { url " https://jitpack.io " }
}
}
и:
dependencies {
compile ' com.github.eschao:android-PageFlip:1.0.2 '
}
На эмуляторе были протестированы следующие версии:
Android-версия | версия 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.
Реализует интерфейс Android Renderer для рисования вашего контента в растровом изображении и установки его в качестве текстуры PageFlip.
Создает объект PageFlip в конструкторе вашего поверхностного представления.
Настраивает PageFlip . Например: установите продолжительность анимации, режим страницы или пиксели сетки.
Обрабатывает следующие события Android:
Вам может понадобиться обработчик сообщений для отправки/получения сообщения рисования. Пожалуйста, обратитесь к PageFlipView в примере приложения.
Вам может потребоваться блокировка, чтобы избежать конфликтов между основным потоком и потоком рендеринга OpenGL. Пожалуйста, обратитесь к PageFlipView в примере приложения.
Более подробную информацию см. в примере PageFlipView в примере приложения.
Библиотека PageFlip предоставляет некоторые конфигурации для настройки своего поведения. Например: цвет тени и альфа, пиксели сетки и режим страницы.
PageFlip предоставляет два режима страницы:
Вы можете использовать EnableAutoPage , чтобы включить режим автоматической страницы или отключить его (равнозначно включить одностраничный режим).
Пример:
// 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.