Android-SlideSupport-ListLayouts 使用簡介

????????近來在 github 上發(fā)布了一個 repo——Android-SlideSupport-ListLayouts,點此訪問項目

????????Android-SlideSupport-ListLayouts 是一款用于為 Android 上的 List 排布提供左滑右滑操作的庫。目前支持的 Layout 主要有: ListView、RecyclerView、ScrollView、ExpandableListView 等。另外還可以與 SwpieRefreshLayout、PullToRefresh 等等第三方庫協(xié)同工作。
<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 旋轉(zhuǎn)配置的 View
alphaItem 調(diào)整配置 View 的透明度

4.5、XML 中支持配置的屬性

屬性 作用
slideMode 配置滑動類型(none、leftToRight、rightToLeft、both
slideStyle 配置滑動動作(一次性指定左右兩個方向的滑動動作)
leftToRightSlideStyle 指定從左往右滑動的動作
rightToLeftSlideStyle 指定從右往左滑動的動作
leftViewId 指定左邊的滑動 View Id
rightViewId 指定右邊的滑動 View Id
contentViewId 指定整個根 View 的 Id,以支持聯(lián)動
slideDuration 滑動時長,ms
slideInterpolator 滑動的插值器,如 @android:anim/decelerate_interpolator

<br />
????????其中,Move、Scale、Rotate 還可以單獨指定屬性:

屬性 生效的動作類型 作用
slideMoveDistance moveItemOnly & moveWithContent 手動設置滑動距離(很少用到,除非有非常特殊的情況)
屬性 生效的動作類型 作用
fromScale scaleItem 縮放開始比例
toScale scaleItem 縮放結(jié)束比例
scaleDuration scaleItem 縮放時長,ms

<br />

屬性 生效的動作類型 作用
fromScale scaleItem 縮放開始比例
toScale scaleItem 縮放結(jié)束比例
scaleDuration scaleItem 縮放時長,ms
屬性 生效的動作類型 作用
fromDegree rotateItem 旋轉(zhuǎn)開始角度
toDegree rotateItem 旋轉(zhuǎn)結(jié)束角度
rotateDuration rotateItem 旋轉(zhuǎn)時長,ms

<br />

屬性 生效的動作類型 作用
fromDegree rotateItem 旋轉(zhuǎn)開始角度
toDegree rotateItem 旋轉(zhuǎn)結(jié)束角度
rotateDuration rotateItem 旋轉(zhuǎn)時長,ms
屬性 生效的動作類型 作用
fromAlpha alphaItem 開始透明度,[ 0, 1.0f ]
toAlpha alphaItem 結(jié)束透明度,[ 0, 1.0f ]
alphaDuration alphaItem 透明度漸變時長,ms

<br />

屬性 生效的動作類型 作用
fromAlpha alphaItem 開始透明度,[ 0, 1.0f ]
toAlpha alphaItem 結(jié)束透明度,[ 0, 1.0f ]
alphaDuration alphaItem 透明度漸變時長,ms

5、XML 中必須配置的屬性

????????一般來說,大部分屬性都有默認值,如果你要一個簡單的效果,有下面幾項在對應情況下是必須配置的:

  • leftViewId:想要從左往右滑動效果時必須指定
  • rightViewId:想要從右往左滑動效果時必須指定
  • contentViewId:想要滑動 View 和 contentView 聯(lián)動時必須配置(如 slideStyle 為 moveWithContent

6、滑動動作列表

????????滑動的具體展現(xiàn)方式是通過 SlideHandler 來配置的,目前支持的滑動動作列表如下:

動作 是否支持在 XML 中指定 作用
MoveItemOnlySlideHandler 是,moveItemOnly 只滑動指定的 View
MoveWithContentSlideHandler 是,moveWithContent 聯(lián)動滑動 ContentView 和指定的 View
ScaleSlideHandler 是,scaleItem 縮放指定的 View
RotateSlideHandler 是,rotateItem 旋轉(zhuǎn)指定的 View
AlphaSlideHandler 是,alphaItem 調(diào)整指定 View 的透明度
CompositeSlideHandler 是,通過 leftToRightStylerightToLeftStyle 指定 組合兩個動作 Handler,分別為左滑和右滑指定單獨的動作
DelayTimeSlideHandler 延時器,比如這個滑動動作需要延時若干 ms 再執(zhí)行
SlideHandlerSet 動作疊加器,可疊加若干動作同時執(zhí)行
SlideHandlerSequence 動作序列,可將若干動作按順序依次執(zhí)行
CallbackSlideHandler 動作執(zhí)行回調(diào),可和 SlideHandlerSequence 結(jié)合執(zhí)行,在某個動作執(zhí)行完后回調(diào)

7、自定義動作

????????可以通過實現(xiàn) SlideHandler 接口來實現(xiàn)自己的動作,通過 SlideSupporter.setSlideHandler 方法設置到對應的 View。具體可參考 samples 中的 CustomizedSlideActionLayout 的實現(xiàn)。


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.
 */
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,898評論 2 45
  • 一向?qū)V場舞抱有好感,覺得它的舞曲節(jié)奏明快,朗朗上口,聽起來讓人痛快淋漓。舞蹈動作簡單,舞步輕快,配合著音樂動作協(xié)...
    一生追夢的人閱讀 589評論 2 3
  • 我的小伙伴名叫小樂,在我稍微懂事一些時,聽說她是抱養(yǎng)的。楊家大媽抱她回來時自己的孩子都很大了,自己有兩個男孩和一個...
    董董雜文閱讀 329評論 1 4
  • 早餐的作用對于女人而言像是找到一份好工作,對于男人而言像是娶上一個好老婆。所以上班一族們千萬要注重你的早餐健康哦~...
    萌妞妞學做飯閱讀 1,315評論 0 51

友情鏈接更多精彩內(nèi)容