Android-SlideSupport-ListLayouts 使用简介

Posted 牧秦丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android-SlideSupport-ListLayouts 使用简介相关的知识,希望对你有一定的参考价值。

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、相关下载

3、使用预览

ListViewRecyclerView + SwipeRefreshLayoutListView + PullToRefresh Library
ExpandableListViewCustomized Slide Action

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



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

属性生效的动作类型作用
slideMoveDistancemoveItemOnly & moveWithContent手动设置滑动距离(很少用到,除非有非常特殊的情况)


属性生效的动作类型作用
fromScalescaleItem缩放开始比例
toScalescaleItem缩放结束比例
scaleDurationscaleItem缩放时长,ms


属性生效的动作类型作用
fromDegreerotateItem旋转开始角度
toDegreerotateItem旋转结束角度
rotateDurationrotateItem旋转时长,ms


属性生效的动作类型作用
fromAlphaalphaItem开始透明度,[ 0, 1.0f ]
toAlphaalphaItem结束透明度,[ 0, 1.0f ]
alphaDurationalphaItem透明度渐变时长,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 使用简介的主要内容,如果未能解决你的问题,请参考以下文章