From 675bd55596aa4af98748a31c28947c9378fe160f Mon Sep 17 00:00:00 2001
From: 陶汉栋 <2821744554@qq.com>
Date: Thu, 15 Mar 2018 17:24:56 +0800
Subject: [PATCH] no message

---
 app/src/main/AndroidManifest.xml                                           |   1 +
 app/src/main/java/com/shunzhi/parent/contract/report/ReportContract.java   |   4 ++++
 app/src/main/java/com/shunzhi/parent/model/report/ReportModel.java         |   5 +++++
 app/src/main/java/com/shunzhi/parent/popu/ShaiXuanPop.java                 | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 app/src/main/java/com/shunzhi/parent/popu/handygrid/TagView.java           | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 app/src/main/java/com/shunzhi/parent/presenter/report/ReportPresenter.java |  14 ++++++++++++++
 app/src/main/java/com/shunzhi/parent/ui/fragment/CePingFragment.java       |  16 +++++++++++++++-
 app/src/main/java/com/shunzhi/parent/ui/fragment/ConsultFragment.java      |   2 +-
 app/src/main/java/com/shunzhi/parent/ui/fragment/ReportFragment.java       |  48 ++++++++++++++++++++++++++++++++++++++++--------
 app/src/main/java/com/shunzhi/parent/views/DragFloatActionButton.java      | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 app/src/main/res/drawable-xhdpi/ic_delete.png                              | Bin 0 -> 593 bytes
 app/src/main/res/drawable/s_grid_item.xml                                  |  15 +++++++++++++++
 app/src/main/res/drawable/shape_blue_normal.xml                            |   9 +++++++++
 app/src/main/res/drawable/shape_blue_select.xml                            |   7 +++++++
 app/src/main/res/drawable/shape_edit_radius4_balck.xml                     |   7 +++++++
 app/src/main/res/layout/fragment_ce_ping.xml                               |   5 ++++-
 app/src/main/res/layout/fragment_report.xml                                |   6 ++++--
 app/src/main/res/layout/item_report.xml                                    |  14 +++++++-------
 app/src/main/res/layout/layout_consult_content.xml                         |   1 +
 app/src/main/res/layout/popu_shaixuan.xml                                  |  90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 app/src/main/res/values/dimens.xml                                         |  16 ++++++++--------
 mvpsdk/build.gradle                                                        |   3 +++
 mvpsdk/src/main/res/values/strings.xml                                     |   2 +-
 23 files changed, 623 insertions(+), 29 deletions(-)
 create mode 100644 app/src/main/java/com/shunzhi/parent/popu/ShaiXuanPop.java
 create mode 100644 app/src/main/java/com/shunzhi/parent/popu/handygrid/TagView.java
 create mode 100644 app/src/main/java/com/shunzhi/parent/views/DragFloatActionButton.java
 create mode 100644 app/src/main/res/drawable-xhdpi/ic_delete.png
 create mode 100644 app/src/main/res/drawable/s_grid_item.xml
 create mode 100644 app/src/main/res/drawable/shape_blue_normal.xml
 create mode 100644 app/src/main/res/drawable/shape_blue_select.xml
 create mode 100644 app/src/main/res/drawable/shape_edit_radius4_balck.xml
 create mode 100644 app/src/main/res/layout/popu_shaixuan.xml

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5c015e5..c3568ba 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -72,6 +72,7 @@
             </intent-filter>
         </activity>
          <activity android:name=".ui.MainActivity"
+             android:windowSoftInputMode="adjustPan|stateAlwaysHidden"
              android:screenOrientation="portrait" />
         <activity
             android:name=".ui.activity.MyChildActivity"
diff --git a/app/src/main/java/com/shunzhi/parent/contract/report/ReportContract.java b/app/src/main/java/com/shunzhi/parent/contract/report/ReportContract.java
index 79ea0b4..0e10054 100644
--- a/app/src/main/java/com/shunzhi/parent/contract/report/ReportContract.java
+++ b/app/src/main/java/com/shunzhi/parent/contract/report/ReportContract.java
@@ -17,11 +17,15 @@ public interface ReportContract {
     abstract  class  ReportPresenter extends BasePresenter<IReportModel,IReportView> {
         public abstract void reportResult();
 
+        public abstract void getReports();
     }
     interface  IReportModel extends IBaseModel{
         Observable<ReportBean> getReportResult();
+        void getReports();
     }
     interface IReportView extends IBaseView{
        void UpdateList(List<ReportBean>list);
+
+       void showReports(List<String> stringList);
     }
 }
