Commit bcafe53a0ae5e15d158ef410fa2c88c1a148ad8a
1 parent
42f6a92a
Exists in
yxb_dev
and in
2 other branches
no message
Showing
10 changed files
with
411 additions
and
10 deletions
Show diff stats
app/src/main/java/com/shunzhi/parent/adapter/ReportAdapter.java
0 → 100644
... | ... | @@ -0,0 +1,52 @@ |
1 | +package com.shunzhi.parent.adapter; | |
2 | + | |
3 | + | |
4 | +import android.content.Context; | |
5 | +import android.view.LayoutInflater; | |
6 | +import android.view.View; | |
7 | +import android.view.ViewGroup; | |
8 | + | |
9 | +import com.share.mvpsdk.base.adapter.BaseRecyclerViewAdapter; | |
10 | +import com.share.mvpsdk.base.adapter.BaseRecyclerViewHolder; | |
11 | +import com.shunzhi.parent.R; | |
12 | +import com.shunzhi.parent.bean.ReportBean; | |
13 | +import com.shunzhi.parent.views.ProgressView; | |
14 | + | |
15 | +/** | |
16 | + * Created by Administrator on 2018/3/9 0009. | |
17 | + */ | |
18 | + | |
19 | +public class ReportAdapter extends BaseRecyclerViewAdapter<ReportBean> { | |
20 | + | |
21 | + Context context; | |
22 | + | |
23 | + public ReportAdapter(Context context) { | |
24 | + this.context = context; | |
25 | + } | |
26 | + | |
27 | + | |
28 | + @Override | |
29 | + public BaseRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
30 | + View view = LayoutInflater.from(context).inflate(R.layout.item_report, null); | |
31 | + return new MyViewHolder(view); | |
32 | + } | |
33 | + | |
34 | + private class MyViewHolder extends BaseRecyclerViewHolder<ReportBean> { | |
35 | + | |
36 | + ProgressView ringView; | |
37 | + | |
38 | + | |
39 | + public MyViewHolder(View view) { | |
40 | + super(view); | |
41 | + ringView = view.findViewById(R.id.ring); | |
42 | + } | |
43 | + | |
44 | + @Override | |
45 | + public void onBindViewHolder(ReportBean object, int position) { | |
46 | + ringView.setMaxCount(100.0f); | |
47 | + ringView.setCurrentCount(100); | |
48 | + ringView.setScore(100); | |
49 | + } | |
50 | + | |
51 | + } | |
52 | +} | ... | ... |
app/src/main/java/com/shunzhi/parent/bean/ReportBean.java
0 → 100644
app/src/main/java/com/shunzhi/parent/ui/fragment/ReportFragment.java
1 | 1 | package com.shunzhi.parent.ui.fragment; |
2 | 2 | |
3 | -import android.content.Context; | |
4 | -import android.net.Uri; | |
5 | 3 | import android.os.Bundle; |
6 | -import android.support.v4.app.Fragment; | |
7 | -import android.view.LayoutInflater; | |
4 | +import android.support.annotation.NonNull; | |
5 | +import android.support.annotation.Nullable; | |
6 | +import android.support.v7.widget.LinearLayoutManager; | |
7 | +import android.support.v7.widget.RecyclerView; | |
8 | 8 | import android.view.View; |
9 | -import android.view.ViewGroup; | |
10 | 9 | |
10 | +import com.share.mvpsdk.base.BasePresenter; | |
11 | +import com.share.mvpsdk.base.fragment.BaseMVPCompatFragment; | |
11 | 12 | import com.shunzhi.parent.R; |
13 | +import com.shunzhi.parent.adapter.ReportAdapter; | |
14 | +import com.shunzhi.parent.bean.ReportBean; | |
12 | 15 | |
13 | -public class ReportFragment extends Fragment { | |
16 | +import java.util.ArrayList; | |
17 | +import java.util.List; | |
18 | + | |
19 | +public class ReportFragment extends BaseMVPCompatFragment { | |
20 | + RecyclerView recycler_report; | |
21 | + ReportAdapter reportAdapter; | |
22 | + List<ReportBean>list=new ArrayList<>(); | |
23 | + | |
24 | + @NonNull | |
25 | + @Override | |
26 | + public BasePresenter initPresenter() { | |
27 | + return null; | |
28 | + } | |
14 | 29 | |
15 | 30 | @Override |
16 | - public View onCreateView(LayoutInflater inflater, ViewGroup container, | |
17 | - Bundle savedInstanceState) { | |
18 | - // Inflate the layout for this fragment | |
19 | - return inflater.inflate(R.layout.fragment_report, container, false); | |
31 | + public int getLayoutId() { | |
32 | + return R.layout.fragment_report; | |
20 | 33 | } |
21 | 34 | |
35 | + @Override | |
36 | + public void initUI(View view, @Nullable Bundle savedInstanceState) { | |
37 | + recycler_report = view.findViewById(R.id.recycle_report); | |
38 | + recycler_report.setLayoutManager(new LinearLayoutManager(getActivity())); | |
39 | + reportAdapter=new ReportAdapter(getActivity()); | |
40 | + ReportBean reportBean=new ReportBean(); | |
41 | + list.add(reportBean); | |
42 | + list.add(reportBean); | |
43 | + reportAdapter.addAll(list); | |
44 | + recycler_report.setAdapter(reportAdapter); | |
45 | + | |
22 | 46 | |
47 | + | |
48 | + } | |
23 | 49 | } | ... | ... |
app/src/main/java/com/shunzhi/parent/views/ProgressView.java
0 → 100644
... | ... | @@ -0,0 +1,181 @@ |
1 | +package com.shunzhi.parent.views; | |
2 | + | |
3 | +import android.content.Context; | |
4 | +import android.graphics.Canvas; | |
5 | +import android.graphics.Color; | |
6 | +import android.graphics.Matrix; | |
7 | +import android.graphics.Paint; | |
8 | +import android.graphics.Paint.Cap; | |
9 | +import android.graphics.Paint.Style; | |
10 | +import android.graphics.PorterDuff; | |
11 | +import android.graphics.PorterDuffXfermode; | |
12 | +import android.graphics.RectF; | |
13 | +import android.graphics.SweepGradient; | |
14 | +import android.util.AttributeSet; | |
15 | +import android.view.View; | |
16 | + | |
17 | +/*** | |
18 | + * 自定义圆弧进度条 | |
19 | + * | |
20 | + * @author liujing | |
21 | + */ | |
22 | +public class ProgressView extends View { | |
23 | + | |
24 | + //分段颜色 | |
25 | + private static final int[] SECTION_COLORS = {Color.RED, Color.YELLOW,Color.GREEN}; | |
26 | + private static final String[] ALARM_LEVEL = {"", "", "", ""}; | |
27 | + private float maxCount; | |
28 | + private float currentCount; | |
29 | + private int score; | |
30 | + private String crrentLevel; | |
31 | + private Paint mPaint; | |
32 | + private Paint mTextPaint; | |
33 | + private int mWidth, mHeight; | |
34 | + | |
35 | + public ProgressView(Context context, AttributeSet attrs, int defStyleAttr) { | |
36 | + super(context, attrs, defStyleAttr); | |
37 | + init(context); | |
38 | + } | |
39 | + | |
40 | + public ProgressView(Context context, AttributeSet attrs) { | |
41 | + this(context, attrs, 0); | |
42 | + } | |
43 | + | |
44 | + public ProgressView(Context context) { | |
45 | + this(context, null); | |
46 | + } | |
47 | + | |
48 | + private void init(Context context) { | |
49 | + mPaint = new Paint(); | |
50 | + mTextPaint = new Paint(); | |
51 | + } | |
52 | + | |
53 | + @Override | |
54 | + protected void onDraw(Canvas canvas) { | |
55 | + super.onDraw(canvas); | |
56 | + initPaint(); | |
57 | + RectF rectBlackBg = new RectF(20, 20, mWidth - 20, mHeight - 20); | |
58 | + canvas.drawArc(rectBlackBg, 0, 275, false, mPaint); | |
59 | + mPaint.setColor(getColor(score)); | |
60 | + canvas.drawText(score + "%", mWidth / 2, mHeight / 2, mTextPaint); | |
61 | + mTextPaint.setTextSize(40); | |
62 | + | |
63 | + SweepGradient sweepGradient = new SweepGradient(mWidth / 2, mWidth / 2, SECTION_COLORS, null); | |
64 | + Matrix matrix = new Matrix(); | |
65 | + matrix.setRotate(120, this.mWidth / 2, mWidth / 2); | |
66 | + sweepGradient.setLocalMatrix(matrix); | |
67 | + float section = currentCount / maxCount; | |
68 | + mPaint.setShader(sweepGradient); | |
69 | + | |
70 | + mPaint.setShader(sweepGradient); | |
71 | + mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP)); | |
72 | + mPaint.setStyle(Style.STROKE); | |
73 | + canvas.drawArc(rectBlackBg, 135, section * 275, false, mPaint); | |
74 | + } | |
75 | + | |
76 | + | |
77 | + private void initPaint() { | |
78 | + mPaint.setAntiAlias(true); | |
79 | + mPaint.setStrokeWidth((float) 40.0); | |
80 | + mPaint.setStyle(Style.STROKE); | |
81 | + mPaint.setStrokeCap(Cap.ROUND); | |
82 | + mPaint.setColor(Color.TRANSPARENT); | |
83 | + mTextPaint.setAntiAlias(true); | |
84 | + mTextPaint.setStrokeWidth((float) 3.0); | |
85 | + mTextPaint.setTextAlign(Paint.Align.CENTER); | |
86 | + mTextPaint.setTextSize(50); | |
87 | + mTextPaint.setColor(Color.BLACK); | |
88 | + | |
89 | + } | |
90 | + | |
91 | + private int dipToPx(int dip) { | |
92 | + float scale = getContext().getResources().getDisplayMetrics().density; | |
93 | + return (int) (dip * scale + 0.5f * (dip >= 0 ? 1 : -1)); | |
94 | + } | |
95 | + | |
96 | + public int getScore() { | |
97 | + return score; | |
98 | + } | |
99 | + | |
100 | + public String getCrrentLevel() { | |
101 | + return crrentLevel; | |
102 | + } | |
103 | + | |
104 | + public void setCrrentLevel(String crrentLevel) { | |
105 | + this.crrentLevel = crrentLevel; | |
106 | + } | |
107 | + | |
108 | + public float getMaxCount() { | |
109 | + return maxCount; | |
110 | + } | |
111 | + | |
112 | + public float getCurrentCount() { | |
113 | + return currentCount; | |
114 | + } | |
115 | + | |
116 | + public void setScore(int score) { | |
117 | + this.score = score; | |
118 | + if (score == 100) { | |
119 | + this.crrentLevel = ALARM_LEVEL[0]; | |
120 | + } else if (score >= 70 && score < 100) { | |
121 | + this.crrentLevel = ALARM_LEVEL[1]; | |
122 | + } else if (score >= 30 && score < 70) { | |
123 | + this.crrentLevel = ALARM_LEVEL[2]; | |
124 | + } else { | |
125 | + this.crrentLevel = ALARM_LEVEL[3]; | |
126 | + } | |
127 | + invalidate(); | |
128 | + } | |
129 | + public int getColor(int score) { | |
130 | + this.score = score; | |
131 | + if (score > 60 && score <= 100) { | |
132 | + return SECTION_COLORS[2]; | |
133 | + } else if (score >= 30 && score <= 60) { | |
134 | + return SECTION_COLORS[1]; | |
135 | + } else { | |
136 | + return SECTION_COLORS[0]; | |
137 | + } | |
138 | + | |
139 | + } | |
140 | + | |
141 | + /*** | |
142 | + * 设置最大的进度值 | |
143 | + * | |
144 | + * @param maxCount | |
145 | + */ | |
146 | + public void setMaxCount(float maxCount) { | |
147 | + this.maxCount = maxCount; | |
148 | + } | |
149 | + | |
150 | + /*** | |
151 | + * 设置当前的进度值 | |
152 | + * | |
153 | + * @param currentCount | |
154 | + */ | |
155 | + public void setCurrentCount(float currentCount) { | |
156 | + this.currentCount = currentCount > maxCount ? maxCount : currentCount; | |
157 | + invalidate(); | |
158 | + } | |
159 | + | |
160 | + @Override | |
161 | + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { | |
162 | + int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec); | |
163 | + int widthSpecSize = MeasureSpec.getSize(widthMeasureSpec); | |
164 | + int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec); | |
165 | + int heightSpecSize = MeasureSpec.getSize(heightMeasureSpec); | |
166 | + if (widthSpecMode == MeasureSpec.EXACTLY | |
167 | + || widthSpecMode == MeasureSpec.AT_MOST) { | |
168 | + mWidth = widthSpecSize; | |
169 | + } else { | |
170 | + mWidth = 0; | |
171 | + } | |
172 | + if (heightSpecMode == MeasureSpec.AT_MOST | |
173 | + || heightSpecMode == MeasureSpec.UNSPECIFIED) { | |
174 | + mHeight = dipToPx(15); | |
175 | + } else { | |
176 | + mHeight = heightSpecSize; | |
177 | + } | |
178 | + setMeasuredDimension(mWidth, mHeight); | |
179 | + } | |
180 | + | |
181 | + } | ... | ... |
... | ... | @@ -0,0 +1,6 @@ |
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> | |
3 | + <stroke android:color="#00000000" android:width="1dp"/> | |
4 | + <solid android:color="@color/white" /> | |
5 | + <corners android:radius="10dp"/> | |
6 | +</shape> | |
0 | 7 | \ No newline at end of file | ... | ... |
... | ... | @@ -0,0 +1,6 @@ |
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> | |
3 | + <stroke android:color="#00000000" android:width="1dp"/> | |
4 | + <solid android:color="#AACFFC" /> | |
5 | + <corners android:topLeftRadius="10dp" android:topRightRadius="10dp"/> | |
6 | +</shape> | |
0 | 7 | \ No newline at end of file | ... | ... |
app/src/main/res/layout/fragment_report.xml
... | ... | @@ -49,8 +49,25 @@ |
49 | 49 | android:drawableRight="@drawable/screen" |
50 | 50 | /> |
51 | 51 | </LinearLayout> |
52 | +<LinearLayout | |
53 | + android:layout_width="match_parent" | |
54 | + android:layout_height="60dp"> | |
55 | +<TextView | |
56 | + android:layout_width="match_parent" | |
57 | + android:layout_height="match_parent" | |
58 | + android:text="日期控件" | |
59 | + android:textColor="@color/white" | |
60 | + android:gravity="center" | |
61 | + android:background="@color/textRed" | |
62 | + /> | |
52 | 63 | |
64 | +</LinearLayout> | |
65 | +<android.support.v7.widget.RecyclerView | |
66 | + android:id="@+id/recycle_report" | |
67 | + android:layout_width="match_parent" | |
68 | + android:layout_height="match_parent"> | |
53 | 69 | |
70 | +</android.support.v7.widget.RecyclerView> | |
54 | 71 | </LinearLayout> |
55 | 72 | |
56 | 73 | </FrameLayout> | ... | ... |
... | ... | @@ -0,0 +1,103 @@ |
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="match_parent"> | |
5 | + | |
6 | + <LinearLayout | |
7 | + android:layout_width="match_parent" | |
8 | + android:layout_height="250dp" | |
9 | + android:layout_margin="20dp" | |
10 | + android:background="@drawable/report_white" | |
11 | + android:orientation="vertical"> | |
12 | + | |
13 | + <TextView | |
14 | + android:layout_width="match_parent" | |
15 | + android:layout_height="40dp" | |
16 | + android:background="@drawable/rudiobtn_report_top" | |
17 | + android:gravity="center_vertical" | |
18 | + android:paddingLeft="20dp" | |
19 | + android:text="语文作业报告" | |
20 | + android:textColor="#20519f" | |
21 | + android:textSize="@dimen/sp_16" /> | |
22 | + | |
23 | + <RelativeLayout | |
24 | + android:layout_width="match_parent" | |
25 | + android:layout_height="wrap_content" | |
26 | + android:layout_weight="1" | |
27 | + android:orientation="horizontal"> | |
28 | + | |
29 | + <LinearLayout | |
30 | + android:layout_width="80dp" | |
31 | + android:layout_height="match_parent" | |
32 | + android:layout_marginTop="10dp" | |
33 | + android:orientation="vertical"> | |
34 | + | |
35 | + <TextView | |
36 | + android:layout_width="match_parent" | |
37 | + android:layout_height="wrap_content" | |
38 | + android:gravity="center" | |
39 | + android:text="12" | |
40 | + android:textColor="@color/textGreen" | |
41 | + android:textSize="@dimen/txtsize_num" /> | |
42 | + | |
43 | + <TextView | |
44 | + android:layout_width="match_parent" | |
45 | + android:layout_height="wrap_content" | |
46 | + android:gravity="center" | |
47 | + android:text="正确" | |
48 | + android:textColor="@color/textGreen" | |
49 | + android:textSize="@dimen/sp_16" /> | |
50 | + </LinearLayout> | |
51 | + | |
52 | + <LinearLayout | |
53 | + android:layout_width="wrap_content" | |
54 | + android:layout_height="match_parent" | |
55 | + android:layout_weight="1" | |
56 | + android:layout_centerInParent="true" | |
57 | + android:gravity="center_horizontal" | |
58 | + > | |
59 | + <com.shunzhi.parent.views.ProgressView | |
60 | + android:id="@+id/ring" | |
61 | + android:layout_width="160dp" | |
62 | + android:layout_height="match_parent" | |
63 | + android:layout_marginTop="10dp" /> | |
64 | + </LinearLayout> | |
65 | + | |
66 | + <LinearLayout | |
67 | + android:layout_width="80dp" | |
68 | + android:layout_height="match_parent" | |
69 | + android:layout_marginTop="10dp" | |
70 | + android:layout_alignParentRight="true" | |
71 | + android:orientation="vertical"> | |
72 | + | |
73 | + <TextView | |
74 | + android:layout_width="match_parent" | |
75 | + android:layout_height="wrap_content" | |
76 | + android:gravity="center" | |
77 | + android:text="8" | |
78 | + android:textColor="@color/textRed" | |
79 | + android:textSize="@dimen/txtsize_num" /> | |
80 | + | |
81 | + <TextView | |
82 | + android:layout_width="match_parent" | |
83 | + android:layout_height="wrap_content" | |
84 | + android:gravity="center" | |
85 | + android:text="错误" | |
86 | + android:textColor="@color/textRed" | |
87 | + android:textSize="@dimen/sp_16" /> | |
88 | + </LinearLayout> | |
89 | + | |
90 | + </RelativeLayout> | |
91 | + | |
92 | + <TextView | |
93 | + android:layout_width="match_parent" | |
94 | + android:layout_height="wrap_content" | |
95 | + android:height="40dp" | |
96 | + android:gravity="center_vertical" | |
97 | + android:paddingLeft="20dp" | |
98 | + android:text="3月4日语文作业" | |
99 | + android:textColor="@color/text_color" | |
100 | + android:textSize="@dimen/sp_14" /> | |
101 | + | |
102 | + </LinearLayout> | |
103 | +</LinearLayout> | ... | ... |
app/src/main/res/values/colors.xml
app/src/main/res/values/dimens.xml
... | ... | @@ -14,6 +14,7 @@ |
14 | 14 | |
15 | 15 | <!-- txtsize --> |
16 | 16 | <dimen name="txtsize_display1">34sp</dimen> |
17 | + <dimen name="txtsize_num">36sp</dimen> | |
17 | 18 | <dimen name="txtsize_headline">24sp</dimen> |
18 | 19 | <dimen name="txtsize_title">20sp</dimen> |
19 | 20 | <dimen name="txtsize_subhead">16sp</dimen> | ... | ... |