Commit 2d8005994d5896c255ea5fb35afd4f1ee8725128

Authored by shixianjie
1 parent ff207bc53e
Exists in master

查看题目详情

app/src/main/AndroidManifest.xml
... ... @@ -155,6 +155,7 @@
155 155 <activity android:name=".HomeworkDetailActivity" />
156 156 <activity android:name=".HomeworkSelectActivity" />
157 157 <activity android:name=".HomeworkFeedbackActivity" />
  158 + <activity android:name=".HomeworkTopicActivity" />
158 159  
159 160 <provider
160 161 android:name="androidx.core.content.FileProvider"
... ...
app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java
1 1 package com.hjx.parent;
2 2  
3 3 import android.annotation.SuppressLint;
  4 +import android.content.Intent;
4 5 import android.os.Bundle;
5 6 import android.view.View;
6 7 import android.widget.ImageView;
... ... @@ -62,13 +63,27 @@ public class HomeworkFeedbackActivity extends BaseRxActivity&lt;ActivityHomeworkFee
62 63 binding.tvPercent.setText(new DecimalFormat("0%").format(1f * correctNo / mList.size()));
63 64  
64 65 binding.rvCorrect.setLayoutManager(new FlexboxLayoutManager(this));
65   - binding.rvCorrect.setAdapter(new NumberAdapter(mList));
  66 + NumberAdapter numberAdapter = new NumberAdapter(mList);
  67 + binding.rvCorrect.setAdapter(numberAdapter);
66 68 binding.rvError.setVisibility(errorList.isEmpty() ? View.GONE : View.VISIBLE);
67 69 binding.rvError.setAdapter(new EvalAdapter(errorList));
68 70  
  71 + binding.btnDetail.setOnClickListener(v -> {
  72 + viewTopicDetail(0);
  73 + });
  74 + numberAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
  75 + viewTopicDetail(i);
  76 + });
69 77 binding.btnPublish.setOnClickListener(v -> submit());
70 78 }
71 79  
  80 + private void viewTopicDetail(int position) {
  81 + Intent intent = new Intent(this, HomeworkTopicActivity.class);
  82 + intent.putExtra("list", mList);
  83 + intent.putExtra("position", position);
  84 + startActivity(intent);
  85 + }
  86 +
72 87 @SuppressLint("CheckResult")
73 88 private void submit() {
74 89 Map<String, Object> body = new HashMap<>();
... ...
app/src/main/java/com/hjx/parent/HomeworkTopicActivity.java
... ... @@ -0,0 +1,84 @@
  1 +package com.hjx.parent;
  2 +
  3 +import android.annotation.SuppressLint;
  4 +import android.content.res.ColorStateList;
  5 +import android.os.Bundle;
  6 +import android.widget.TextView;
  7 +
  8 +import androidx.annotation.NonNull;
  9 +import androidx.annotation.Nullable;
  10 +
  11 +import com.bumptech.glide.Glide;
  12 +import com.chad.library.adapter.base.BaseQuickAdapter;
  13 +import com.chad.library.adapter.base.BaseViewHolder;
  14 +import com.google.gson.Gson;
  15 +import com.hjx.parent.databinding.ActivityTopicDetailBinding;
  16 +import com.hjx.parent.rx.BaseRxActivity;
  17 +import com.prws.common.bean.homework.HomeWork;
  18 +import com.prws.common.bean.homework.KeyValue;
  19 +
  20 +import java.util.ArrayList;
  21 +import java.util.List;
  22 +
  23 +public class HomeworkTopicActivity extends BaseRxActivity<ActivityTopicDetailBinding> {
  24 + private ArrayList<HomeWork> mList;
  25 + private int position;
  26 +
  27 + @SuppressWarnings("unchecked")
  28 + @Override
  29 + public void initView(Bundle savedInstanceState) {
  30 + mList = (ArrayList<HomeWork>) getIntent().getSerializableExtra("list");
  31 + position = getIntent().getIntExtra("position", 0);
  32 + binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
  33 + NumberAdapter adapter = new NumberAdapter(mList);
  34 + binding.rvNumber.setAdapter(adapter);
  35 +
  36 + showTopic(position);
  37 + }
  38 +
  39 + @SuppressLint("SetTextI18n")
  40 + private void showTopic(int position) {
  41 + if (position < 0 || position >= mList.size()) return;
  42 + this.position = position;
  43 + binding.btnPre.setEnabled(position > 0);
  44 + binding.btnNext.setEnabled(position < mList.size() - 1);
  45 + binding.tvTitle.setText((position + 1) + "/" + mList.size());
  46 + binding.tvNo.setText("题目" + (position + 1));
  47 +
  48 + HomeWork homeWork = mList.get(position);
  49 + Glide.with(this).load(homeWork.url).into(binding.ivTopic);
  50 + Glide.with(this).load(homeWork.analyseUrl).into(binding.ivAnalyse);
  51 + String answer = homeWork.answer == null ? "" : homeWork.answer
  52 + .replace("<br />", "\n")
  53 + .replace("${", "")
  54 + .replace("}$", "");
  55 + binding.tvAnswer.setText(answer);
  56 + if (homeWork.pointsObj == null) homeWork.formatPoints(new Gson());
  57 + StringBuilder pointBuilder = new StringBuilder();
  58 + for (KeyValue point: homeWork.pointsObj) {
  59 + pointBuilder.append("\n").append(point.Value);
  60 + }
  61 + binding.tvPoint.setText(homeWork.pointsObj.size() == 0 ? "" : pointBuilder.substring(1));
  62 + }
  63 +
  64 + @Override
  65 + protected ActivityTopicDetailBinding getViewBinding() {
  66 + return ActivityTopicDetailBinding.inflate(getLayoutInflater());
  67 + }
  68 +
  69 + static class NumberAdapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> {
  70 +
  71 + public NumberAdapter(@Nullable List<HomeWork> data) {
  72 + super(R.layout.item_topic_number, data);
  73 + }
  74 +
  75 + @Override
  76 + protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) {
  77 + TextView textView = (TextView) holder.itemView;
  78 + textView.setText(String.valueOf(getData().indexOf(homeWork) + 1));
  79 +
  80 + int color = homeWork.check ? 0xFFFF4133 : 0xFF4ABC78;
  81 + textView.setBackgroundTintList(ColorStateList.valueOf(color));
  82 + }
  83 + }
  84 +}
