Commit c722502656e3d4e4cdbe668eeff356dbb4393c1e

Authored by 姚旭斌
2 parents 616118e8 07328347

Merge branch 'yxb_dev' of http://git.shunzhi.net/taohd/parentwork into yxb_dev

app/src/main/AndroidManifest.xml
@@ -72,6 +72,7 @@ @@ -72,6 +72,7 @@
72 </intent-filter> 72 </intent-filter>
73 </activity> 73 </activity>
74 <activity android:name=".ui.MainActivity" 74 <activity android:name=".ui.MainActivity"
  75 + android:windowSoftInputMode="adjustPan|stateAlwaysHidden"
75 android:screenOrientation="portrait" /> 76 android:screenOrientation="portrait" />
76 <activity 77 <activity
77 android:name=".ui.activity.MyChildActivity" 78 android:name=".ui.activity.MyChildActivity"
app/src/main/java/com/shunzhi/parent/contract/report/ReportContract.java
@@ -17,11 +17,15 @@ public interface ReportContract { @@ -17,11 +17,15 @@ public interface ReportContract {
17 abstract class ReportPresenter extends BasePresenter<IReportModel,IReportView> { 17 abstract class ReportPresenter extends BasePresenter<IReportModel,IReportView> {
18 public abstract void reportResult(); 18 public abstract void reportResult();
19 19
  20 + public abstract void getReports();
20 } 21 }
21 interface IReportModel extends IBaseModel{ 22 interface IReportModel extends IBaseModel{
22 Observable<ReportBean> getReportResult(); 23 Observable<ReportBean> getReportResult();
  24 + void getReports();
23 } 25 }
24 interface IReportView extends IBaseView{ 26 interface IReportView extends IBaseView{
25 void UpdateList(List<ReportBean>list); 27 void UpdateList(List<ReportBean>list);
  28 +
  29 + void showReports(List<String> stringList);
26 } 30 }
27 } 31 }
app/src/main/java/com/shunzhi/parent/model/report/ReportModel.java
@@ -18,4 +18,9 @@ public class ReportModel implements ReportContract.IReportModel { @@ -18,4 +18,9 @@ public class ReportModel implements ReportContract.IReportModel {
18 public Observable<ReportBean> getReportResult() { 18 public Observable<ReportBean> getReportResult() {
19 return null; 19 return null;
20 } 20 }
  21 +
  22 + @Override
  23 + public void getReports() {
  24 +
  25 + }
21 } 26 }
app/src/main/java/com/shunzhi/parent/popu/ShaiXuanPop.java 0 → 100644
@@ -0,0 +1,156 @@ @@ -0,0 +1,156 @@
  1 +package com.shunzhi.parent.popu;
  2 +
  3 +import android.content.Context;
  4 +import android.graphics.drawable.BitmapDrawable;
  5 +import android.graphics.drawable.Drawable;
  6 +import android.view.Gravity;
  7 +import android.view.View;
  8 +import android.view.ViewGroup;
  9 +import android.view.WindowManager;
  10 +import android.widget.BaseAdapter;
  11 +import android.widget.GridView;
  12 +import android.widget.PopupWindow;
  13 +import android.widget.TextView;
  14 +
  15 +import com.huxq17.handygridview.HandyGridView;
  16 +import com.share.mvpsdk.utils.DisplayUtils;
  17 +import com.shunzhi.parent.R;
  18 +import com.shunzhi.parent.popu.handygrid.TagView;
  19 +
  20 +import java.util.ArrayList;
  21 +import java.util.List;
  22 +
  23 +/**
  24 + * Created by ToaHanDong on 2018/3/15.
  25 + */
  26 +
  27 +public class ShaiXuanPop extends PopupWindow {
  28 +
  29 + HandyGridView handyGridView = null;
  30 +
  31 + List<String> stringList = null;
  32 +
  33 + private Context mContext = null;
  34 +
  35 + MyGridAdapter myGridAdapter = null;
  36 +
  37 + TextView tvSubmit;
  38 +
  39 + public ShaiXuanPop(Context context) {
  40 + mContext = context;
  41 +
  42 + View view = View.inflate(context, R.layout.popu_shaixuan, null);
  43 + handyGridView = view.findViewById(R.id.handyGridView);
  44 + tvSubmit=view.findViewById(R.id.tvSubmit);
  45 + stringList = new ArrayList<>();
  46 +
  47 + setWidth(WindowManager.LayoutParams.MATCH_PARENT);
  48 + setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
  49 +
  50 + setOutsideTouchable(true);
  51 + setFocusable(true);
  52 + setBackgroundDrawable(new BitmapDrawable());
  53 +
  54 + setContentView(view);
  55 + update();
  56 +
  57 + tvSubmit.setOnClickListener(new View.OnClickListener() {
  58 + @Override
  59 + public void onClick(View view) {
  60 +
  61 + }
  62 + });
  63 +
  64 + }
  65 +
  66 + public void show(View parent) {
  67 + showAsDropDown(parent);
  68 + }
  69 +
  70 + public void setDatas(List<String> strings) {
  71 +
  72 + if (null != stringList) {
  73 + stringList.clear();
  74 + stringList.addAll(strings);
  75 + }
  76 +
  77 + if (null == myGridAdapter) myGridAdapter = new MyGridAdapter();
  78 + if (null == handyGridView.getAdapter()) handyGridView.setAdapter(myGridAdapter);
  79 + myGridAdapter.notifyDataSetChanged();
  80 +
  81 + }
  82 +
  83 + private class MyGridAdapter extends BaseAdapter {
  84 +
  85 + private GridView mGridView;
  86 + private boolean inEditMode = false;//设置是否可以编辑
  87 +
  88 + public void setInEditMode(boolean inEditMode) {
  89 + this.inEditMode = inEditMode;
  90 + notifyDataSetChanged();
  91 + }
  92 +
  93 + @Override
  94 + public int getCount() {
  95 + return stringList.size();
  96 + }
  97 +
  98 + @Override
  99 + public Object getItem(int i) {
  100 + return stringList.get(i);
  101 + }
  102 +
  103 + @Override
  104 + public long getItemId(int i) {
  105 + return i;
  106 + }
  107 +
  108 + @Override
  109 + public View getView(int i, View convertView, ViewGroup viewGroup) {
  110 +
  111 + if (mGridView == null) {
  112 + mGridView = (GridView) viewGroup;
  113 + }
  114 +
  115 + TagView textView;
  116 +
  117 + if (convertView == null) {
  118 + textView = new TagView(mContext);
  119 + convertView = textView;
  120 + textView.setMaxLines(1);
  121 + textView.setHeight(DisplayUtils.dp2px(30));
  122 + int id = mContext.getResources().getIdentifier("s_grid_item", "drawable", mContext.getPackageName());
  123 + Drawable drawable = mContext.getResources().getDrawable(id);
  124 + textView.setBackgroundDrawable(drawable);
  125 + textView.setTextColor(mContext.getResources().getColor(R.color.huodong_blue));
  126 + textView.setGravity(Gravity.CENTER);
  127 + textView.setTag(false);
  128 + } else {
  129 + textView = (TagView) convertView;
  130 + }
  131 +
  132 + textView.setOnClickListener(new View.OnClickListener() {
  133 + @Override
  134 + public void onClick(View view) {
  135 + boolean isSelect = (boolean) view.getTag();
  136 + view.setTag(!isSelect);
  137 + notifyDataSetChanged();
  138 + }
  139 + });
  140 +
  141 + boolean isSelect = (boolean) textView.getTag();
  142 + if (isSelect) {
  143 + textView.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.shape_blue_select));
  144 + textView.setTextColor(mContext.getResources().getColor(R.color.white));
  145 + } else {
  146 + textView.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.shape_blue_normal));
  147 + textView.setTextColor(mContext.getResources().getColor(R.color.huodong_blue));
  148 + }
  149 + textView.showDeleteIcon(false);
  150 + textView.setText(getItem(i).toString());
  151 + return convertView;
  152 + }
  153 + }
  154 +
  155 +
  156 +}
