Android-SlideSupport-ListLayouts 使用简介

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

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

1、支持的 Layout

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

2、相关下载

  • library aar:Android-SlideSupport-ListLayouts__1.0.aar
  • samples apk:Android-SlideSupport-ListLayouts__samples.apk

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 和滑动动作


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



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

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


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


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


属性 生效的动作类型 作用
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.
 */

你可能感兴趣的:(Android-SlideSupport-ListLayouts 使用简介)