diff --git a/app/src/main/java/com/shunzhi/parent/adapter/ReportAdapter.java b/app/src/main/java/com/shunzhi/parent/adapter/ReportAdapter.java new file mode 100644 index 0000000..fdd54b9 --- /dev/null +++ b/app/src/main/java/com/shunzhi/parent/adapter/ReportAdapter.java @@ -0,0 +1,52 @@ +package com.shunzhi.parent.adapter; + + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.share.mvpsdk.base.adapter.BaseRecyclerViewAdapter; +import com.share.mvpsdk.base.adapter.BaseRecyclerViewHolder; +import com.shunzhi.parent.R; +import com.shunzhi.parent.bean.ReportBean; +import com.shunzhi.parent.views.ProgressView; + +/** + * Created by Administrator on 2018/3/9 0009. + */ + +public class ReportAdapter extends BaseRecyclerViewAdapter<ReportBean> { + + Context context; + + public ReportAdapter(Context context) { + this.context = context; + } + + + @Override + public BaseRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(context).inflate(R.layout.item_report, null); + return new MyViewHolder(view); + } + + private class MyViewHolder extends BaseRecyclerViewHolder<ReportBean> { + + ProgressView ringView; + + + public MyViewHolder(View view) { + super(view); + ringView = view.findViewById(R.id.ring); + } + + @Override + public void onBindViewHolder(ReportBean object, int position) { + ringView.setMaxCount(100.0f); + ringView.setCurrentCount(100); + ringView.setScore(100); + } + + } +} diff --git a/app/src/main/java/com/shunzhi/parent/bean/ReportBean.java b/app/src/main/java/com/shunzhi/parent/bean/ReportBean.java new file mode 100644 index 0000000..434d2ec --- /dev/null +++ b/app/src/main/java/com/shunzhi/parent/bean/ReportBean.java @@ -0,0 +1,8 @@ +package com.shunzhi.parent.bean; + +/** + * Created by Administrator on 2018/3/9 0009. + */ + +public class ReportBean { +} 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 e9beb34..4a162c7 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 @@ -1,23 +1,49 @@ package com.shunzhi.parent.ui.fragment; -import android.content.Context; -import android.net.Uri; import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import android.view.View; -import android.view.ViewGroup; +import com.share.mvpsdk.base.BasePresenter; +import com.share.mvpsdk.base.fragment.BaseMVPCompatFragment; import com.shunzhi.parent.R; +import com.shunzhi.parent.adapter.ReportAdapter; +import com.shunzhi.parent.bean.ReportBean; -public class ReportFragment extends Fragment { +import java.util.ArrayList; +import java.util.List; + +public class ReportFragment extends BaseMVPCompatFragment { + RecyclerView recycler_report; + ReportAdapter reportAdapter; + List<ReportBean>list=new ArrayList<>(); + + @NonNull + @Override + public BasePresenter initPresenter() { + return null; + } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_report, container, false); + public int getLayoutId() { + return R.layout.fragment_report; } + @Override + public void initUI(View view, @Nullable Bundle savedInstanceState) { + recycler_report = view.findViewById(R.id.recycle_report); + recycler_report.setLayoutManager(new LinearLayoutManager(getActivity())); + reportAdapter=new ReportAdapter(getActivity()); + ReportBean reportBean=new ReportBean(); + list.add(reportBean); + list.add(reportBean); + reportAdapter.addAll(list); + recycler_report.setAdapter(reportAdapter); + + + } } diff --git a/app/src/main/java/com/shunzhi/parent/views/ProgressView.java b/app/src/main/java/com/shunzhi/parent/views/ProgressView.java new file mode 100644 index 0000000..c66ccd5 --- /dev/null +++ b/app/src/main/java/com/shunzhi/parent/views/ProgressView.java @@ -0,0 +1,181 @@ +package com.shunzhi.parent.views; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Paint.Cap; +import android.graphics.Paint.Style; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import android.graphics.RectF; +import android.graphics.SweepGradient; +import android.util.AttributeSet; +import android.view.View; + +/*** + * 自定义圆弧进度条 + * + * @author liujing + */ +public class ProgressView extends View { + + //分段颜色 + private static final int[] SECTION_COLORS = {Color.RED, Color.YELLOW,Color.GREEN}; + private static final String[] ALARM_LEVEL = {"", "", "", ""}; + private float maxCount; + private float currentCount; + private int score; + private String crrentLevel; + private Paint mPaint; + private Paint mTextPaint; + private int mWidth, mHeight; + + public ProgressView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context); + } + + public ProgressView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public ProgressView(Context context) { + this(context, null); + } + + private void init(Context context) { + mPaint = new Paint(); + mTextPaint = new Paint(); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + initPaint(); + RectF rectBlackBg = new RectF(20, 20, mWidth - 20, mHeight - 20); + canvas.drawArc(rectBlackBg, 0, 275, false, mPaint); + mPaint.setColor(getColor(score)); + canvas.drawText(score + "%", mWidth / 2, mHeight / 2, mTextPaint); + mTextPaint.setTextSize(40); + + SweepGradient sweepGradient = new SweepGradient(mWidth / 2, mWidth / 2, SECTION_COLORS, null); + Matrix matrix = new Matrix(); + matrix.setRotate(120, this.mWidth / 2, mWidth / 2); + sweepGradient.setLocalMatrix(matrix); + float section = currentCount / maxCount; + mPaint.setShader(sweepGradient); + + mPaint.setShader(sweepGradient); + mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP)); + mPaint.setStyle(Style.STROKE); + canvas.drawArc(rectBlackBg, 135, section * 275, false, mPaint); + } + + + private void initPaint() { + mPaint.setAntiAlias(true); + mPaint.setStrokeWidth((float) 40.0); + mPaint.setStyle(Style.STROKE); + mPaint.setStrokeCap(Cap.ROUND); + mPaint.setColor(Color.TRANSPARENT); + mTextPaint.setAntiAlias(true); + mTextPaint.setStrokeWidth((float) 3.0); + mTextPaint.setTextAlign(Paint.Align.CENTER); + mTextPaint.setTextSize(50); + mTextPaint.setColor(Color.BLACK); + + } + + private int dipToPx(int dip) { + float scale = getContext().getResources().getDisplayMetrics().density; + return (int) (dip * scale + 0.5f * (dip >= 0 ? 1 : -1)); + } + + public int getScore() { + return score; + } + + public String getCrrentLevel() { + return crrentLevel; + } + + public void setCrrentLevel(String crrentLevel) { + this.crrentLevel = crrentLevel; + } + + public float getMaxCount() { + return maxCount; + } + + public float getCurrentCount() { + return currentCount; + } + + public void setScore(int score) { + this.score = score; + if (score == 100) { + this.crrentLevel = ALARM_LEVEL[0]; + } else if (score >= 70 && score < 100) { + this.crrentLevel = ALARM_LEVEL[1]; + } else if (score >= 30 && score < 70) { + this.crrentLevel = ALARM_LEVEL[2]; + } else { + this.crrentLevel = ALARM_LEVEL[3]; + } + invalidate(); + } + public int getColor(int score) { + this.score = score; + if (score > 60 && score <= 100) { + return SECTION_COLORS[2]; + } else if (score >= 30 && score <= 60) { + return SECTION_COLORS[1]; + } else { + return SECTION_COLORS[0]; + } + + } + + /*** + * 设置最大的进度值 + * + * @param maxCount + */ + public void setMaxCount(float maxCount) { + this.maxCount = maxCount; + } + + /*** + * 设置当前的进度值 + * + * @param currentCount + */ + public void setCurrentCount(float currentCount) { + this.currentCount = currentCount > maxCount ? maxCount : currentCount; + invalidate(); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec); + int widthSpecSize = MeasureSpec.getSize(widthMeasureSpec); + int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec); + int heightSpecSize = MeasureSpec.getSize(heightMeasureSpec); + if (widthSpecMode == MeasureSpec.EXACTLY + || widthSpecMode == MeasureSpec.AT_MOST) { + mWidth = widthSpecSize; + } else { + mWidth = 0; + } + if (heightSpecMode == MeasureSpec.AT_MOST + || heightSpecMode == MeasureSpec.UNSPECIFIED) { + mHeight = dipToPx(15); + } else { + mHeight = heightSpecSize; + } + setMeasuredDimension(mWidth, mHeight); + } + + } diff --git a/app/src/main/res/drawable/report_white.xml b/app/src/main/res/drawable/report_white.xml new file mode 100644 index 0000000..0f54385 --- /dev/null +++ b/app/src/main/res/drawable/report_white.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> + <stroke android:color="#00000000" android:width="1dp"/> + <solid android:color="@color/white" /> + <corners android:radius="10dp"/> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/rudiobtn_report_top.xml b/app/src/main/res/drawable/rudiobtn_report_top.xml new file mode 100644 index 0000000..8a9e975 --- /dev/null +++ b/app/src/main/res/drawable/rudiobtn_report_top.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> + <stroke android:color="#00000000" android:width="1dp"/> + <solid android:color="#AACFFC" /> + <corners android:topLeftRadius="10dp" android:topRightRadius="10dp"/> +</shape> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_report.xml b/app/src/main/res/layout/fragment_report.xml index e1408fe..8d3f24f 100644 --- a/app/src/main/res/layout/fragment_report.xml +++ b/app/src/main/res/layout/fragment_report.xml @@ -49,8 +49,25 @@ android:drawableRight="@drawable/screen" /> </LinearLayout> +<LinearLayout + android:layout_width="match_parent" + android:layout_height="60dp"> +<TextView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text="日期控件" + android:textColor="@color/white" + android:gravity="center" + android:background="@color/textRed" + /> +</LinearLayout> +<android.support.v7.widget.RecyclerView + android:id="@+id/recycle_report" + android:layout_width="match_parent" + android:layout_height="match_parent"> +</android.support.v7.widget.RecyclerView> </LinearLayout> </FrameLayout> diff --git a/app/src/main/res/layout/item_report.xml b/app/src/main/res/layout/item_report.xml new file mode 100644 index 0000000..8c2a35f --- /dev/null +++ b/app/src/main/res/layout/item_report.xml @@ -0,0 +1,103 @@ +<?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="match_parent"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="250dp" + android:layout_margin="20dp" + android:background="@drawable/report_white" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="40dp" + android:background="@drawable/rudiobtn_report_top" + android:gravity="center_vertical" + android:paddingLeft="20dp" + android:text="语文作业报告" + android:textColor="#20519f" + android:textSize="@dimen/sp_16" /> + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="horizontal"> + + <LinearLayout + android:layout_width="80dp" + android:layout_height="match_parent" + android:layout_marginTop="10dp" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:text="12" + android:textColor="@color/textGreen" + android:textSize="@dimen/txtsize_num" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:text="正确" + android:textColor="@color/textGreen" + android:textSize="@dimen/sp_16" /> + </LinearLayout> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_weight="1" + android:layout_centerInParent="true" + android:gravity="center_horizontal" + > + <com.shunzhi.parent.views.ProgressView + android:id="@+id/ring" + android:layout_width="160dp" + android:layout_height="match_parent" + android:layout_marginTop="10dp" /> + </LinearLayout> + + <LinearLayout + android:layout_width="80dp" + android:layout_height="match_parent" + android:layout_marginTop="10dp" + android:layout_alignParentRight="true" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:text="8" + android:textColor="@color/textRed" + android:textSize="@dimen/txtsize_num" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:text="错误" + android:textColor="@color/textRed" + android:textSize="@dimen/sp_16" /> + </LinearLayout> + + </RelativeLayout> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:height="40dp" + android:gravity="center_vertical" + android:paddingLeft="20dp" + android:text="3月4日语文作业" + android:textColor="@color/text_color" + android:textSize="@dimen/sp_14" /> + + </LinearLayout> +</LinearLayout> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 583d122..6a78ac2 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -18,4 +18,5 @@ <color name="zxlx">#1BE2E5</color> <color name="huodong_blue">#ACD1FB</color> <color name="text_color">#757575</color> + <color name="textGreen">#5FB762</color> </resources> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 7b92db3..54b1b4a 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -14,6 +14,7 @@ <!-- 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> -- libgit2 0.21.0