CaMnter / Easyrecyclerviewsidebar
Licence: apache-2.0
🔍 Easy sidebar for Android RecyclerView (。>﹏<。)
Stars: ✭ 509
Programming Languages
java
68154 projects - #9 most used programming language
Projects that are alternatives of or similar to Easyrecyclerviewsidebar
Spannedgridlayoutmanager
Android RecyclerView.LayoutManager that resizes and reorders views based on SpanSize
Stars: ✭ 492 (-3.34%)
Mutual labels: recyclerview
Recyclerview Gallery
Recyclerview-Gallery:This library shows you a gallery using RecyclerView.
Stars: ✭ 420 (-17.49%)
Mutual labels: recyclerview
Fake contacts
Create fake phone contacts, to do data-poisoning.
Stars: ✭ 459 (-9.82%)
Mutual labels: contacts
Dragdropswiperecyclerview
Kotlin Android library that extends RecyclerView to support gestures like drag & drop and swipe, among others. It works with vertical, horizontal and grid lists.
Stars: ✭ 469 (-7.86%)
Mutual labels: recyclerview
Recyclerviewtemplate
One Template which solves all frequently used RecyclerViews Code Snippets
Stars: ✭ 404 (-20.63%)
Mutual labels: recyclerview
Coder
Android Material Design 风格控件的学习及遇到的问题;Tablayout | 横向布局标签,TextInputLayout | 文字输入布局 ,FloatingActionButton | 悬浮按钮, CoordinatorLayout APPBarLayout CollapsingTabLayout实现折叠头布局,BottomSheetDialog | 底部对话框,Touch Feedback| 触摸反馈,Reveal Effect| 揭示效果,Curved motion | 曲线运动,Animated Vector Drawables | 矢量图片动画
Stars: ✭ 502 (-1.38%)
Mutual labels: recyclerview
Theia Sticky Sidebar
Glues your website's sidebars, making them permanently visible while scrolling.
Stars: ✭ 489 (-3.93%)
Mutual labels: sidebar
Androidwithkotlin
🚀 These are android sample projects which are written in Kotlin. It covers video streaming, mp3 player, sqlite, location services, custom camera, o-notifications, simple compass etc.
Stars: ✭ 447 (-12.18%)
Mutual labels: recyclerview
Phonenumberkit
A Swift framework for parsing, formatting and validating international phone numbers. Inspired by Google's libphonenumber.
Stars: ✭ 4,362 (+756.97%)
Mutual labels: contacts
Nestedrecyclerview
🔥Copied the homepage of taobao and jd.com, and realized the TAB ceiling effect through two-layer nesting RecyclerView .
Stars: ✭ 479 (-5.89%)
Mutual labels: recyclerview
Flutter wechat
🔥🔥🔥 利用 Flutter 来高仿微信(WeChat) 7.0.0+ App,代码规范惊为天人、注释详解令人发指、细节处理精益求精、核心功能配备文档、接近98%还原度的原生App视觉体验。代码不多,注释多。(持续更新,敬请期待,欢迎Star和Fork…)
Stars: ✭ 421 (-17.29%)
Mutual labels: contacts
Yasha
Kotlin-based modern RecyclerView rendering weapon
Stars: ✭ 494 (-2.95%)
Mutual labels: recyclerview
Scrollingpagerindicator
Pager indicator inspired by Instagram. Lightweight and easy to set up.
Stars: ✭ 419 (-17.68%)
Mutual labels: recyclerview
Recycler Fast Scroll
Provides fast scroll and section idexer for recycler view
Stars: ✭ 445 (-12.57%)
Mutual labels: recyclerview
React Burger Menu
🍔 An off-canvas sidebar component with a collection of effects and styles using CSS transitions and SVG path animations
Stars: ✭ 4,544 (+792.73%)
Mutual labels: sidebar
Androidribbon
🎀 The simple way to implement a beautiful ribbon with the shimmering on Android.
Stars: ✭ 502 (-1.38%)
Mutual labels: recyclerview
Suspensionbar
A RecyclerView suspension bar implementation like Instagram
Stars: ✭ 494 (-2.95%)
Mutual labels: recyclerview
EasyRecyclerViewSidebar
Easy sidebar for Android RecyclerView (。>﹏<。)
Introduction
EasyRecyclerViewSidebar is a more convenient sidebar index column.
Not only can you load text, you can also load pictures.
You can also customize the floating View.
Gradle
dependencies {
compile 'com.camnter.easyrecyclerviewsidebar:easyrecyclerviewsidebar:1.3'
}
Attributes
<declare-styleable name="EasyRecyclerViewSidebar">
<attr name="easySidebarBackground" format="color" />
<attr name="easySidebarFontColor" format="color" />
<attr name="easySidebarTouchWrapArea" format="boolean" />
</declare-styleable>
Listener
You must implement the EasyRecyclerViewSidebar.OnTouchSectionListener .
- In onTouchImageSection, using the EasyImageSection rendering images for You floating view .
- In onTouchLetterSection, using the EasySection set letter for You floating view .
Also , you can see the SectionActivity of demo .
public interface OnTouchSectionListener {
/**
* On touch image section
*
* @param sectionIndex sectionIndex
* @param imageSection imageSection
*/
void onTouchImageSection(int sectionIndex, EasyImageSection imageSection);
/**
* On touch letter section
*
* @param sectionIndex sectionIndex
* @param letterSection letterSection
*/
void onTouchLetterSection(int sectionIndex, EasySection letterSection);
}
Easy to use
More details, you can see the xml of a demo
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.camnter.easyrecyclerview.widget.EasyRecyclerView
android:id="@+id/section_rv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.camnter.easyrecyclerviewsidebar.EasyRecyclerViewSidebar
android:id="@+id/section_sidebar"
android:layout_width="30dp"
android:layout_height="fill_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_gravity="center|end"/>
<RelativeLayout
android:id="@+id/section_floating_rl"
android:layout_width="70dp"
android:layout_height="60dp"
android:layout_centerInParent="true"
android:background="@drawable/show_float_bg"
android:visibility="invisible">
<com.camnter.easyrecyclerviewsidebar.EasyFloatingImageView
android:id="@+id/section_floating_iv"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_centerInParent="true"
android:visibility="invisible"/>
<TextView
android:id="@+id/section_floating_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textColor="#ff444444"
android:textSize="23sp"
android:visibility="invisible"/>
</RelativeLayout>
</RelativeLayout>
EasyFloatingImageView Attributes
<declare-styleable name="EasyFloatingImageView">
<attr name="easyFloatingImageType">
<enum name="round" value="2601" />
<enum name="circle" value="2602" />
</attr>
<attr name="easyFloatingBorderRadius" format="dimension" />
</declare-styleable>
setSections
private void initData() {
this.adapter.setList(this.getData());
this.adapter.notifyDataSetChanged();
this.imageSidebar.setSections(this.adapter.getSections());
}
A sample implementation of getSections
@Override public List<EasySection> getSections() {
this.resetSectionCache();
int itemCount = getItemCount();
if (itemCount < 1) return this.easySections;
String letter;
for (int i = 0; i < itemCount; i++) {
Contacts contacts = this.getItem(i);
letter = contacts.getHeader();
int section = this.easySections.size() == 0 ? 0 : this.easySections.size() - 1;
if (contacts.top) {
if (i != 0) section++;
this.positionOfSection.put(section, i);
this.easySections.add(
new EasyImageSection(contacts.resId, this.getEasyImageSection(), i));
} else {
// A B C D E F ...
if (section < this.easySections.size()) {
EasySection easySection = this.easySections.get(section);
if (easySection instanceof EasyImageSection) {
// last section = image section
this.easySections.add(new EasySection(letter));
section++;
this.positionOfSection.put(section, i);
} else {
// last section = letter section
if (!this.easySections.get(section).letter.equals(letter)) {
this.easySections.add(new EasySection(letter));
section++;
this.positionOfSection.put(section, i);
}
}
} else if (section == 0) {
this.easySections.add(new EasySection(letter));
this.positionOfSection.put(section, i);
}
}
this.sectionOfPosition.put(i, section);
}
return this.easySections;
}
Screenshots
Style | Circle | Round |
---|---|---|
No Images
License
Copyright (C) 2016 CaMnter [email protected]
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].