diff --git a/app/src/main/java/com/shunzhi/parent/model/report/ReportModel.java b/app/src/main/java/com/shunzhi/parent/model/report/ReportModel.java
index 5d8f943..ba6b044 100644
--- a/app/src/main/java/com/shunzhi/parent/model/report/ReportModel.java
+++ b/app/src/main/java/com/shunzhi/parent/model/report/ReportModel.java
@@ -18,4 +18,9 @@ public class ReportModel implements ReportContract.IReportModel {
     public Observable<ReportBean> getReportResult() {
         return null;
     }
+
+    @Override
+    public void getReports() {
+
+    }
 }
diff --git a/app/src/main/java/com/shunzhi/parent/popu/ShaiXuanPop.java b/app/src/main/java/com/shunzhi/parent/popu/ShaiXuanPop.java
new file mode 100644
index 0000000..3f2c3f9
--- /dev/null
+++ b/app/src/main/java/com/shunzhi/parent/popu/ShaiXuanPop.java
@@ -0,0 +1,156 @@
+package com.shunzhi.parent.popu;
+
+import android.content.Context;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.BaseAdapter;
+import android.widget.GridView;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import com.huxq17.handygridview.HandyGridView;
+import com.share.mvpsdk.utils.DisplayUtils;
+import com.shunzhi.parent.R;
+import com.shunzhi.parent.popu.handygrid.TagView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by ToaHanDong on 2018/3/15.
+ */
+
+public class ShaiXuanPop extends PopupWindow {
+
+    HandyGridView handyGridView = null;
+
+    List<String> stringList = null;
+
+    private Context mContext = null;
+
+    MyGridAdapter myGridAdapter = null;
+
+    TextView tvSubmit;
+
+    public ShaiXuanPop(Context context) {
+        mContext = context;
+
+        View view = View.inflate(context, R.layout.popu_shaixuan, null);
+        handyGridView = view.findViewById(R.id.handyGridView);
+        tvSubmit=view.findViewById(R.id.tvSubmit);
+        stringList = new ArrayList<>();
+
+        setWidth(WindowManager.LayoutParams.MATCH_PARENT);
+        setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
+
+        setOutsideTouchable(true);
+        setFocusable(true);
+        setBackgroundDrawable(new BitmapDrawable());
+
+        setContentView(view);
+        update();
+
+        tvSubmit.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+
+    }
+
+    public void show(View parent) {
+        showAsDropDown(parent);
+    }
+
+    public void setDatas(List<String> strings) {
+
+        if (null != stringList) {
+            stringList.clear();
+            stringList.addAll(strings);
+        }
+
+        if (null == myGridAdapter) myGridAdapter = new MyGridAdapter();
+        if (null == handyGridView.getAdapter()) handyGridView.setAdapter(myGridAdapter);
+        myGridAdapter.notifyDataSetChanged();
+
+    }
+
+    private class MyGridAdapter extends BaseAdapter {
+
+        private GridView mGridView;
+        private boolean inEditMode = false;//设置是否可以编辑
+
+        public void setInEditMode(boolean inEditMode) {
+            this.inEditMode = inEditMode;
+            notifyDataSetChanged();
+        }
+
+        @Override
+        public int getCount() {
+            return stringList.size();
+        }
+
+        @Override
+        public Object getItem(int i) {
+            return stringList.get(i);
+        }
+
+        @Override
+        public long getItemId(int i) {
+            return i;
+        }
+
+        @Override
+        public View getView(int i, View convertView, ViewGroup viewGroup) {
+
+            if (mGridView == null) {
+                mGridView = (GridView) viewGroup;
+            }
+
+            TagView textView;
+
+            if (convertView == null) {
+                textView = new TagView(mContext);
+                convertView = textView;
+                textView.setMaxLines(1);
+                textView.setHeight(DisplayUtils.dp2px(30));
+                int id = mContext.getResources().getIdentifier("s_grid_item", "drawable", mContext.getPackageName());
+                Drawable drawable = mContext.getResources().getDrawable(id);
+                textView.setBackgroundDrawable(drawable);
+                textView.setTextColor(mContext.getResources().getColor(R.color.huodong_blue));
+                textView.setGravity(Gravity.CENTER);
+                textView.setTag(false);
+            } else {
+                textView = (TagView) convertView;
+            }
+
+            textView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    boolean isSelect = (boolean) view.getTag();
+                    view.setTag(!isSelect);
+                    notifyDataSetChanged();
+                }
+            });
+
+            boolean isSelect = (boolean) textView.getTag();
+            if (isSelect) {
+                textView.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.shape_blue_select));
+                textView.setTextColor(mContext.getResources().getColor(R.color.white));
+            } else {
+                textView.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.shape_blue_normal));
+                textView.setTextColor(mContext.getResources().getColor(R.color.huodong_blue));
+            }
+            textView.showDeleteIcon(false);
+            textView.setText(getItem(i).toString());
+            return convertView;
+        }
+    }
+
+
+}
diff --git a/app/src/main/java/com/shunzhi/parent/popu/handygrid/TagView.java b/app/src/main/java/com/shunzhi/parent/popu/handygrid/TagView.java
new file mode 100644
index 0000000..b4d45c2
--- /dev/null
+++ b/app/src/main/java/com/shunzhi/parent/popu/handygrid/TagView.java
@@ -0,0 +1,116 @@
+package com.shunzhi.parent.popu.handygrid;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+
+import com.share.mvpsdk.utils.DisplayUtils;
+import com.shunzhi.parent.R;
+
+/**
+ * Created by ToaHanDong on 2018/3/15.
+ */
+
+public class TagView extends android.support.v7.widget.AppCompatTextView {
+    private Drawable deleteIcon;
+    private int iconWidth;
+    private int iconHeight;
+    private boolean showIcon = true;
+    private Rect mDelteRect;
+    private Rect mAssumeDelteRect;
+
+    public TagView(Context context) {
+        super(context);
+//        int id = context.getResources().getIdentifier("ic_delete", "drawable", context.getPackageName());
+        deleteIcon = context.getResources().getDrawable(R.drawable.ic_delete);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        if (mAssumeDelteRect == null) {
+            setDeleteBounds();
+        }
+        if (showIcon) {
+            deleteIcon.draw(canvas);
+        }
+    }
+
+    private void setDeleteBounds() {
+        iconWidth = deleteIcon.getIntrinsicWidth();
+        iconHeight = deleteIcon.getIntrinsicHeight();
+        int left = getWidth() - iconWidth;
+        int top = 0;
+        mDelteRect = new Rect(left, top, left + iconWidth, top + iconHeight);
+        //padding扩大了icon的点击范围
+        int padding = DisplayUtils.dp2px(10);
+        mAssumeDelteRect = new Rect(mDelteRect.left, mDelteRect.top, mDelteRect.left + iconWidth + padding, mDelteRect.top + iconHeight + padding);
+        deleteIcon.setBounds(mDelteRect);
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        int action = event.getAction();
+        int x = (int) event.getX();
+        int y = (int) event.getY();
+        boolean contains = mAssumeDelteRect.contains(x, y);
+        switch (action) {
+            case MotionEvent.ACTION_DOWN:
+                if (contains && showIcon) {
+                    return true;
+                }
+                break;
+            case MotionEvent.ACTION_MOVE:
+                break;
+            case MotionEvent.ACTION_UP:
+                if (contains && showIcon) {
+                    if (mListener != null) {
+                        mListener.onDelete(this);
+                    }
+                    return true;
+                }
+                break;
+        }
+        return super.onTouchEvent(event);
+    }
+
+    private void log(String msg) {
+        Log.e(getClass().getCanonicalName(), msg);
+    }
+
+    public void showDeleteIcon(boolean show) {
+        showIcon = show;
+        invalidate();
+    }
+
+    private OnTagDeleteListener mListener;
+
+    public void setOnTagDeleteListener(OnTagDeleteListener listener) {
+        mListener = listener;
+    }
+
+    public interface OnTagDeleteListener {
+        /**
+         * Delete view.
+         *
+         * @param deleteView
+         */
+        void onDelete(View deleteView);
+    }
+//    @Override
+//    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+////        int widthSize = 100;
+//        int heightSize = DensityUtil.dip2px(getContext(),40);
+////
+////        widthMeasureSpec = MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.AT_MOST);
+//        heightMeasureSpec = MeasureSpec.makeMeasureSpec(heightSize, MeasureSpec.AT_MOST);
+//        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
+////        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+//        Log.e("onmea","width="+getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec)+";height="+getDefaultSize(getSuggestedMinimumHeight(),heightMeasureSpec));
+//    }
+}
diff --git a/app/src/main/java/com/shunzhi/parent/presenter/report/ReportPresenter.java b/app/src/main/java/com/shunzhi/parent/presenter/report/ReportPresenter.java
index ec9d4a2..996c7a1 100644
--- a/app/src/main/java/com/shunzhi/parent/presenter/report/ReportPresenter.java
+++ b/app/src/main/java/com/shunzhi/parent/presenter/report/ReportPresenter.java
@@ -32,4 +32,18 @@ public class ReportPresenter extends ReportContract.ReportPresenter{
         mIView.UpdateList(list);
 
     }
