Android-SlideSupport-ListLayouts 使用简介

        近来在 github 上发布了一个 repo——Android-SlideSupport-ListLayouts,点此访问项目

        Android-SlideSupport-ListLayouts 是一款用于为 Android 上的 List 排布提供左滑右滑操作的库。目前支持的 Layout 主要有: ListView、RecyclerView、ScrollView、ExpandableListView 等。另外还可以与 SwpieRefreshLayout、PullToRefresh 等等第三方库协同工作。
<br />

1、支持的 Layout

  • ListView
  • RecyclerView
  • ExpandableListView
  • ScrollView
  • SwipeRefreshLayout + xxxView
  • PullToRefresh + xxxView

2、相关下载

3、使用预览

ListView RecyclerView + SwipeRefreshLayout ListView + PullToRefresh Library
[图片上传失败...(image-c66472-1509674638134)] [图片上传失败...(image-7a3a9b-1509674638134)] [图片上传失败...(image-bf1190-1509674638134)]
ExpandableListView Customized Slide Action
[图片上传失败...(image-d6e2db-1509674638134)] [图片上传失败...(image-5b7ada-1509674638134)]

4、使用方式

4.1、XML 中指定滑动 View 和滑动动作

<com.straw.library.slide.widget.SlideSupportListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/list_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:leftViewId="@+id/fav_item"
    app:rightViewId="@+id/delete_item"
    app:contentViewId="@+id/sample_item"
    app:slideStyle="moveWithContent"
    app:slideInterpolator="@android:anim/decelerate_interpolator"
    app:slideDuration="200"/>

4.2、为 SlideSupportListView 配置 Adapter

SlideSupportListView.SlideAdapter adapter = new SlideSupportListView.SlideAdapter {

    // ...
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        SampleItemHolder holder = null;
        if (convertView != null) {
            holder = (SampleItemHolder) convertView.getTag();
        } else {
            SlideSupportLayout layout = createSlideLayout(parent);
            View.inflate(mContext, R.layout.layout_item_with_delete, layout);
            holder = new SampleItemHolder(layout, mListView, mDataSetChangedListener);

            convertView = layout;
            convertView.setTag(holder);
        }

        holder.update(mItemList.get(position));
        return convertView;
    }
}

        可以看出,和平常所用 Adapter 主要的不同在 getView 的时候:

SlideSupportLayout layout = createSlideLayout(parent);
View.inflate(mContext, R.layout.layout_item_with_delete, layout);
convertView = layout;

4.3、支持的滑动类型

滑动类型 作用
none 不进行任何滑动
leftToRight 只支持手指从左往右滑动
rightToLeft 只支持手指从右往左滑动
both 左右两个方向的滑动均支持

4.4、XML 中支持的滑动动作

滑动动作 作用
moveItemOnly 只滑动配置的 View
moveWithContent 同时滑动配置的 View 和 contentView
scaleItem 缩放配置的 View
rotateItem 旋转配置的 View
alphaItem 调整配置 View 的透明度

4.5、XML 中支持配置的属性

属性 作用
slideMode 配置滑动类型(noneleftToRightrightToLeftboth
slideStyle 配置滑动动作(一次性指定左右两个方向的滑动动作)
leftToRightSlideStyle 指定从左往右滑动的动作
rightToLeftSlideStyle 指定从右往左滑动的动作
leftViewId 指定左边的滑动 View Id
rightViewId 指定右边的滑动 View Id
contentViewId 指定整个根 View 的 Id,以支持联动
slideDuration 滑动时长,ms
slideInterpolator 滑动的插值器,如 @android:anim/decelerate_interpolator

<br />
        其中,Move、Scale、Rotate 还可以单独指定属性:

属性 生效的动作类型 作用
slideMoveDistance moveItemOnly & moveWithContent 手动设置滑动距离(很少用到,除非有非常特殊的情况)
属性 生效的动作类型 作用
fromScale scaleItem 缩放开始比例
toScale scaleItem 缩放结束比例
scaleDuration scaleItem 缩放时长,ms

<br />

属性 生效的动作类型 作用
fromScale scaleItem 缩放开始比例
toScale scaleItem 缩放结束比例
scaleDuration scaleItem 缩放时长,ms
属性 生效的动作类型 作用
fromDegree rotateItem 旋转开始角度
toDegree rotateItem 旋转结束角度
rotateDuration rotateItem 旋转时长,ms

<br />

属性 生效的动作类型 作用
fromDegree rotateItem 旋转开始角度
toDegree rotateItem 旋转结束角度
rotateDuration rotateItem 旋转时长,ms
属性 生效的动作类型 作用
fromAlpha alphaItem 开始透明度,[ 0, 1.0f ]
toAlpha alphaItem 结束透明度,[ 0, 1.0f ]
alphaDuration alphaItem 透明度渐变时长,ms

<br />

属性 生效的动作类型 作用
fromAlpha alphaItem 开始透明度,[ 0, 1.0f ]
toAlpha alphaItem 结束透明度,[ 0, 1.0f ]
alphaDuration alphaItem 透明度渐变时长,ms

5、XML 中必须配置的属性

        一般来说,大部分属性都有默认值,如果你要一个简单的效果,有下面几项在对应情况下是必须配置的:

  • leftViewId:想要从左往右滑动效果时必须指定
  • rightViewId:想要从右往左滑动效果时必须指定
  • contentViewId:想要滑动 View 和 contentView 联动时必须配置(如 slideStyle 为 moveWithContent

6、滑动动作列表

        滑动的具体展现方式是通过 SlideHandler 来配置的,目前支持的滑动动作列表如下:

动作 是否支持在 XML 中指定 作用
MoveItemOnlySlideHandler 是,moveItemOnly 只滑动指定的 View
MoveWithContentSlideHandler 是,moveWithContent 联动滑动 ContentView 和指定的 View
ScaleSlideHandler 是,scaleItem 缩放指定的 View
RotateSlideHandler 是,rotateItem 旋转指定的 View
AlphaSlideHandler 是,alphaItem 调整指定 View 的透明度
CompositeSlideHandler 是,通过 leftToRightStylerightToLeftStyle 指定 组合两个动作 Handler,分别为左滑和右滑指定单独的动作
DelayTimeSlideHandler 延时器,比如这个滑动动作需要延时若干 ms 再执行
SlideHandlerSet 动作叠加器,可叠加若干动作同时执行
SlideHandlerSequence 动作序列,可将若干动作按顺序依次执行
CallbackSlideHandler 动作执行回调,可和 SlideHandlerSequence 结合执行,在某个动作执行完后回调

7、自定义动作

        可以通过实现 SlideHandler 接口来实现自己的动作,通过 SlideSupporter.setSlideHandler 方法设置到对应的 View。具体可参考 samples 中的 CustomizedSlideActionLayout 的实现。


8、License

/*
 * Copyright (C) 2015 Arno Zhang
 *
 * 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.
 */
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,185评论 25 707
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,435评论 2 45
  • 一向对广场舞抱有好感,觉得它的舞曲节奏明快,朗朗上口,听起来让人痛快淋漓。舞蹈动作简单,舞步轻快,配合着音乐动作协...
    浮生梦一场阅读 449评论 2 3
  • 我的小伙伴名叫小乐,在我稍微懂事一些时,听说她是抱养的。杨家大妈抱她回来时自己的孩子都很大了,自己有两个男孩和一个...
    董董杂文阅读 274评论 1 3
  • 早餐的作用对于女人而言像是找到一份好工作,对于男人而言像是娶上一个好老婆。所以上班一族们千万要注重你的早餐健康哦~...
    萌妞妞学做饭阅读 1,171评论 0 51