近来在 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
配置滑动类型(none
、leftToRight
、rightToLeft
、both
)
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
是,通过 leftToRightStyle
和 rightToLeftStyle
指定
组合两个动作 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.
*/
最后编辑于 :2017.12.11 07:39:16
©著作权归作者所有,转载或内容合作请联系作者 平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。