+
+    @Override
+    public void getReports() {
+
+        List<String> stringList=new ArrayList<>();
+
+        stringList.add("全部");
+        stringList.add("作业+");
+        stringList.add("测评+");
+        stringList.add("德育+");
+
+        mIView.showReports(stringList);
+
+    }
 }
diff --git a/app/src/main/java/com/shunzhi/parent/ui/fragment/CePingFragment.java b/app/src/main/java/com/shunzhi/parent/ui/fragment/CePingFragment.java
index 06e8530..f018840 100644
--- a/app/src/main/java/com/shunzhi/parent/ui/fragment/CePingFragment.java
+++ b/app/src/main/java/com/shunzhi/parent/ui/fragment/CePingFragment.java
@@ -8,6 +8,7 @@ import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.design.widget.FloatingActionButton;
+import android.util.Log;
 import android.view.View;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
@@ -22,6 +23,7 @@ import com.shunzhi.parent.AppContext;
 import com.shunzhi.parent.R;
 import com.shunzhi.parent.contract.ceping.CepingContract;
 import com.shunzhi.parent.presenter.ceping.CePingPresenter;
+import com.shunzhi.parent.views.DragFloatActionButton;
 import com.shunzhi.parent.views.TextAndImgShowView;
 
 import me.leefeng.citypicker.CityPicker;
