An easy to use swiping-view for Android
Just declare a Shuffle into your layout
<com.meetic.shuffle.Shuffle android:id="@+id/shuffle" android:layout_width="match_parent" android:layout_height="200dp" />
Then fill it with an Adapter
Shuffle shuffle = (Shuffle)findViewById(R.id.shuffle); shuffle.setShuffleAdapter(new Shuffle.Adapter(){ @Override public Shuffle.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int type) { } @Override public void onBindViewHolder(final Shuffle.ViewHolder viewHolder, int position) { } @Override public int getItemCount() { } });
<com.meetic.shuffle.Shuffle android:id="@+id/shuffle" android:layout_width="match_parent" android:layout_height="200dp" app:shuffle_inlineMove="false" />
<com.meetic.shuffle.Shuffle android:id="@+id/shuffle" android:layout_width="match_parent" android:layout_height="200dp" app:shuffle_inlineMove="true" />
If you want to set it vertical (by default Suffle is horizontal oriented)
<com.meetic.shuffle.Shuffle android:id="@+id/shuffle" android:layout_width="match_parent" android:layout_height="200dp" app:shuffle_orientation="horizontal / vertical" />
Without rotation
<com.meetic.shuffle.Shuffle android:id="@+id/shuffle" android:layout_width="match_parent" android:layout_height="200dp" app:shuffle_rotationEnabled="false" />
With rotation
<com.meetic.shuffle.Shuffle android:id="@+id/shuffle" android:layout_width="match_parent" android:layout_height="200dp" app:shuffle_rotationEnabled="false" app:shuffle_rotation="10" />
To restart the shuffling
shuffle.restartShuffling();
To undo a card exit
shuffle.revert(duration);
<com.meetic.shuffle.Shuffle android:id="@+id/shuffle" android:layout_width="match_parent" android:layout_height="200dp" app:shuffle_infinite="true" />
You can set the max number of cards displayed and adjust the space between cards
<com.meetic.shuffle.Shuffle android:id="@+id/shuffle" android:layout_width="match_parent" android:layout_height="200dp" app:shuffle_numberOfDisplayedCards="4" app:shuffle_differenceTranslationY="5dp" app:shuffle_differenceTranslationX="1dp" />
shuffle.addListener(new Shuffle.Listener() { @Override public void onViewChanged(int position) { } @Override public void onScrollStarted() { } @Override public void onScrollFinished() { } @Override public void onViewExited(DraggableView draggableView, Direction direction) { } @Override public void onViewScrolled(DraggableView draggableView, float percentX, float percent) { } });
<Shuffle ... //overlay color displayed while scrolling app:shuffle_colorRight="@color/blue" app:shuffle_colorLeft="@color/blue" //overlay content displayed while scrolling (ex: containing logo) app:shuffle_layoutLeft="@layout/bal_shuffle_cell_left" app:shuffle_layoutRight="@layout/bal_shuffle_cell_right" ... />
All Shuffle animations can be overriden
shuffle.setViewAnimator(new ShuffleViewAnimator(){ //override methods });
Try ShuffleViewAnimator and `ShuffleViewAnimatorOnSecondCard
You can easily set dismiss animations for ShuffleViewAnimator ( scaleUp / goBackBehind )
shuffle.setViewAnimator(new ShuffleViewAnimator() .setPushLeftAnimateViewStackScaleUp(false) .setPushRightAnimateViewStackScaleUp(true) .setPushTopAnimateViewStackScaleUp(false) .setPushBottomAnimateViewStackScaleUp(false) );
shuffle.enable(true / false);
Add into your build.gradle
compile 'com.meetic.shuffle:shuffle:(last version)' compile 'com.meetic.dragueur:dragueur:1.0.3'
Move your views with Dragueur !
#Log
1.0.8
- infinite
1.0.6
- revert
1.0.4
- Layer animations
1.0.3
- ShuffleViewAnimator is now customisable
1.0.2
- added restart shuffling
A project initiated by Meetic
This project was first developed by Meetic and has been open-sourced since. We will continue working on it. We encourage the community to contribute to the project by opening tickets and/or pull requests.
Contributor: Florent Champigny
#License
Copyright 2016 Meetic, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.