... ...
app/src/main/res/color/color_btn_pre_state.xml
... ... @@ -0,0 +1,5 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<selector xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <item android:color="#CCC" android:state_enabled="false"/>
  4 + <item android:color="#333"/>
  5 +</selector>
0 6 \ No newline at end of file
... ...
app/src/main/res/drawable/ic_analyse.xml
... ... @@ -0,0 +1,5 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <item android:width="17dp" android:height="17dp"
  4 + android:drawable="@drawable/png_ic_analyse"/>
  5 +</layer-list>
0 6 \ No newline at end of file
... ...
app/src/main/res/drawable/png_ic_analyse.png

2.85 KB

app/src/main/res/drawable/svg_pre.xml
... ... @@ -0,0 +1,10 @@
  1 +<vector xmlns:android="http://schemas.android.com/apk/res/android"
  2 + android:width="8dp"
  3 + android:height="12dp"
  4 + android:viewportWidth="16"
  5 + android:viewportHeight="25">
  6 + <path
  7 + android:pathData="M0.886,13.934L1.269,14.315L1.269,14.315L11.225,24.196C12.071,25.036 13.443,25.036 14.289,24.196L14.672,23.816C15.518,22.977 15.518,21.615 14.672,20.776L6.247,12.414L14.672,4.053C15.518,3.213 15.518,1.852 14.672,1.012L14.289,0.632C13.443,-0.207 12.071,-0.207 11.225,0.632L1.269,10.514L1.269,10.514L0.886,10.894C0.04,11.734 0.04,13.095 0.886,13.934Z"
  8 + android:fillColor="#333333"
  9 + android:fillType="evenOdd"/>
  10 +</vector>
... ...
app/src/main/res/layout/activity_homework_feedback.xml
... ... @@ -151,6 +151,7 @@
151 151 android:layout_width="wrap_content"
152 152 android:layout_height="wrap_content"/>
153 153 <TextView
  154 + android:id="@+id/btnDetail"
