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