这绝对可以实现,幸运的是,大部分工作已经完成,但您需要稍微修改一个类以满足您的规范。
默认的 Android 音乐应用程序包含您需要的所有课程。
首先,您需要获取他们ListView
允许拖放的自定义。
可以在这里找到 - TouchInterceptor.java。
您还需要获取他们Cursor
用于实际移动ListView
. 这是一个内部类,称为NowPlayingCursor
.
可以在这里找到 - TrackBrowserActivity.java
NowPlayingCursor
扩展AbstractCursor
,它用于返回队列。该方法makeNowPlayingCursor()
专门用于编写大部分自己的代码。您需要返回您有兴趣移动的项目,而不是返回队列,无论它们是什么。
为了使用TouchInterceptor
,您需要实现TouchInterceptor.DropListener
.
private TouchInterceptor.DropListener mDropListener =
new TouchInterceptor.DropListener() {
public void drop(int from, int to) {
final NowPlayingCursor mNowPlayingCursor = (NowPlayingCursor) YOUR_CURSOR;
mNowPlayingCursor.moveItem(from, to);
// Call `notifyDataSetChanged` here.
}
};
您还应该查看他们moveQueueItem
用于将项目从一个索引移动到另一个索引的方法。该方法用于NowPlayingCursor
whenonMove
和moveItem
被调用。
可以在这里找到 - MediaPlaybackService.java
所以,你有一些工作要做,但这绝对是可能的。