All Projects → xmuSistone → Androidpilelayout

xmuSistone / Androidpilelayout

An abnormal horizontal ListView-like pile layout with stretch and contraction effects.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Androidpilelayout

drag-to-close
Android library that provides a view group which allows to finish an activity by dragging a view.
Stars: ✭ 69 (-96.72%)
Mutual labels:  drag, viewgroup
react-native-dnd-board
A drag and drop Kanban board for React Native.
Stars: ✭ 41 (-98.05%)
Mutual labels:  card, drag
Cardslidepanel
enable users to slide card to the left or right smoothly and continuously
Stars: ✭ 2,377 (+12.98%)
Mutual labels:  card, viewgroup
Dragranksquare
edit personal information which enables users to drag and rank image order
Stars: ✭ 1,115 (-47.01%)
Mutual labels:  drag, viewgroup
Stacklayoutmanager
customized layoutmanager,let item pile up like stackview/类似最美有物卡片堆叠效果
Stars: ✭ 343 (-83.7%)
Mutual labels:  card, slide
Bottom Sheet
⬆️ A SwiftUI view component sliding in from bottom
Stars: ✭ 252 (-88.02%)
Mutual labels:  drag, card
Slideovercard
A SwiftUI card view, made great for setup interactions.
Stars: ✭ 228 (-89.16%)
Mutual labels:  card, slide
Swipedelmenulayout
The most simple SwipeMenu in the history, 0 coupling, support any ViewGroup. Step integration swipe (delete) menu, high imitation QQ, iOS. ~史上最简单侧滑菜单,0耦合,支持任意ViewGroup。一步集成侧滑(删除)菜单,高仿QQ、IOS。~
Stars: ✭ 3,376 (+60.46%)
Mutual labels:  slide, viewgroup
Drawer Behavior
Drawer behavior is a library that provide an extra behavior on drawer, such as, move view or scaling view's height while drawer on slide.
Stars: ✭ 394 (-81.27%)
Mutual labels:  card, slide
Cardsstack
An awesome set of cards at your disposal ✌️ ⚡️
Stars: ✭ 97 (-95.39%)
Mutual labels:  drag, card
Scheduler Card
HA Lovelace card for control of scheduler entities
Stars: ✭ 154 (-92.68%)
Mutual labels:  card
Vuegg
🐣 vue GUI generator
Stars: ✭ 2,056 (-2.28%)
Mutual labels:  drag
Android Swipecards View
Android library to implement cards stack view with swipe to remove feature
Stars: ✭ 162 (-92.3%)
Mutual labels:  card
Vue Tiny Code
这里有一个仿 Chrome 调色盘,有一个拖动排版的页面,还有一些新奇的小点子。
Stars: ✭ 170 (-91.92%)
Mutual labels:  drag
Fluids
Fluid dynamics component of Chemical Engineering Design Library (ChEDL)
Stars: ✭ 154 (-92.68%)
Mutual labels:  drag
Diagram Maker
A library to display an interactive editor for any graph-like data.
Stars: ✭ 2,086 (-0.86%)
Mutual labels:  drag
React Native Easy Gestures
React Native Gestures. Support: Drag, Scale and Rotate a Component.
Stars: ✭ 153 (-92.73%)
Mutual labels:  drag
React Ds
🔥 React Drag To Select component (tiny, touch friendly, and no dependencies!)
Stars: ✭ 153 (-92.73%)
Mutual labels:  drag
Ngx Smooth Dnd
angular wrapper for smooth-dnd
Stars: ✭ 152 (-92.78%)
Mutual labels:  drag
Springy facebook rebound
Springy makes Android Property animation easy to use.
Stars: ✭ 176 (-91.63%)
Mutual labels:  slide

android-pile-layout

An abnormal horizontal ListView-like pile layout.

captured images

The following pictures were captured earlier. Since the source code and the outputted-apk have changed some params, you will have a different UI when you directly run the code or install the apk file. Hope there has no confusions later.

design

Recently I have seen this kind of UI design, and at the first sight I was trying to implement it by using RecyclerView's LayoutManager. Unfortunately, I am unable to contrust a clear Math model while sliding the PileView. After several tries, I gave up LayoutManager, and find another way for this implementation. If you make LayoutManager works well for this UI design, please tell me later.

how to use

  1. declare PileLayout in your xml file
<com.stone.pile.libs.PileLayout
        android:id="@+id/pileLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        pile:displayCount="1.5"
        pile:interval="10dp"
        pile:scaleStep="0.22"
        pile:widthHeightRate="1.22" />

Meanwhile, pileLayout is able to be customized by these 4 params:

name format description
interval dimension items-margin each other
sizeRatio float each item's height/witdth
scaleStep float size scale step when needed
displayCount float number of items that may display
  1. in Java files:
pileLayout = (PileLayout) findViewById(R.id.pileLayout);
pileLayout.setAdapter(new PileLayout.Adapter() {
            @Override
            public int getLayoutId() {
                // item's layout resource id
                return R.layout.item_layout;
            }

            @Override
            public void bindView(View view, int position) {
                ViewHolder viewHolder = (ViewHolder) view.getTag();
                if (viewHolder == null) {
                    viewHolder = new ViewHolder();
                    viewHolder.imageView = (ImageView) view.findViewById(R.id.imageView);
                    view.setTag(viewHolder);
                }
                // recycled view bind new position
            }

            @Override
            public int getItemCount() {
                // item count
                return dataList.size();
            }

            @Override
            public void displaying(int position) {
                // right displaying the left biggest itemView's position 
            }

            @Override
            public void onItemClick(View view, int position) {
                // on item click
            }
});

demo apk

download

License

Copyright 2017, xmuSistone

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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].