154 155 android:text="(点击查看题目详情)"
155 156 android:textSize="14sp"
156 157 android:textColor="#1C90F3"
... ...
app/src/main/res/layout/activity_topic_detail.xml
... ... @@ -0,0 +1,189 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:app="http://schemas.android.com/apk/res-auto"
  4 + xmlns:tools="http://schemas.android.com/tools"
  5 + android:orientation="vertical"
  6 + android:layout_width="match_parent"
  7 + android:layout_height="match_parent"
  8 + tools:ignore="UseCompoundDrawables,HardcodedText,SmallSp,ContentDescription">
  9 +
  10 + <androidx.appcompat.widget.Toolbar
  11 + android:id="@+id/toolbar"
  12 + app:navigationIcon="@drawable/svg_back"
  13 + app:contentInsetStartWithNavigation="14dp"
  14 + android:paddingStart="-8dp"
  15 + android:paddingEnd="-8dp"
  16 + android:background="@color/white"
  17 + android:layout_width="match_parent"
  18 + android:layout_height="40dp">
  19 + <TextView
  20 + android:id="@+id/tvTitle"
  21 + tools:text="1/6"
  22 + android:textSize="18sp"
  23 + android:textColor="#333"
  24 + android:textStyle="bold"
  25 + android:layout_gravity="center"
  26 + android:layout_width="wrap_content"
  27 + android:layout_height="wrap_content"/>
  28 + </androidx.appcompat.widget.Toolbar>
  29 +
  30 + <androidx.core.widget.NestedScrollView
  31 + android:layout_width="match_parent"
  32 + android:layout_height="0dp"
  33 + android:layout_weight="1">
  34 + <LinearLayout
  35 + android:orientation="vertical"
  36 + android:paddingHorizontal="15dp"
  37 + android:layout_width="match_parent"
  38 + android:layout_height="wrap_content">
  39 +
  40 + <androidx.recyclerview.widget.RecyclerView
  41 + android:id="@+id/rvNumber"
  42 + android:orientation="horizontal"
  43 + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
  44 + android:layout_marginTop="15dp"
  45 + android:layout_width="match_parent"
  46 + android:layout_height="wrap_content"/>
  47 +
  48 + <LinearLayout
  49 + android:orientation="vertical"
  50 + android:layout_marginTop="15dp"
  51 + android:background="@drawable/shape_radius_5"
  52 + android:backgroundTint="@color/white"
  53 + android:layout_width="match_parent"
  54 + android:layout_height="wrap_content">
  55 + <TextView
  56 + android:id="@+id/tvNo"
  57 + tools:text="题目8"
  58 + android:layout_width="40dp"
  59 + android:layout_height="16dp"
  60 + android:layout_gravity="end"
  61 + android:background="@drawable/bg_homework_num"
  62 + android:gravity="center"
  63 + android:textColor="@color/white"
  64 + android:textSize="9sp" />
  65 + <ImageView
  66 + android:id="@+id/ivTopic"
  67 + android:adjustViewBounds="true"
  68 + android:layout_marginHorizontal="20dp"
  69 + android:layout_marginVertical="16dp"
  70 + android:layout_width="match_parent"
  71 + android:layout_height="wrap_content"/>
  72 + </LinearLayout>
  73 +
  74 + <LinearLayout
  75 + android:orientation="vertical"
  76 + android:layout_marginTop="15dp"
  77 + android:background="@drawable/shape_radius_5"
  78 + android:backgroundTint="@color/white"
  79 + android:layout_width="match_parent"
  80 + android:layout_height="wrap_content">
  81 + <androidx.appcompat.widget.AppCompatTextView
  82 + android:text="解析"
  83 + android:layout_width="wrap_content"
  84 + android:layout_height="wrap_content"
  85 + android:layout_marginTop="15dp"
  86 + android:layout_marginHorizontal="15dp"
  87 + android:drawableStart="@drawable/ic_analyse"
  88 + android:drawablePadding="5dp"
  89 + android:gravity="center|center_vertical"
  90 + android:textStyle="bold"
  91 + android:textColor="#333"
  92 + android:textSize="16sp" />
  93 + <ImageView
  94 + android:id="@+id/ivAnalyse"
  95 + android:adjustViewBounds="true"
  96 + android:layout_marginHorizontal="15dp"
  97 + android:layout_marginVertical="15dp"
  98 + android:layout_width="match_parent"
  99 + android:layout_height="wrap_content"/>
  100 + </LinearLayout>
  101 +
  102 + <LinearLayout
  103 + android:orientation="vertical"
  104 + android:layout_marginTop="15dp"
  105 + android:background="@drawable/shape_radius_5"
  106 + android:backgroundTint="@color/white"
  107 + android:layout_width="match_parent"
  108 + android:layout_height="wrap_content">
  109 + <androidx.appcompat.widget.AppCompatTextView
  110 + android:text="答案"
  111 + android:layout_width="wrap_content"
  112 + android:layout_height="wrap_content"
  113 + android:layout_marginTop="15dp"
  114 + android:layout_marginHorizontal="15dp"
  115 + android:drawableStart="@drawable/ic_analyse"
  116 + android:drawablePadding="5dp"
  117 + android:gravity="center|center_vertical"
  118 + android:textStyle="bold"
  119 + android:textColor="#333"
  120 + android:textSize="16sp" />
  121 + <TextView
  122 + android:id="@+id/tvAnswer"
  123 + android:textSize="12sp"
  124 + android:textColor="#333"
  125 + android:layout_margin="15dp"
  126 + android:layout_width="match_parent"
  127 + android:layout_height="wrap_content"/>
  128 + </LinearLayout>
  129 +
  130 + <LinearLayout
  131 + android:orientation="vertical"
  132 + android:layout_marginTop="15dp"
  133 + android:background="@drawable/shape_radius_5"
  134 + android:backgroundTint="@color/white"
  135 + android:layout_width="match_parent"
  136 + android:layout_height="wrap_content">
  137 + <androidx.appcompat.widget.AppCompatTextView
  138 + android:text="知识点"
  139 + android:layout_width="wrap_content"
  140 + android:layout_height="wrap_content"
  141 + android:layout_marginTop="15dp"
  142 + android:layout_marginHorizontal="15dp"
  143 + android:drawableStart="@drawable/ic_analyse"
  144 + android:drawablePadding="5dp"
  145 + android:gravity="center|center_vertical"
  146 + android:textStyle="bold"
  147 + android:textColor="#333"
  148 + android:textSize="16sp" />
  149 + <TextView
  150 + android:id="@+id/tvPoint"
  151 + android:textSize="12sp"
  152 + android:textColor="#333"
  153 + android:layout_margin="15dp"
  154 + android:layout_width="match_parent"
  155 + android:layout_height="wrap_content"/>
  156 + </LinearLayout>
  157 +
  158 + </LinearLayout>
  159 + </androidx.core.widget.NestedScrollView>
  160 +
  161 + <LinearLayout
  162 + android:orientation="horizontal"
  163 + android:gravity="center_vertical"
  164 + android:paddingHorizontal="15dp"
  165 + android:layout_marginVertical="15dp"
  166 + android:layout_width="match_parent"
  167 + android:layout_height="wrap_content">
  168 + <androidx.constraintlayout.utils.widget.ImageFilterView
  169 + android:id="@+id/btnPre"
  170 + app:round="10dp"
  171 + android:src="@drawable/svg_pre"
  172 + android:tint="@color/color_btn_pre_state"
  173 + android:background="@color/white"
  174 + android:paddingHorizontal="6dp"
  175 + android:layout_width="20dp"
  176 + android:layout_height="20dp"/>
  177 + <Space style="@style/empty_space"/>
  178 + <androidx.constraintlayout.utils.widget.ImageFilterView
  179 + android:id="@+id/btnNext"
  180 + android:rotation="180"
  181 + app:round="10dp"
  182 + android:src="@drawable/svg_pre"
  183 + android:tint="@color/color_btn_pre_state"
  184 + android:background="@color/white"
  185 + android:paddingHorizontal="6dp"
  186 + android:layout_width="20dp"
  187 + android:layout_height="20dp"/>
  188 + </LinearLayout>
  189 +</LinearLayout>
0 190 \ No newline at end of file
... ...
app/src/main/res/layout/item_topic_number.xml
... ... @@ -0,0 +1,16 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<TextView xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:app="http://schemas.android.com/apk/res-auto"
  4 + xmlns:tools="http://schemas.android.com/tools"
  5 + android:layout_marginEnd="15dp"
  6 + android:background="@drawable/shape_radius_5"
  7 + android:backgroundTint="#FF4133"
  8 + tools:text="8"
  9 + android:gravity="center"
  10 + android:textSize="14sp"
  11 + android:textColor="@color/white"
  12 + android:textStyle="bold"
  13 + android:layout_width="25dp"
  14 + android:layout_height="25dp">
  15 +
  16 +</TextView>
0 17 \ No newline at end of file
... ...