Просто загрузите пакет отсюда и добавьте его в путь к классам вашего проекта или просто используйте репозиторий maven:
Градл:
' com.ramotion.foldingcell:folding-cell:1.2.3 '
СБТ:
libraryDependencies += " com.ramotion.foldingcell " % " folding-cell " % " 1.2.3 "
Мавен:
< dependency >
< groupId >com.ramotion.foldingcell</ groupId >
< artifactId >folding-cell</ artifactId >
< version >1.2.3</ version >
</ dependency >
com.ramotion.foldingcell.FoldingCell
в свой макет. < com .ramotion.foldingcell.FoldingCell
xmlns : android = " http://schemas.android.com/apk/res/android "
android : id = " @+id/folding_cell "
android : layout_width = " match_parent "
android : layout_height = " wrap_content " >
</ com .ramotion.foldingcell.FoldingCell>
2. Добавьте в ячейку ровно два дочерних элемента. Первый дочерний элемент ( представление содержимого ) всегда представляет макет развернутого состояния, а второй дочерний элемент ( представление заголовка ) представляет макет сложенного состояния. Конечно, эти макеты могут содержать любое количество дочерних элементов и быть любой сложности, но для правильной работы существуют некоторые ограничения: высота представления контента должна быть как минимум в 2 раза больше высоты представления заголовка , а высота каждого из для этих макетов должно быть установлено android:layout_height="wrap_content"
. Если вы хотите установить точную высоту в dp
, вы можете установить высоту для дочерних элементов в своем собственном макете внутри представления содержимого или представления заголовка . Кроме того, вам нужно скрыть макет просмотра контента , используя android:visibility="gone"
.
< com .ramotion.foldingcell.FoldingCell
xmlns : android = " http://schemas.android.com/apk/res/android "
android : id = " @+id/folding_cell "
android : layout_width = " match_parent "
android : layout_height = " wrap_content " >
< FrameLayout
android : id = " @+id/cell_content_view "
android : layout_width = " match_parent "
android : layout_height = " wrap_content "
android : background = " @android:color/holo_green_dark "
android : visibility = " gone " >
< TextView
android : layout_width = " match_parent "
android : layout_height = " 250dp " />
</ FrameLayout >
< FrameLayout
android : id = " @+id/cell_title_view "
android : layout_width = " match_parent "
android : layout_height = " wrap_content " >
< TextView
android : layout_width = " match_parent "
android : layout_height = " 100dp "
android : background = " @android:color/holo_blue_dark " />
</ FrameLayout >
</ com .ramotion.foldingcell.FoldingCell>
3. Почти готово! Осталось два шага! Для правильной анимации вам необходимо настроить два свойства для корневых элементов вашей складной ячейки:
android:clipChildren="false"
android:clipToPadding="false"
4. Последний шаг! Добавьте onClickListener в свою складную ячейку в MainActivity.java
для переключения анимации:
@ Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . activity_main );
// get our folding cell
final FoldingCell fc = ( FoldingCell ) findViewById ( R . id . folding_cell );
// attach click listener to folding cell
fc . setOnClickListener ( new View . OnClickListener () {
@ Override
public void onClick ( View v ) {
fc . toggle ( false );
}
});
}
5. Дополнительный шаг – настройка параметров ячейки. На данный момент есть три основных параметра — время анимации, цвет обратной стороны и количество дополнительных переворотов. Если первые два не вызывают вопросов, то третий требует некоторого пояснения. Это количество бросков, которые необходимо выполнить после первого (основного) броска. Значение по умолчанию — 0
(автоматический выбор). Также есть четвертый, дополнительный параметр - высота камеры, он контролирует уровень(глубину) 3d эффекта. Есть два способа изменить настройки ячейки: из файла макета xml с пространством имен res-auto
xmlns:folding-cell="http://schemas.android.com/apk/res-auto"
:
folding-cell:animationDuration="1000"
folding-cell:backSideColor="@color/bgBackSideColor"
folding-cell:additionalFlipsCount="2"
folding-cell:cameraHeight="30"
Или из кода:
// get our folding cell
final FoldingCell fc = ( FoldingCell ) findViewById ( R . id . folding_cell );
// set custom parameters
fc . initialize ( 1000 , Color . DKGRAY , 2 );
// or with camera height parameter
fc . initialize ( 30 , 1000 , Color . DKGRAY , 2 );
Этот и другие, более сложные примеры, вы можете найти в этом репозитории
Folding Cell выпускается под лицензией MIT. Подробности см. в разделе ЛИЦЕНЗИЯ.
Эта библиотека является частью подборки наших лучших проектов пользовательского интерфейса с открытым исходным кодом.
Если вы используете библиотеку с открытым исходным кодом в своем проекте, обязательно укажите ссылку на www.ramotion.com и укажите ссылку на нее.
Попробуйте этот компонент пользовательского интерфейса и многое другое в нашем приложении для Android. Свяжитесь с нами, если интересно.