android-drag-FlowLayout

介绍:

一个可拖动、删除的流式布局。

运行效果:

使用说明:

Gradle Config

compile 'com.heaven7.android.dragflowlayout:dragflowlayout:1.0.6'
  • 1, 导入下面的gradle 配置。

  • 2,设置点击事件处理器 和 数据适配器.

  •   mDragflowLayout.setOnItemClickListener(new DragFlowLayout.OnItemClickListener() {
                @Override
                public boolean performClick(DragFlowLayout dragFlowLayout, View child,
                                            MotionEvent event, int dragState) {
                    //检查是否点击了关闭按钮(iv_close控件)。点击了就删除
                    //ViewUtils.isViewUnderInScreen 判断点击事件是否是你需要的.
                    //dragState 是拖拽状态。
                    boolean performed = dragState != DragFlowLayout.DRAG_STATE_IDLE
                            && ViewUtils.isViewUnderInScreen(child.findViewById(R.id.iv_close),
                            (int) event.getRawX(),(int) event.getRawY());
                    if(performed){
                        dragFlowLayout.removeView(child);
                    }
                    //点击事件
                    return performed;
                }
            });
            mDragflowLayout.setDragAdapter(new DragAdapter<TestBean>() {
                @Override
                public int getItemLayoutId() {
                    return R.layout.item_drag_flow;
                }
                @Override
                public void onBindData(View itemView, int dragState, TestBean data) {
                    itemView.setTag(data);
                    TextView tv = (TextView) itemView.findViewById(R.id.tv_text);
                    tv.setText(data.text);
                    //iv_close是关闭按钮。只有再非拖拽空闲的情况吓才显示
                    itemView.findViewById(R.id.iv_close).setVisibility(
                            dragState!= DragFlowLayout.DRAG_STATE_IDLE
                            && data.draggable ? View.VISIBLE : View.INVISIBLE);
                }
                @NonNull
                @Override
                public TestBean getData(View itemView) {
                    return (TestBean) itemView.getTag();
                }
            });
    
  • 3, item管理: 对item的增删改查-,即CRUD. 通过api: mDragflowLayout.getDragItemManager()。 即可得到DragItemManager.

  • 4, 禁止个别Item拖拽。

  • //数据实体实现IDraggable 接口,并且 isDraggable 为false即可
     private static class  TestBean implements IDraggable{
            String text;
            boolean draggable = true;
            public TestBean(String text) {
                this.text = text;
            }
            @Override
            public boolean isDraggable() {
                return draggable;
            }
        }
    
  • 5, 如果要使用布局动画,请用ViewGroup.setLayoutTransaction(...) .

  • 6, 更多详情请参见demo.

已下载
0