@@ -63,6 +65,7 @@ public class CePingFragment extends BaseMVPCompatFragment<CepingContract.CePingP
 
         addTools();
 
+        tvLocalAddress.setText(AppContext.getInstance().cityName);
         textAndImg_xqjc.setTextColor(R.color.white);
         textAndImg_xqjc.setText("学情检测");
         textAndImg_xqjc.setImgs(R.drawable.xqjc,R.drawable.xqjc);
@@ -74,7 +77,18 @@ public class CePingFragment extends BaseMVPCompatFragment<CepingContract.CePingP
         textAndImg_zxlx.setSelect(true);
 
         initListeners(view);
-        floatingActionButton.setRippleColor(getResources().getColor(R.color.white));
+        floatingActionButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+//        floatingActionButton.setOnClickListeners(new DragFloatActionButton.OnClickListeners() {
+//            @Override
+//            public void onClicks() {
+//                ToastUtils.showToast("dfafdaf");
+//            }
+//        });
     }
 
     private void addTools() {
diff --git a/app/src/main/java/com/shunzhi/parent/ui/fragment/ConsultFragment.java b/app/src/main/java/com/shunzhi/parent/ui/fragment/ConsultFragment.java
index acf2804..a71cf4b 100644
--- a/app/src/main/java/com/shunzhi/parent/ui/fragment/ConsultFragment.java
+++ b/app/src/main/java/com/shunzhi/parent/ui/fragment/ConsultFragment.java
@@ -84,7 +84,7 @@ public class ConsultFragment extends BaseMVPCompatFragment<ConsultContract.Consu
     }
 
     private void initBanners() {
-
+        tvLocalAddress.setText(AppContext.getInstance().cityName);
         InputStream inputStream = getClass().getResourceAsStream("/assets/banners.png");
         try {
             imgesUrl.add(new String(InputStreamToByte(inputStream)));
diff --git a/app/src/main/java/com/shunzhi/parent/ui/fragment/ReportFragment.java b/app/src/main/java/com/shunzhi/parent/ui/fragment/ReportFragment.java
index cda8469..d4fd462 100644
--- a/app/src/main/java/com/shunzhi/parent/ui/fragment/ReportFragment.java
+++ b/app/src/main/java/com/shunzhi/parent/ui/fragment/ReportFragment.java
@@ -7,26 +7,26 @@ import android.support.annotation.Nullable;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
+import android.widget.TextView;
 
 import com.amy.monthweek.materialcalendarview.MonthWeekMaterialCalendarView;
 import com.prolificinteractive.materialcalendarview.CalendarDay;
 import com.prolificinteractive.materialcalendarview.MaterialCalendarView;
 import com.share.mvpsdk.base.BasePresenter;
 import com.share.mvpsdk.base.fragment.BaseMVPCompatFragment;
-import com.share.mvpsdk.utils.ToastUtils;
 import com.shunzhi.parent.R;
 import com.shunzhi.parent.adapter.ReportAdapter;
 import com.shunzhi.parent.bean.ReportBean;
 import com.shunzhi.parent.contract.report.ReportContract;
+import com.shunzhi.parent.popu.ShaiXuanPop;
 import com.shunzhi.parent.presenter.report.ReportPresenter;
 import com.shunzhi.parent.views.CustomLinearLayoutManager;
 
-import java.util.Calendar;
-import java.util.Date;
 import java.util.List;
 
 public class ReportFragment extends BaseMVPCompatFragment<ReportContract.ReportPresenter, ReportContract.IReportModel>
-        implements ReportContract.IReportView {
+        implements ReportContract.IReportView ,View.OnClickListener{
+
     RecyclerView recyclerView;
     ReportAdapter reportAdapter;
 
@@ -36,6 +36,10 @@ public class ReportFragment extends BaseMVPCompatFragment<ReportContract.ReportP
 
     MaterialCalendarView calendarView_month_mode;
 
+    TextView tvDate,tvShaiXuan;
+
+    ShaiXuanPop shaiXuanPop=null;
+
     @NonNull
     @Override
     public BasePresenter initPresenter() {
@@ -50,7 +54,9 @@ public class ReportFragment extends BaseMVPCompatFragment<ReportContract.ReportP
     @Override
     public void initUI(View view, @Nullable Bundle savedInstanceState) {
         recyclerView = view.findViewById(R.id.recycle_report);
-        calendarView_month_mode=view.findViewById(R.id.calendarView_month_mode);
+        calendarView_month_mode = view.findViewById(R.id.calendarView_month_mode);
+        tvDate = view.findViewById(R.id.tvDate);
+        tvShaiXuan=view.findViewById(R.id.tvShaiXuan);
 
         LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
         layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
@@ -64,33 +70,41 @@ public class ReportFragment extends BaseMVPCompatFragment<ReportContract.ReportP
     }
 
     private void initCalendarView() {
-//        month_week_CalendarView.setMode(MonthWeekMaterialCalendarView.Mode.MONTH);
+
         selectedDate = CalendarDay.today();
+        showDate();
         monthWeekMaterialCalendarView.setMode(MonthWeekMaterialCalendarView.Mode.WEEK);
         monthWeekMaterialCalendarView.setCurrentDate(selectedDate);
         monthWeekMaterialCalendarView.setSelectedDate(selectedDate);
         monthWeekMaterialCalendarView.state().edit().setSlideModeChangeListener(new MonthWeekMaterialCalendarView.SlideModeChangeListener() {
             @Override
-                public void modeChange(MonthWeekMaterialCalendarView.Mode mode) {
+            public void modeChange(MonthWeekMaterialCalendarView.Mode mode) {
 
             }
         }).setSlideDateSelectedlistener(new MonthWeekMaterialCalendarView.SlideDateSelectedlistener() {
             @Override
             public void onDateSelected(@NonNull MaterialCalendarView widget, @NonNull CalendarDay date, boolean selected) {
                 selectedDate = date;
+                showDate();
 
             }
         }).setSlideOnMonthChangedListener(new MonthWeekMaterialCalendarView.SlideOnMonthChangedListener() {
             @Override
             public void onMonthChanged(MaterialCalendarView widget, CalendarDay date) {
-
+                selectedDate = date;
+                showDate();
             }
         }).commit();
 
     }
 
+    private void showDate() {
+        tvDate.setText(selectedDate.getYear() + "年" + (selectedDate.getMonth() + 1) + "月");
+    }
+
     private void initReportList() {
         mPresenter.reportResult();
+        tvShaiXuan.setOnClickListener(this);
     }
 
     @Override
@@ -99,4 +113,22 @@ public class ReportFragment extends BaseMVPCompatFragment<ReportContract.ReportP
         reportAdapter.addAll(list);
         recyclerView.setAdapter(reportAdapter);
     }
+
+    @Override
+    public void showReports(List<String> stringList) {
+        if (null!=shaiXuanPop){
+            shaiXuanPop.setDatas(stringList);
+            shaiXuanPop.show(tvShaiXuan);
+        }
+    }
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()){
+            case R.id.tvShaiXuan:
+                if (null==shaiXuanPop)shaiXuanPop=new ShaiXuanPop(getActivity());
+                mPresenter.getReports();
+                break;
+        }
+    }
 }
diff --git a/app/src/main/java/com/shunzhi/parent/views/DragFloatActionButton.java b/app/src/main/java/com/shunzhi/parent/views/DragFloatActionButton.java
new file mode 100644
index 0000000..8c467d0
--- /dev/null
+++ b/app/src/main/java/com/shunzhi/parent/views/DragFloatActionButton.java
@@ -0,0 +1,115 @@
+package com.shunzhi.parent.views;
+
+import android.animation.ObjectAnimator;
+import android.content.Context;
+import android.support.design.widget.FloatingActionButton;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.ViewGroup;
+import android.view.animation.DecelerateInterpolator;
+
+
+/**
+ * Created by ToaHanDong on 2018/3/15.
+ */
+
+public class DragFloatActionButton extends FloatingActionButton {
+    private int parentHeight;
+    private int parentWidth;
+
+    public DragFloatActionButton(Context context) {
+        super(context);
+    }
+
+    public DragFloatActionButton(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+    }
+
+    public DragFloatActionButton(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    private int lastX;
+    private int lastY;
+
+    private boolean isDrag;
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        int rawX = (int) event.getRawX();
+        int rawY = (int) event.getRawY();
+
+        switch (event.getAction() & MotionEvent.ACTION_MASK) {
+            case MotionEvent.ACTION_DOWN:
+                setPressed(true);
+                isDrag = false;
+                getParent().requestDisallowInterceptTouchEvent(true);
+                lastX = rawX;
+                lastY = rawY;
+                ViewGroup parent;
+                if (getParent() != null) {
+                    parent = (ViewGroup) getParent();
+                    parentHeight = parent.getHeight();
+                    parentWidth = parent.getWidth();
+                }
+                break;
+
+            case MotionEvent.ACTION_MOVE:
+                if (parentHeight <= 0 || parentWidth == 0) {
+                    isDrag = false;
+                    break;
+                } else {
+                    isDrag = true;
+                }
+                int dx = rawX - lastX;
+                int dy = rawY - lastY;
+                //这里修复一些华为手机无法触发点击事件
+                int distance = (int) Math.sqrt(dx * dx + dy * dy);
+                if (distance == 0) {
+                    isDrag = false;
+                    break;
+                }
+                float x = getX() + dx;
+                float y = getY() + dy;
+                //检测是否到达边缘 左上右下
+                x = x < 0 ? 0 : x > parentWidth - getWidth() ? parentWidth - getWidth() : x;
+                y = getY() < 0 ? 0 : getY() + getHeight() > parentHeight ? parentHeight - getHeight() : y;
+                setX(x);
+                setY(y);
+                lastX = rawX;
+                lastY = rawY;
+                break;
+            case MotionEvent.ACTION_UP:
+                if (!isNotDrag()) {
+                    //恢复按压效果
+                    setPressed(false);
+                    //Log.i("getX="+getX()+";screenWidthHalf="+screenWidthHalf);
+                    if (rawX >= parentWidth / 2) {
+                        //靠右吸附
+                        animate().setInterpolator(new DecelerateInterpolator())
+                                .setDuration(500)
+                                .xBy(parentWidth - getWidth() - getX())
+                                .start();
+                    } else {
+                        //靠左吸附
+                        ObjectAnimator oa = ObjectAnimator.ofFloat(this, "x", getX(), 0);
+                        oa.setInterpolator(new DecelerateInterpolator());
+                        oa.setDuration(500);
+                        oa.start();
+                    }
+                }
+                break;
+
+        }
+        //如果是拖拽则消s耗事件,否则正常传递即可。!isNotDrag() || super.onTouchEvent(event);
+        return true;
+    }
+
+    private boolean isNotDrag() {
+        return !isDrag && (getX() == 0
+                || (getX() == parentWidth - getWidth()));
+    }
+
+}
diff --git a/app/src/main/res/drawable-xhdpi/ic_delete.png b/app/src/main/res/drawable-xhdpi/ic_delete.png
new file mode 100644
index 0000000..38c4ec0
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_delete.png differ
diff --git a/app/src/main/res/drawable/s_grid_item.xml b/app/src/main/res/drawable/s_grid_item.xml
new file mode 100644
index 0000000..cba024d
--- /dev/null
+++ b/app/src/main/res/drawable/s_grid_item.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_focused="true">
+        <color android:color="#DFDFDF" />
+    </item>
+    <item android:state_pressed="true">
+        <color android:color="#DFDFDF" />
+    </item>
+    <item android:state_selected="true">
+        <color android:color="#DFDFDF" />
+    </item>
+    <item  >
+        <color android:color="#ffffff" />
+    </item>
+</selector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_blue_normal.xml b/app/src/main/res/drawable/shape_blue_normal.xml
new file mode 100644
index 0000000..aaac42f
--- /dev/null
+++ b/app/src/main/res/drawable/shape_blue_normal.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <corners android:radius="@dimen/textSize20"/>
+
+    <stroke android:color="@color/huodong_blue"
+        android:width="@dimen/size_dp_1"/>
+
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_blue_select.xml b/app/src/main/res/drawable/shape_blue_select.xml
new file mode 100644
index 0000000..643d6b0
--- /dev/null
+++ b/app/src/main/res/drawable/shape_blue_select.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <solid android:color="@color/huodong_blue"/>
+    <corners android:radius="@dimen/size_dp_20"/>
+
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_edit_radius4_balck.xml b/app/src/main/res/drawable/shape_edit_radius4_balck.xml
new file mode 100644
index 0000000..899dc5a
--- /dev/null
+++ b/app/src/main/res/drawable/shape_edit_radius4_balck.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <stroke android:width="0.5dp" android:color="@color/gray"/>
+    <corners android:radius="@dimen/size_dp_8"/>
+
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_ce_ping.xml b/app/src/main/res/layout/fragment_ce_ping.xml
index de3409b..367263d 100644
--- a/app/src/main/res/layout/fragment_ce_ping.xml
+++ b/app/src/main/res/layout/fragment_ce_ping.xml
@@ -289,8 +289,11 @@
         android:layout_gravity="bottom|right"
         android:layout_marginBottom="@dimen/size_dp_30"
         android:layout_marginRight="@dimen/size_dp_30"
-        app:backgroundTint="@color/xueqing_blue"
+        android:scaleType="center"
+        app:backgroundTint="@color/bg_gray_pressed"
         app:rippleColor="@color/xueqing_blue"
         app:fabSize="normal"
+        app:borderWidth="@dimen/size_dp_2"
+        app:elevation="@dimen/size_dp_10"
         android:src="@drawable/guanlianchild" />
 </FrameLayout>
diff --git a/app/src/main/res/layout/fragment_report.xml b/app/src/main/res/layout/fragment_report.xml
index bca4cc2..05da01a 100644
--- a/app/src/main/res/layout/fragment_report.xml
+++ b/app/src/main/res/layout/fragment_report.xml
@@ -30,11 +30,13 @@
             android:layout_gravity="center_vertical"
             android:layout_weight="1"
             android:gravity="center_horizontal"
+            android:id="@+id/tvDate"
             android:text="2018年3月"
-            android:textColor="@color/textColor"
-            android:textSize="@dimen/textSize16" />
+            android:textColor="@color/white"
+            android:textSize="@dimen/textSize18" />
 
         <TextView
+            android:id="@+id/tvShaiXuan"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical"
diff --git a/app/src/main/res/layout/item_report.xml b/app/src/main/res/layout/item_report.xml
index b5ac0c6..8c2a35f 100644
--- a/app/src/main/res/layout/item_report.xml
+++ b/app/src/main/res/layout/item_report.xml
@@ -3,10 +3,10 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <LinearLayout
-        android:layout_marginTop="@dimen/size_dp_10"
+        <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="250dp"
+        android:layout_margin="20dp"
         android:background="@drawable/report_white"
         android:orientation="vertical">
 
@@ -20,7 +20,7 @@
             android:textColor="#20519f"
             android:textSize="@dimen/sp_16" />
 
-        <RelativeLayout
+            <RelativeLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_weight="1"
@@ -52,10 +52,10 @@
             <LinearLayout
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
-                android:layout_centerInParent="true"
                 android:layout_weight="1"
-                android:gravity="center_horizontal">
-
+                android:layout_centerInParent="true"
+                android:gravity="center_horizontal"
+             >
                 <com.shunzhi.parent.views.ProgressView
                     android:id="@+id/ring"
                     android:layout_width="160dp"
@@ -66,8 +66,8 @@
             <LinearLayout
                 android:layout_width="80dp"
                 android:layout_height="match_parent"
-                android:layout_alignParentRight="true"
                 android:layout_marginTop="10dp"
+                android:layout_alignParentRight="true"
                 android:orientation="vertical">
 
                 <TextView
diff --git a/app/src/main/res/layout/layout_consult_content.xml b/app/src/main/res/layout/layout_consult_content.xml
index d08f24a..d5f6123 100644
--- a/app/src/main/res/layout/layout_consult_content.xml
+++ b/app/src/main/res/layout/layout_consult_content.xml
@@ -62,6 +62,7 @@
         </LinearLayout>
 
         <ImageView
+            android:layout_margin="@dimen/size_dp_2"
             android:id="@+id/iv_consult"
             android:layout_width="0dp"
             android:layout_height="match_parent"
diff --git a/app/src/main/res/layout/popu_shaixuan.xml b/app/src/main/res/layout/popu_shaixuan.xml
new file mode 100644
index 0000000..ea4ef1b
--- /dev/null
+++ b/app/src/main/res/layout/popu_shaixuan.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:padding="@dimen/size_dp_10"
+    android:layout_marginTop="@dimen/size_dp_10"
+    android:background="@color/white"
+    >
+
+<LinearLayout
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+
+    <TextView
+        android:layout_gravity="center_horizontal"
+        android:layout_width="@dimen/size_dp_60"
+        android:textSize="@dimen/textSize16"
+        android:text="@string/report"
+        android:textStyle="bold"
+        android:textColor="@color/textColor"
+        android:layout_height="wrap_content" />
+
+    <com.huxq17.handygridview.HandyGridView
+        android:layout_marginLeft="@dimen/size_dp_10"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:id="@+id/handyGridView"
+        android:numColumns="3"
+        android:horizontalSpacing="@dimen/size_dp_15"
+        android:verticalSpacing="@dimen/size_dp_15"
+        android:gravity="center"
+        android:background="@color/white"
+        ></com.huxq17.handygridview.HandyGridView>
+
+</LinearLayout>
+
+
+    <LinearLayout
+        android:layout_marginTop="@dimen/size_dp_10"
+        android:layout_marginBottom="@dimen/size_dp_10"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:gravity="center_vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+
+        <TextView
+            android:layout_width="@dimen/size_dp_60"
+            android:textSize="@dimen/textSize16"
+            android:text="关键字"
+            android:textStyle="bold"
+            android:textColor="@color/textColor"
+            android:layout_height="wrap_content" />
+
+        <EditText
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:hint="请输入要搜索的内容"
+            android:textSize="@dimen/textSize14"
+            android:textColor="@color/textColor"
+            android:background="@drawable/shape_edit_radius4_balck"
+            android:gravity="center"
+            android:padding="@dimen/size_dp_5"
+            android:layout_marginLeft="@dimen/size_dp_10"
+            />
+
+
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/tvSubmit"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="@color/white"
+        android:textSize="@dimen/textSize16"
+        android:text="确定"
+        android:paddingLeft="@dimen/size_dp_60"
+        android:paddingRight="@dimen/size_dp_60"
+        android:background="@drawable/shape_blue_select"
+        android:paddingTop="@dimen/size_dp_5"
+        android:paddingBottom="@dimen/size_dp_5"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="@dimen/size_dp_10"
+        android:layout_marginBottom="@dimen/size_dp_10"
+        />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 54b1b4a..37c9671 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -13,13 +13,13 @@
     <dimen name="margin_only_txt">48dp</dimen>
 
     <!-- txtsize -->
-    <dimen name="txtsize_display1">34sp</dimen>
-    <dimen name="txtsize_num">36sp</dimen>
-    <dimen name="txtsize_headline">24sp</dimen>
-    <dimen name="txtsize_title">20sp</dimen>
-    <dimen name="txtsize_subhead">16sp</dimen>
-    <dimen name="txtsize_body">14sp</dimen>
-    <dimen name="txtsize_caption">12sp</dimen>
+    <dimen name="txtsize_display1">34dp</dimen>
+    <dimen name="txtsize_num">36dp</dimen>
+    <dimen name="txtsize_headline">24dp</dimen>
+    <dimen name="txtsize_title">20dp</dimen>
+    <dimen name="txtsize_subhead">16dp</dimen>
+    <dimen name="txtsize_body">14dp</dimen>
+    <dimen name="txtsize_caption">12dp</dimen>
 
     <!-- other size -->
     <dimen name="corner_radius">2dp</dimen>
@@ -41,7 +41,7 @@
 
     <dimen name="sp_12">12sp</dimen>
     <dimen name="sp_14">14sp</dimen>
-    <dimen name="sp_16">16sp</dimen>
+    <dimen name="sp_16">16dp</dimen>
     <dimen name="sp_18">18sp</dimen>
 
     <dimen name="textSize10">10dp</dimen>
diff --git a/mvpsdk/build.gradle b/mvpsdk/build.gradle
index d73d01e..c670878 100644
--- a/mvpsdk/build.gradle
+++ b/mvpsdk/build.gradle
@@ -113,6 +113,9 @@ dependencies {
     //日历控件
     compile 'com.github.idic779:monthweekmaterialcalendarview:1.7'
 
+    //标签拖动排序
+    compile 'com.huxq17.handygridview:handygridview:1.1.0'
+
     //悬浮窗
 //    compile 'com.github.yhaolpz:FloatWindow:1.0.8'
 
diff --git a/mvpsdk/src/main/res/values/strings.xml b/mvpsdk/src/main/res/values/strings.xml
index b98c96e..7165da5 100644
--- a/mvpsdk/src/main/res/values/strings.xml
+++ b/mvpsdk/src/main/res/values/strings.xml
@@ -4,7 +4,7 @@
     <string name="loading">Loading……</string>
     <string name="load_failed">Load failed. Please click me again</string>
     <string name="press_again">Press again to exit</string>
-
+<string name="report">报告</string>
     <!--历史数据界面-->
     <string name="history_day">Day</string>
     <string name="history_week">Week</string>
--
libgit2 0.21.0