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