答案 0 :(得分:0)
即使仅适用于三星设备
您可以在任何设备上实现此功能。我首先在Mi设备中发现了此功能。
有点复杂。但是您可以将DragSelectRecyclerView之类的库用于此目的。
在您的 build.gradle中添加以下代码:
dependencies {
implementation 'com.github.MFlisar:DragSelectRecyclerView:0.3'
}
在您的Java文件中,添加以下代码:
创建触摸监听器。
mDragSelectTouchListener = new DragSelectTouchListener()
.withSelectListener(onDragSelectionListener)
// following is all optional
.withMaxScrollDistance(distance) // default: 16; defines the speed of the auto scrolling
.withTopOffset(toolbarHeight) // default: 0; set an offset for the touch region on top of the RecyclerView
.withBottomOffset(toolbarHeight) // default: 0; set an offset for the touch region on bottom of the RecyclerView
.withScrollAboveTopRegion(enabled) // default: true; enable auto scrolling, even if the finger is moved above the top region
.withScrollBelowTopRegion(enabled) // default: true; enable auto scrolling, even if the finger is moved below the top region
.withDebug(enabled);
将此触摸侦听器附加到RecyclerView
。
recyclerView.addOnItemTouchListener(mDragSelectTouchListener);
长按项目时,通知听众开始拖动选择。
mDragSelectTouchListener.startDragSelection(position);
使用DragSelectionProcessor
,它可以实现上述界面,并可以设置4种模式:
Simple
:只需选择您要经过的每个项目,然后在退回时取消选择ToggleAndUndo
:切换每个项目的原始状态,移回时恢复为原始状态FirstItemDependent
:切换第一项并将相同的状态应用于您经过的每个项目,并在向后移动时应用反转状态FirstItemDependentToggleAndUndo
:切换项目并将相同的状态应用于您经过的每个项目,并在移回时恢复为原始状态在其构造函数中提供ISelectionHandler
并实现以下功能:
onDragSelectionListener = new DragSelectionProcessor(new DragSelectionProcessor.ISelectionHandler() {
@Override
public Set<Integer> getSelection() {
// return a set of all currently selected indizes
return selection;
}
@Override
public boolean isSelected(int index) {
// return the current selection state of the index
return selected;
}
@Override
public void updateSelection(int start, int end, boolean isSelected, boolean calledFromOnStart) {
// update your selection
// range is inclusive start/end positions
// and the processor has already converted all events according to it'smode
}
})
// pass in one of the 4 modes, simple mode is selected by default otherwise
.withMode(DragSelectionProcessor.Mode.FirstItemDependentToggleAndUndo);
您可以看到一个演示活动here。
还有其他相同目的的库吗?
是的,您还可以使用 afollestad 的Drag Select Recycler View。并且您可以看到afollestad的Drag select Recycler View here的实际实现。