app/src/main/java/com/shunzhi/parent/popu/handygrid/TagView.java 0 → 100644
@@ -0,0 +1,116 @@ @@ -0,0 +1,116 @@
  1 +package com.shunzhi.parent.popu.handygrid;
  2 +
  3 +import android.content.Context;
  4 +import android.graphics.Canvas;
  5 +import android.graphics.Rect;
  6 +import android.graphics.drawable.Drawable;
  7 +import android.util.AttributeSet;
  8 +import android.util.Log;
  9 +import android.view.MotionEvent;
  10 +import android.view.View;
  11 +
  12 +import com.share.mvpsdk.utils.DisplayUtils;
  13 +import com.shunzhi.parent.R;
  14 +
  15 +/**
  16 + * Created by ToaHanDong on 2018/3/15.
  17 + */
  18 +
  19 +public class TagView extends android.support.v7.widget.AppCompatTextView {
  20 + private Drawable deleteIcon;
  21 + private int iconWidth;
  22 + private int iconHeight;
  23 + private boolean showIcon = true;
  24 + private Rect mDelteRect;
  25 + private Rect mAssumeDelteRect;
  26 +
  27 + public TagView(Context context) {
  28 + super(context);
  29 +// int id = context.getResources().getIdentifier("ic_delete", "drawable", context.getPackageName());
  30 + deleteIcon = context.getResources().getDrawable(R.drawable.ic_delete);
  31 + }
  32 +
  33 + @Override
  34 + protected void onDraw(Canvas canvas) {
  35 + super.onDraw(canvas);
  36 + if (mAssumeDelteRect == null) {
  37 + setDeleteBounds();
  38 + }
  39 + if (showIcon) {
  40 + deleteIcon.draw(canvas);
  41 + }
  42 + }
  43 +
  44 + private void setDeleteBounds() {
  45 + iconWidth = deleteIcon.getIntrinsicWidth();
  46 + iconHeight = deleteIcon.getIntrinsicHeight();
  47 + int left = getWidth() - iconWidth;
  48 + int top = 0;
  49 + mDelteRect = new Rect(left, top, left + iconWidth, top + iconHeight);
  50 + //padding扩大了icon的点击范围
  51 + int padding = DisplayUtils.dp2px(10);
  52 + mAssumeDelteRect = new Rect(mDelteRect.left, mDelteRect.top, mDelteRect.left + iconWidth + padding, mDelteRect.top + iconHeight + padding);
  53 + deleteIcon.setBounds(mDelteRect);
  54 + }
  55 +
  56 + @Override
  57 + public boolean onTouchEvent(MotionEvent event) {
  58 + int action = event.getAction();
  59 + int x = (int) event.getX();
  60 + int y = (int) event.getY();
  61 + boolean contains = mAssumeDelteRect.contains(x, y);
  62 + switch (action) {
  63 + case MotionEvent.ACTION_DOWN:
  64 + if (contains && showIcon) {
  65 + return true;
  66 + }
  67 + break;
  68 + case MotionEvent.ACTION_MOVE:
  69 + break;
  70 + case MotionEvent.ACTION_UP:
  71 + if (contains && showIcon) {
  72 + if (mListener != null) {
  73 + mListener.onDelete(this);
  74 + }
  75 + return true;
  76 + }
  77 + break;
  78 + }
  79 + return super.onTouchEvent(event);
  80 + }
  81 +
  82 + private void log(String msg) {
  83 + Log.e(getClass().getCanonicalName(), msg);
  84 + }
  85 +
  86 + public void showDeleteIcon(boolean show) {
  87 + showIcon = show;
  88 + invalidate();
  89 + }
  90 +
  91 + private OnTagDeleteListener mListener;
  92 +
  93 + public void setOnTagDeleteListener(OnTagDeleteListener listener) {
  94 + mListener = listener;
  95 + }
  96 +
  97 + public interface OnTagDeleteListener {
  98 + /**
  99 + * Delete view.
  100 + *
  101 + * @param deleteView
  102 + */
  103 + void onDelete(View deleteView);
  104 + }
  105 +// @Override
  106 +// protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  107 +//// int widthSize = 100;
  108 +// int heightSize = DensityUtil.dip2px(getContext(),40);
  109 +////
  110 +//// widthMeasureSpec = MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.AT_MOST);
  111 +// heightMeasureSpec = MeasureSpec.makeMeasureSpec(heightSize, MeasureSpec.AT_MOST);
  112 +// setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
  113 +//// super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  114 +// Log.e("onmea","width="+getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec)+";height="+getDefaultSize(getSuggestedMinimumHeight(),heightMeasureSpec));
  115 +// }
  116 +}
app/src/main/java/com/shunzhi/parent/presenter/report/ReportPresenter.java
@@ -32,4 +32,18 @@ public class ReportPresenter extends ReportContract.ReportPresenter{ @@ -32,4 +32,18 @@ public class ReportPresenter extends ReportContract.ReportPresenter{
32 mIView.UpdateList(list); 32 mIView.UpdateList(list);
33 33
34 } 34 }
  35 +
  36 + @Override
  37 + public void getReports() {
  38 +
  39 + List<String> stringList=new ArrayList<>();
  40 +
  41 + stringList.add("全部");
  42 + stringList.add("作业+");
  43 + stringList.add("测评+");
  44 + stringList.add("德育+");
  45 +
  46 + mIView.showReports(stringList);
  47 +
  48 + }
35 } 49 }
app/src/main/java/com/shunzhi/parent/ui/fragment/CePingFragment.java
@@ -8,6 +8,7 @@ import android.os.Bundle; @@ -8,6 +8,7 @@ import android.os.Bundle;
8 import android.support.annotation.NonNull; 8 import android.support.annotation.NonNull;
9 import android.support.annotation.Nullable; 9 import android.support.annotation.Nullable;
10 import android.support.design.widget.FloatingActionButton; 10 import android.support.design.widget.FloatingActionButton;
  11 +import android.util.Log;
11 import android.view.View; 12 import android.view.View;
12 import android.widget.FrameLayout; 13 import android.widget.FrameLayout;
13 import android.widget.ImageView; 14 import android.widget.ImageView;
@@ -22,6 +23,7 @@ import com.shunzhi.parent.AppContext; @@ -22,6 +23,7 @@ import com.shunzhi.parent.AppContext;
22 import com.shunzhi.parent.R; 23 import com.shunzhi.parent.R;
23 import com.shunzhi.parent.contract.ceping.CepingContract; 24 import com.shunzhi.parent.contract.ceping.CepingContract;
24 import com.shunzhi.parent.presenter.ceping.CePingPresenter; 25 import com.shunzhi.parent.presenter.ceping.CePingPresenter;
  26 +import com.shunzhi.parent.views.DragFloatActionButton;
25 import com.shunzhi.parent.views.TextAndImgShowView; 27 import com.shunzhi.parent.views.TextAndImgShowView;
26 28
27 import me.leefeng.citypicker.CityPicker; 29 import me.leefeng.citypicker.CityPicker;
@@ -63,6 +65,7 @@ public class CePingFragment extends BaseMVPCompatFragment&lt;CepingContract.CePingP @@ -63,6 +65,7 @@ public class CePingFragment extends BaseMVPCompatFragment&lt;CepingContract.CePingP
63 65
64 addTools(); 66 addTools();
65 67
  68 + tvLocalAddress.setText(AppContext.getInstance().cityName);
66 textAndImg_xqjc.setTextColor(R.color.white); 69 textAndImg_xqjc.setTextColor(R.color.white);
67 textAndImg_xqjc.setText("学情检测"); 70 textAndImg_xqjc.setText("学情检测");
68 textAndImg_xqjc.setImgs(R.drawable.xqjc,R.drawable.xqjc); 71 textAndImg_xqjc.setImgs(R.drawable.xqjc,R.drawable.xqjc);
@@ -74,7 +77,18 @@ public class CePingFragment extends BaseMVPCompatFragment&lt;CepingContract.CePingP @@ -74,7 +77,18 @@ public class CePingFragment extends BaseMVPCompatFragment&lt;CepingContract.CePingP
74 textAndImg_zxlx.setSelect(true); 77 textAndImg_zxlx.setSelect(true);
75 78
76 initListeners(view); 79 initListeners(view);
77 - floatingActionButton.setRippleColor(getResources().getColor(R.color.white)); 80 + floatingActionButton.setOnClickListener(new View.OnClickListener() {
  81 + @Override
  82 + public void onClick(View view) {
  83 +
  84 + }
  85 + });
  86 +// floatingActionButton.setOnClickListeners(new DragFloatActionButton.OnClickListeners() {
  87 +// @Override
  88 +// public void onClicks() {
  89 +// ToastUtils.showToast("dfafdaf");
  90 +// }
  91 +// });
78 } 92 }
79 93
80 private void addTools() { 94 private void addTools() {
app/src/main/java/com/shunzhi/parent/ui/fragment/ConsultFragment.java
@@ -84,7 +84,7 @@ public class ConsultFragment extends BaseMVPCompatFragment&lt;ConsultContract.Consu @@ -84,7 +84,7 @@ public class ConsultFragment extends BaseMVPCompatFragment&lt;ConsultContract.Consu
84 } 84 }
85 85
86 private void initBanners() { 86 private void initBanners() {
87 - 87 + tvLocalAddress.setText(AppContext.getInstance().cityName);
88 InputStream inputStream = getClass().getResourceAsStream("/assets/banners.png"); 88 InputStream inputStream = getClass().getResourceAsStream("/assets/banners.png");
89 try { 89 try {
90 imgesUrl.add(new String(InputStreamToByte(inputStream))); 90 imgesUrl.add(new String(InputStreamToByte(inputStream)));
app/src/main/java/com/shunzhi/parent/ui/fragment/ReportFragment.java
@@ -7,26 +7,26 @@ import android.support.annotation.Nullable; @@ -7,26 +7,26 @@ import android.support.annotation.Nullable;
7 import android.support.v7.widget.LinearLayoutManager; 7 import android.support.v7.widget.LinearLayoutManager;
8 import android.support.v7.widget.RecyclerView; 8 import android.support.v7.widget.RecyclerView;
9 import android.view.View; 9 import android.view.View;
  10 +import android.widget.TextView;
10 11
11 import com.amy.monthweek.materialcalendarview.MonthWeekMaterialCalendarView; 12 import com.amy.monthweek.materialcalendarview.MonthWeekMaterialCalendarView;
12 import com.prolificinteractive.materialcalendarview.CalendarDay; 13 import com.prolificinteractive.materialcalendarview.CalendarDay;
13 import com.prolificinteractive.materialcalendarview.MaterialCalendarView; 14 import com.prolificinteractive.materialcalendarview.MaterialCalendarView;
14 import com.share.mvpsdk.base.BasePresenter; 15 import com.share.mvpsdk.base.BasePresenter;
15 import com.share.mvpsdk.base.fragment.BaseMVPCompatFragment; 16 import com.share.mvpsdk.base.fragment.BaseMVPCompatFragment;
16 -import com.share.mvpsdk.utils.ToastUtils;  
17 import com.shunzhi.parent.R; 17 import com.shunzhi.parent.R;
18 import com.shunzhi.parent.adapter.ReportAdapter; 18 import com.shunzhi.parent.adapter.ReportAdapter;
19 import com.shunzhi.parent.bean.ReportBean; 19 import com.shunzhi.parent.bean.ReportBean;
20 import com.shunzhi.parent.contract.report.ReportContract; 20 import com.shunzhi.parent.contract.report.ReportContract;
  21 +import com.shunzhi.parent.popu.ShaiXuanPop;
21 import com.shunzhi.parent.presenter.report.ReportPresenter; 22 import com.shunzhi.parent.presenter.report.ReportPresenter;
22 import com.shunzhi.parent.views.CustomLinearLayoutManager; 23 import com.shunzhi.parent.views.CustomLinearLayoutManager;
23 24
24 -import java.util.Calendar;  
25 -import java.util.Date;  
26 import java.util.List; 25 import java.util.List;
27 26
28 public class ReportFragment extends BaseMVPCompatFragment<ReportContract.ReportPresenter, ReportContract.IReportModel> 27 public class ReportFragment extends BaseMVPCompatFragment<ReportContract.ReportPresenter, ReportContract.IReportModel>
29 - implements ReportContract.IReportView { 28 + implements ReportContract.IReportView ,View.OnClickListener{
  29 +
30 RecyclerView recyclerView; 30 RecyclerView recyclerView;
31 ReportAdapter reportAdapter; 31 ReportAdapter reportAdapter;
32 32
@@ -36,6 +36,10 @@ public class ReportFragment extends BaseMVPCompatFragment&lt;ReportContract.ReportP @@ -36,6 +36,10 @@ public class ReportFragment extends BaseMVPCompatFragment&lt;ReportContract.ReportP
36 36
37 MaterialCalendarView calendarView_month_mode; 37 MaterialCalendarView calendarView_month_mode;
38 38
  39 + TextView tvDate,tvShaiXuan;
  40 +
  41 + ShaiXuanPop shaiXuanPop=null;
  42 +
39 @NonNull 43 @NonNull
40 @Override 44 @Override
41 public BasePresenter initPresenter() { 45 public BasePresenter initPresenter() {
@@ -50,7 +54,9 @@ public class ReportFragment extends BaseMVPCompatFragment&lt;ReportContract.ReportP @@ -50,7 +54,9 @@ public class ReportFragment extends BaseMVPCompatFragment&lt;ReportContract.ReportP
50 @Override 54 @Override
51 public void initUI(View view, @Nullable Bundle savedInstanceState) { 55 public void initUI(View view, @Nullable Bundle savedInstanceState) {
52 recyclerView = view.findViewById(R.id.recycle_report); 56 recyclerView = view.findViewById(R.id.recycle_report);
53 - calendarView_month_mode=view.findViewById(R.id.calendarView_month_mode); 57 + calendarView_month_mode = view.findViewById(R.id.calendarView_month_mode);
  58 + tvDate = view.findViewById(R.id.tvDate);
  59 + tvShaiXuan=view.findViewById(R.id.tvShaiXuan);
54 60
55 LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 61 LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
56 layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 62 layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
@@ -64,33 +70,41 @@ public class ReportFragment extends BaseMVPCompatFragment&lt;ReportContract.ReportP @@ -64,33 +70,41 @@ public class ReportFragment extends BaseMVPCompatFragment&lt;ReportContract.ReportP
64 } 70 }
65 71
66 private void initCalendarView() { 72 private void initCalendarView() {
67 -// month_week_CalendarView.setMode(MonthWeekMaterialCalendarView.Mode.MONTH); 73 +
68 selectedDate = CalendarDay.today(); 74 selectedDate = CalendarDay.today();
  75 + showDate();
69 monthWeekMaterialCalendarView.setMode(MonthWeekMaterialCalendarView.Mode.WEEK); 76 monthWeekMaterialCalendarView.setMode(MonthWeekMaterialCalendarView.Mode.WEEK);
70 monthWeekMaterialCalendarView.setCurrentDate(selectedDate); 77 monthWeekMaterialCalendarView.setCurrentDate(selectedDate);
71 monthWeekMaterialCalendarView.setSelectedDate(selectedDate); 78 monthWeekMaterialCalendarView.setSelectedDate(selectedDate);
72 monthWeekMaterialCalendarView.state().edit().setSlideModeChangeListener(new MonthWeekMaterialCalendarView.SlideModeChangeListener() { 79 monthWeekMaterialCalendarView.state().edit().setSlideModeChangeListener(new MonthWeekMaterialCalendarView.SlideModeChangeListener() {
73 @Override 80 @Override
74 - public void modeChange(MonthWeekMaterialCalendarView.Mode mode) { 81 + public void modeChange(MonthWeekMaterialCalendarView.Mode mode) {
75 82
76 } 83 }
77 }).setSlideDateSelectedlistener(new MonthWeekMaterialCalendarView.SlideDateSelectedlistener() { 84 }).setSlideDateSelectedlistener(new MonthWeekMaterialCalendarView.SlideDateSelectedlistener() {
78 @Override 85 @Override
79 public void onDateSelected(@NonNull MaterialCalendarView widget, @NonNull CalendarDay date, boolean selected) { 86 public void onDateSelected(@NonNull MaterialCalendarView widget, @NonNull CalendarDay date, boolean selected) {
80 selectedDate = date; 87 selectedDate = date;
  88 + showDate();
81 89
82 } 90 }
83 }).setSlideOnMonthChangedListener(new MonthWeekMaterialCalendarView.SlideOnMonthChangedListener() { 91 }).setSlideOnMonthChangedListener(new MonthWeekMaterialCalendarView.SlideOnMonthChangedListener() {
84 @Override 92 @Override
85 public void onMonthChanged(MaterialCalendarView widget, CalendarDay date) { 93 public void onMonthChanged(MaterialCalendarView widget, CalendarDay date) {
86 - 94 + selectedDate = date;
  95 + showDate();
87 } 96 }
88 }).commit(); 97 }).commit();
89 98
90 } 99 }
91 100
  101 + private void showDate() {
  102 + tvDate.setText(selectedDate.getYear() + "年" + (selectedDate.getMonth() + 1) + "月");
  103 + }
  104 +
92 private void initReportList() { 105 private void initReportList() {
93 mPresenter.reportResult(); 106 mPresenter.reportResult();
  107 + tvShaiXuan.setOnClickListener(this);
94 } 108 }
95 109
96 @Override 110 @Override
@@ -99,4 +113,22 @@ public class ReportFragment extends BaseMVPCompatFragment&lt;ReportContract.ReportP @@ -99,4 +113,22 @@ public class ReportFragment extends BaseMVPCompatFragment&lt;ReportContract.ReportP
99 reportAdapter.addAll(list); 113 reportAdapter.addAll(list);
100 recyclerView.setAdapter(reportAdapter); 114 recyclerView.setAdapter(reportAdapter);
101 } 115 }
  116 +
  117 + @Override
  118 + public void showReports(List<String> stringList) {
  119 + if (null!=shaiXuanPop){
  120 + shaiXuanPop.setDatas(stringList);
  121 + shaiXuanPop.show(tvShaiXuan);
  122 + }
  123 + }
  124 +
  125 + @Override
  126 + public void onClick(View view) {
  127 + switch (view.getId()){
  128 + case R.id.tvShaiXuan:
  129 + if (null==shaiXuanPop)shaiXuanPop=new ShaiXuanPop(getActivity());
  130 + mPresenter.getReports();
  131 + break;
  132 + }
  133 + }
102 } 134 }
app/src/main/java/com/shunzhi/parent/ui/fragment/consult/ConsultOneLevelFragment.java
@@ -5,7 +5,6 @@ import android.support.annotation.NonNull; @@ -5,7 +5,6 @@ import android.support.annotation.NonNull;
5 import android.support.annotation.Nullable; 5 import android.support.annotation.Nullable;
6 import android.support.v7.widget.LinearLayoutManager; 6 import android.support.v7.widget.LinearLayoutManager;
7 import android.support.v7.widget.RecyclerView; 7 import android.support.v7.widget.RecyclerView;
8 -import android.util.Log;  
9 import android.view.LayoutInflater; 8 import android.view.LayoutInflater;
10 import android.view.View; 9 import android.view.View;
11 import android.view.ViewGroup; 10 import android.view.ViewGroup;
app/src/main/java/com/shunzhi/parent/views/DragFloatActionButton.java 0 → 100644
@@ -0,0 +1,115 @@ @@ -0,0 +1,115 @@
  1 +package com.shunzhi.parent.views;
  2 +
  3 +import android.animation.ObjectAnimator;
  4 +import android.content.Context;
  5 +import android.support.design.widget.FloatingActionButton;
  6 +import android.util.AttributeSet;
  7 +import android.util.Log;
  8 +import android.view.MotionEvent;
  9 +import android.view.ViewGroup;
  10 +import android.view.animation.DecelerateInterpolator;
  11 +
  12 +
  13 +/**
  14 + * Created by ToaHanDong on 2018/3/15.
  15 + */
  16 +
  17 +public class DragFloatActionButton extends FloatingActionButton {
  18 + private int parentHeight;
  19 + private int parentWidth;
  20 +
  21 + public DragFloatActionButton(Context context) {
  22 + super(context);
  23 + }
  24 +
  25 + public DragFloatActionButton(Context context, AttributeSet attrs) {
  26 + super(context, attrs);
  27 +
  28 + }
  29 +
  30 + public DragFloatActionButton(Context context, AttributeSet attrs, int defStyleAttr) {
  31 + super(context, attrs, defStyleAttr);
  32 + }
  33 +
  34 + private int lastX;
  35 + private int lastY;
  36 +
  37 + private boolean isDrag;
  38 +
  39 + @Override
  40 + public boolean onTouchEvent(MotionEvent event) {
  41 + int rawX = (int) event.getRawX();
  42 + int rawY = (int) event.getRawY();
  43 +
  44 + switch (event.getAction() & MotionEvent.ACTION_MASK) {
  45 + case MotionEvent.ACTION_DOWN:
  46 + setPressed(true);
  47 + isDrag = false;
  48 + getParent().requestDisallowInterceptTouchEvent(true);
  49 + lastX = rawX;
  50 + lastY = rawY;
  51 + ViewGroup parent;
  52 + if (getParent() != null) {
  53 + parent = (ViewGroup) getParent();
  54 + parentHeight = parent.getHeight();
  55 + parentWidth = parent.getWidth();
  56 + }
  57 + break;
  58 +
  59 + case MotionEvent.ACTION_MOVE:
  60 + if (parentHeight <= 0 || parentWidth == 0) {
  61 + isDrag = false;
  62 + break;
  63 + } else {
  64 + isDrag = true;
  65 + }
  66 + int dx = rawX - lastX;
  67 + int dy = rawY - lastY;
  68 + //这里修复一些华为手机无法触发点击事件
  69 + int distance = (int) Math.sqrt(dx * dx + dy * dy);
  70 + if (distance == 0) {
  71 + isDrag = false;
  72 + break;
  73 + }
  74 + float x = getX() + dx;
  75 + float y = getY() + dy;
  76 + //检测是否到达边缘 左上右下
  77 + x = x < 0 ? 0 : x > parentWidth - getWidth() ? parentWidth - getWidth() : x;
  78 + y = getY() < 0 ? 0 : getY() + getHeight() > parentHeight ? parentHeight - getHeight() : y;
  79 + setX(x);
  80 + setY(y);
  81 + lastX = rawX;
  82 + lastY = rawY;
  83 + break;
  84 + case MotionEvent.ACTION_UP:
  85 + if (!isNotDrag()) {
  86 + //恢复按压效果
  87 + setPressed(false);
  88 + //Log.i("getX="+getX()+";screenWidthHalf="+screenWidthHalf);
  89 + if (rawX >= parentWidth / 2) {
  90 + //靠右吸附
  91 + animate().setInterpolator(new DecelerateInterpolator())
  92 + .setDuration(500)
  93 + .xBy(parentWidth - getWidth() - getX())
  94 + .start();
  95 + } else {
  96 + //靠左吸附
  97 + ObjectAnimator oa = ObjectAnimator.ofFloat(this, "x", getX(), 0);
  98 + oa.setInterpolator(new DecelerateInterpolator());
  99 + oa.setDuration(500);
  100 + oa.start();
  101 + }
  102 + }
  103 + break;
  104 +
  105 + }
  106 + //如果是拖拽则消s耗事件,否则正常传递即可。!isNotDrag() || super.onTouchEvent(event);
  107 + return true;
  108 + }
  109 +
  110 + private boolean isNotDrag() {
  111 + return !isDrag && (getX() == 0
  112 + || (getX() == parentWidth - getWidth()));
  113 + }
  114 +
  115 +}
app/src/main/res/drawable-xhdpi/ic_delete.png 0 → 100644

593 Bytes

app/src/main/res/drawable/s_grid_item.xml 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<selector xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <item android:state_focused="true">
  4 + <color android:color="#DFDFDF" />
  5 + </item>
  6 + <item android:state_pressed="true">
  7 + <color android:color="#DFDFDF" />
  8 + </item>
  9 + <item android:state_selected="true">
  10 + <color android:color="#DFDFDF" />
  11 + </item>
  12 + <item >
  13 + <color android:color="#ffffff" />
  14 + </item>
  15 +</selector>
0 \ No newline at end of file 16 \ No newline at end of file
app/src/main/res/drawable/shape_blue_normal.xml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape xmlns:android="http://schemas.android.com/apk/res/android">
  3 +
  4 + <corners android:radius="@dimen/textSize20"/>
  5 +
  6 + <stroke android:color="@color/huodong_blue"
  7 + android:width="@dimen/size_dp_1"/>
  8 +
  9 +</shape>
0 \ No newline at end of file 10 \ No newline at end of file
app/src/main/res/drawable/shape_blue_select.xml 0 → 100644
@@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape xmlns:android="http://schemas.android.com/apk/res/android">
  3 +
  4 + <solid android:color="@color/huodong_blue"/>
  5 + <corners android:radius="@dimen/size_dp_20"/>
  6 +
  7 +</shape>
0 \ No newline at end of file 8 \ No newline at end of file
app/src/main/res/drawable/shape_edit_radius4_balck.xml 0 → 100644
@@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape xmlns:android="http://schemas.android.com/apk/res/android">
  3 +
  4 + <stroke android:width="0.5dp" android:color="@color/gray"/>
  5 + <corners android:radius="@dimen/size_dp_8"/>
  6 +
  7 +</shape>
0 \ No newline at end of file 8 \ No newline at end of file
app/src/main/res/layout/fragment_ce_ping.xml
@@ -289,8 +289,11 @@ @@ -289,8 +289,11 @@
289 android:layout_gravity="bottom|right" 289 android:layout_gravity="bottom|right"
290 android:layout_marginBottom="@dimen/size_dp_30" 290 android:layout_marginBottom="@dimen/size_dp_30"
291 android:layout_marginRight="@dimen/size_dp_30" 291 android:layout_marginRight="@dimen/size_dp_30"
292 - app:backgroundTint="@color/xueqing_blue" 292 + android:scaleType="center"
  293 + app:backgroundTint="@color/bg_gray_pressed"
293 app:rippleColor="@color/xueqing_blue" 294 app:rippleColor="@color/xueqing_blue"
294 app:fabSize="normal" 295 app:fabSize="normal"
  296 + app:borderWidth="@dimen/size_dp_2"
  297 + app:elevation="@dimen/size_dp_10"
295 android:src="@drawable/guanlianchild" /> 298 android:src="@drawable/guanlianchild" />
296 </FrameLayout> 299 </FrameLayout>
app/src/main/res/layout/fragment_report.xml
@@ -30,11 +30,13 @@ @@ -30,11 +30,13 @@
30 android:layout_gravity="center_vertical" 30 android:layout_gravity="center_vertical"
31 android:layout_weight="1" 31 android:layout_weight="1"
32 android:gravity="center_horizontal" 32 android:gravity="center_horizontal"
  33 + android:id="@+id/tvDate"
33 android:text="2018年3月" 34 android:text="2018年3月"
34 - android:textColor="@color/textColor"  
35 - android:textSize="@dimen/textSize16" /> 35 + android:textColor="@color/white"
  36 + android:textSize="@dimen/textSize18" />
36 37
37 <TextView 38 <TextView
  39 + android:id="@+id/tvShaiXuan"
38 android:layout_width="wrap_content" 40 android:layout_width="wrap_content"
39 android:layout_height="wrap_content" 41 android:layout_height="wrap_content"
40 android:layout_gravity="center_vertical" 42 android:layout_gravity="center_vertical"
app/src/main/res/layout/item_report.xml
@@ -3,9 +3,9 @@ @@ -3,9 +3,9 @@
3 android:layout_width="match_parent" 3 android:layout_width="match_parent"
4 android:layout_height="match_parent"> 4 android:layout_height="match_parent">
5 5
6 - <LinearLayout  
7 - android:layout_marginTop="@dimen/size_dp_10" 6 + <LinearLayout
8 android:layout_width="match_parent" 7 android:layout_width="match_parent"
  8 + android:layout_marginTop="@dimen/size_dp_10"
9 android:layout_height="250dp" 9 android:layout_height="250dp"
10 android:background="@drawable/report_white" 10 android:background="@drawable/report_white"
11 android:orientation="vertical"> 11 android:orientation="vertical">
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 android:textColor="#20519f" 20 android:textColor="#20519f"
21 android:textSize="@dimen/sp_16" /> 21 android:textSize="@dimen/sp_16" />
22 22
23 - <RelativeLayout 23 + <RelativeLayout
24 android:layout_width="match_parent" 24 android:layout_width="match_parent"
25 android:layout_height="wrap_content" 25 android:layout_height="wrap_content"
26 android:layout_weight="1" 26 android:layout_weight="1"
@@ -52,10 +52,10 @@ @@ -52,10 +52,10 @@
52 <LinearLayout 52 <LinearLayout
53 android:layout_width="wrap_content" 53 android:layout_width="wrap_content"
54 android:layout_height="match_parent" 54 android:layout_height="match_parent"
55 - android:layout_centerInParent="true"  
56 android:layout_weight="1" 55 android:layout_weight="1"
57 - android:gravity="center_horizontal">  
58 - 56 + android:layout_centerInParent="true"
  57 + android:gravity="center_horizontal"
  58 + >
59 <com.shunzhi.parent.views.ProgressView 59 <com.shunzhi.parent.views.ProgressView
60 android:id="@+id/ring" 60 android:id="@+id/ring"
61 android:layout_width="160dp" 61 android:layout_width="160dp"
@@ -66,8 +66,8 @@ @@ -66,8 +66,8 @@
66 <LinearLayout 66 <LinearLayout
67 android:layout_width="80dp" 67 android:layout_width="80dp"
68 android:layout_height="match_parent" 68 android:layout_height="match_parent"
69 - android:layout_alignParentRight="true"  
70 android:layout_marginTop="10dp" 69 android:layout_marginTop="10dp"
  70 + android:layout_alignParentRight="true"
71 android:orientation="vertical"> 71 android:orientation="vertical">
72 72
73 <TextView 73 <TextView
app/src/main/res/layout/layout_consult_content.xml
@@ -62,6 +62,7 @@ @@ -62,6 +62,7 @@
62 </LinearLayout> 62 </LinearLayout>
63 63
64 <ImageView 64 <ImageView
  65 + android:layout_margin="@dimen/size_dp_2"
65 android:id="@+id/iv_consult" 66 android:id="@+id/iv_consult"
66 android:layout_width="0dp" 67 android:layout_width="0dp"
67 android:layout_height="match_parent" 68 android:layout_height="match_parent"
app/src/main/res/layout/popu_shaixuan.xml 0 → 100644
@@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:layout_width="match_parent"
  4 + android:layout_height="wrap_content"
  5 + android:orientation="vertical"
  6 + android:padding="@dimen/size_dp_10"
  7 + android:layout_marginTop="@dimen/size_dp_10"
  8 + android:background="@color/white"
  9 + >
  10 +
  11 +<LinearLayout
  12 + android:layout_width="match_parent"
  13 + android:layout_height="wrap_content">
  14 +
  15 +
  16 + <TextView
  17 + android:layout_gravity="center_horizontal"
  18 + android:layout_width="@dimen/size_dp_60"
  19 + android:textSize="@dimen/textSize16"
  20 + android:text="@string/report"
  21 + android:textStyle="bold"
  22 + android:textColor="@color/textColor"
  23 + android:layout_height="wrap_content" />
  24 +
  25 + <com.huxq17.handygridview.HandyGridView
  26 + android:layout_marginLeft="@dimen/size_dp_10"
  27 + android:layout_width="match_parent"
  28 + android:layout_height="wrap_content"
  29 + android:id="@+id/handyGridView"
  30 + android:numColumns="3"
  31 + android:horizontalSpacing="@dimen/size_dp_15"
  32 + android:verticalSpacing="@dimen/size_dp_15"
  33 + android:gravity="center"
  34 + android:background="@color/white"
  35 + ></com.huxq17.handygridview.HandyGridView>
  36 +
  37 +</LinearLayout>
  38 +
  39 +
  40 + <LinearLayout
  41 + android:layout_marginTop="@dimen/size_dp_10"
  42 + android:layout_marginBottom="@dimen/size_dp_10"
  43 + android:focusable="true"
  44 + android:focusableInTouchMode="true"
  45 + android:gravity="center_vertical"
  46 + android:layout_width="match_parent"
  47 + android:layout_height="wrap_content">
  48 +
  49 +
  50 + <TextView
  51 + android:layout_width="@dimen/size_dp_60"
  52 + android:textSize="@dimen/textSize16"
  53 + android:text="关键字"
  54 + android:textStyle="bold"
  55 + android:textColor="@color/textColor"
  56 + android:layout_height="wrap_content" />
  57 +
  58 + <EditText
  59 + android:layout_width="match_parent"
  60 + android:layout_height="wrap_content"
  61 + android:hint="请输入要搜索的内容"
  62 + android:textSize="@dimen/textSize14"
  63 + android:textColor="@color/textColor"
  64 + android:background="@drawable/shape_edit_radius4_balck"
  65 + android:gravity="center"
  66 + android:padding="@dimen/size_dp_5"
  67 + android:layout_marginLeft="@dimen/size_dp_10"
  68 + />
  69 +
  70 +
  71 + </LinearLayout>
  72 +
  73 + <TextView
  74 + android:id="@+id/tvSubmit"
  75 + android:layout_width="wrap_content"
  76 + android:layout_height="wrap_content"
  77 + android:textColor="@color/white"
  78 + android:textSize="@dimen/textSize16"
  79 + android:text="确定"
  80 + android:paddingLeft="@dimen/size_dp_60"
  81 + android:paddingRight="@dimen/size_dp_60"
  82 + android:background="@drawable/shape_blue_select"
  83 + android:paddingTop="@dimen/size_dp_5"
  84 + android:paddingBottom="@dimen/size_dp_5"
  85 + android:layout_gravity="center_horizontal"
  86 + android:layout_marginTop="@dimen/size_dp_10"
  87 + android:layout_marginBottom="@dimen/size_dp_10"
  88 + />
  89 +
  90 +</LinearLayout>
0 \ No newline at end of file 91 \ No newline at end of file
app/src/main/res/values/dimens.xml
@@ -13,13 +13,13 @@ @@ -13,13 +13,13 @@
13 <dimen name="margin_only_txt">48dp</dimen> 13 <dimen name="margin_only_txt">48dp</dimen>
14 14
15 <!-- txtsize --> 15 <!-- txtsize -->
16 - <dimen name="txtsize_display1">34sp</dimen>  
17 - <dimen name="txtsize_num">36sp</dimen>  
18 - <dimen name="txtsize_headline">24sp</dimen>  
19 - <dimen name="txtsize_title">20sp</dimen>  
20 - <dimen name="txtsize_subhead">16sp</dimen>  
21 - <dimen name="txtsize_body">14sp</dimen>  
22 - <dimen name="txtsize_caption">12sp</dimen> 16 + <dimen name="txtsize_display1">34dp</dimen>
  17 + <dimen name="txtsize_num">36dp</dimen>
  18 + <dimen name="txtsize_headline">24dp</dimen>
  19 + <dimen name="txtsize_title">20dp</dimen>
  20 + <dimen name="txtsize_subhead">16dp</dimen>
  21 + <dimen name="txtsize_body">14dp</dimen>
  22 + <dimen name="txtsize_caption">12dp</dimen>
23 23
24 <!-- other size --> 24 <!-- other size -->
25 <dimen name="corner_radius">2dp</dimen> 25 <dimen name="corner_radius">2dp</dimen>
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 41
42 <dimen name="sp_12">12sp</dimen> 42 <dimen name="sp_12">12sp</dimen>
43 <dimen name="sp_14">14sp</dimen> 43 <dimen name="sp_14">14sp</dimen>
44 - <dimen name="sp_16">16sp</dimen> 44 + <dimen name="sp_16">16dp</dimen>
45 <dimen name="sp_18">18sp</dimen> 45 <dimen name="sp_18">18sp</dimen>
46 46
47 <dimen name="textSize10">10dp</dimen> 47 <dimen name="textSize10">10dp</dimen>
mvpsdk/build.gradle
@@ -113,6 +113,9 @@ dependencies { @@ -113,6 +113,9 @@ dependencies {
113 //日历控件 113 //日历控件
114 compile 'com.github.idic779:monthweekmaterialcalendarview:1.7' 114 compile 'com.github.idic779:monthweekmaterialcalendarview:1.7'
115 115
  116 + //标签拖动排序
  117 + compile 'com.huxq17.handygridview:handygridview:1.1.0'
  118 +
116 //悬浮窗 119 //悬浮窗
117 // compile 'com.github.yhaolpz:FloatWindow:1.0.8' 120 // compile 'com.github.yhaolpz:FloatWindow:1.0.8'
118 121
mvpsdk/src/main/res/values/strings.xml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 <string name="loading">Loading……</string> 4 <string name="loading">Loading……</string>
5 <string name="load_failed">Load failed. Please click me again</string> 5 <string name="load_failed">Load failed. Please click me again</string>
6 <string name="press_again">Press again to exit</string> 6 <string name="press_again">Press again to exit</string>
7 - 7 +<string name="report">报告</string>
8 <!--历史数据界面--> 8 <!--历史数据界面-->
9 <string name="history_day">Day</string> 9 <string name="history_day">Day</string>
10 <string name="history_week">Week</string> 10 <string name="history_week">Week</string>