您的位置:首页 > 编程语言

史上最好用侧滑布局来自代码家大神的SwipeLayout(基于ViewDragHelper)

2017-11-24 15:41 591 查看
1.远程仓库引用或者本地模块引入 

# Usage

### Step 1
#### Gradle

```groovy
dependencies {
compile 'com.android.support:recyclerview-v7:21.0.0'
compile 'com.android.support:support-v4:20.+'
compile "com.daimajia.swipelayout:library:1.2.0@aar"
}
```

#### Maven

```xml
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r6</version>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>recyclerview-v7</artifactId>
<version>21.0.0</version>
</dependency>
<dependency>
<groupId>com.daimajia.swipelayout</groupId>
<artifactId>library</artifactId>
<version>1.2.0</version>
<type>apklib</type>
</dependency>
```

#### Eclipse

[AndroidSwipeLayout-v1.1.8.jar](https://github.com/daimajia/AndroidSwipeLayout/releases/download/v1.1.8/AndroidSwipeLayout-v1.1.8.jar)

### Step 2

**Make sure to use the internal adapter instead of your own!**

[Wiki Usage](https://github.com/daimajia/AndroidSwipeLayout/wiki/usage)

## Wiki

[Go to Wiki](https://github.com/daimajia/AndroidSwipeLayout/wiki)

2. 注意Listview 和Girdview 使用adapter 为继承 
BaseSwipeAdapter


3.Rv 继承的adpater 为

RecyclerSwipeAdapter

4 下面就RV使用的Demo实例

package com.example.testpic.swpedemo;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.daimajia.swipe.SimpleSwipeListener;
import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.adapters.RecyclerSwipeAdapter;
import com.example.testpic.R;
import java.util.List;
/**
* Created by qundui on 2017/11/24.
* 注意事项
* adpter 主要集成 RecyclerSwipeAdapter 不能集成普通的adapter
*/
public class DemoAdapter extends RecyclerSwipeAdapter<DemoAdapter.SimpleViewHolder> {
Context mContext;
List<String> madtas;

public DemoAdapter(List<String> madtas, Context context) {
this.madtas = madtas;
mContext = context;
}
@Override
public SimpleViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
return new SimpleViewHolder(LayoutInflater.from(mContext).inflate(R.layout.rv_items,viewGroup,false));
}
@Override
public void onBindViewHolder(final SimpleViewHolder simpleViewHolder, final int i) {
simpleViewHolder.tv_data.setText(madtas.get(i));
simpleViewHolder.mSwipeLayout.setShowMode(SwipeLayout.ShowMode.LayDown);//添加策划模式
simpleViewHolder.mSwipeLayout.addSwipeListener(new SimpleSwipeListener() {//侧滑监听
@Override
public void onOpen(SwipeLayout layout) {
//                //打开策划布局时候的搞事情.......
}
});
simpleViewHolder.mSwipeLayout.setOnDoubleClickListener(new SwipeLayout.DoubleClickListener() {
@Override
public void onDoubleClick(SwipeLayout layout, boolean surface) {
Toast.makeText(mContext, "DoubleClick", Toast.LENGTH_SHORT).show();//双击侧滑布局TODO
}
});
simpleViewHolder.tv_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mItemManger.closeAllItems();//关闭策划的布局
}
});
simpleViewHolder.tv_del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mItemManger.removeShownLayouts(simpleViewHolder.mSwipeLayout);

madtas.remove(i);
notifyItemRemoved(i);
notifyItemRangeChanged(i, madtas.size());
mItemManger.closeAllItems();//关闭策划的布局
}
});
mItemManger.bind(simpleViewHolder.itemView, i);//绑定条目管理辅助类

}
@Override
public int getItemCount() {
return madtas.size();
}
//获取策划布局的资源id
@Override
public int getSwipeLayoutResourceId(int i) {
return R.id.swipe;
}
public class SimpleViewHolder extends RecyclerView.ViewHolder {
private SwipeLayout mSwipeLayout;
private TextView tv_data;
private TextView tv_add;
private  TextView tv_del;
public SimpleViewHolder(View itemView) {
super(itemView);
mSwipeLayout= (SwipeLayout) itemView.findViewById(R.id.swipe);
tv_data= (TextView) itemView.findViewById(R.id.tv_data);
tv_add= (TextView) itemView.findViewById(R.id.tv_add);
tv_del= (TextView) itemView.findViewById(R.id.tv_del);
}
}
}
4.item 布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:swipe="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.daimajia.swipe.SwipeLayout
android:id="@+id/swipe"
android:layout_width="match_parent"
android:layout_height="wrap_content"
swipe:leftEdgeSwipeOffset="0dp"
swipe:rightEdgeSwipeOffset="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="添加"
android:id="@+id/tv_add"
android:background="@color/aliceblue"
/>
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center_horizontal"
android:layout_height="wrap_content"
android:background="@color/aqua"
android:text="删除"
android:id="@+id/tv_del"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_data"
android:text="data"
/>
</LinearLayout>
</com.daimajia.swipe.SwipeLayout>
</LinearLayout>
5 :UI界面使用(主页面布局就一个RV)
package com.example.testpic.swpedemo;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import com.daimajia.swipe.util.Attributes;
import com.example.testpic.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by gsc on 2017/11/24. jiangnanyizhou (QQ:373654981)
*/
public class Demo2 extends Activity {
private RecyclerView mRecyclerView;
private List<String> mdatas=new ArrayList<String>();
private DemoAdapter mDemoAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo2);
mRecyclerView= (RecyclerView) findViewById(R.id.rv);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
mdatas=init(mdatas);
mDemoAdapter = new DemoAdapter(mdatas, this);
mRecyclerView.setAdapter(mDemoAdapter);
mDemoAdapter.setMode(Attributes.Mode.Single);//设置单选模式 和 Single, Multiple; 和多选模式
}
private List<String> init(List<String> mdatas) {
for(int i=0;i<30;i++){
mdatas.add("item"+(i+1));

}
return mdatas;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: