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 @@
{
public abstract void reportResult();
+ public abstract void getReports();
}
interface IReportModel extends IBaseModel{
Observable getReportResult();
+ void getReports();
}
interface IReportView extends IBaseView{
void UpdateList(Listlist);
+
+ void showReports(List 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 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 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 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 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
- implements ReportContract.IReportView {
+ implements ReportContract.IReportView ,View.OnClickListener{
+
RecyclerView recyclerView;
ReportAdapter reportAdapter;
@@ -36,6 +36,10 @@ public class ReportFragment extends BaseMVPCompatFragment 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 @@
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
\ 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 @@
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+
+
\ 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" />
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" />
-
@@ -20,7 +20,7 @@
android:textColor="#20519f"
android:textSize="@dimen/sp_16" />
-
-
+ android:layout_centerInParent="true"
+ android:gravity="center_horizontal"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 @@
48dp
- 34sp
- 36sp
- 24sp
- 20sp
- 16sp
- 14sp
- 12sp
+ 34dp
+ 36dp
+ 24dp
+ 20dp
+ 16dp
+ 14dp
+ 12dp
2dp
@@ -41,7 +41,7 @@
12sp
14sp
- 16sp
+ 16dp
18sp
10dp
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 @@
Loading……
Load failed. Please click me again
Press again to exit
-
+报告
Day
Week
--
libgit2 0.21.0