Commit f60bd9dc2b4f97f0f35e251c9f72b1d62edb252a

Authored by shixianjie
1 parent 40297dd4a4
Exists in master

不强制要求制作解析

1 apply plugin: 'com.android.application' 1 apply plugin: 'com.android.application'
2 2
3 3
4 def androidId = rootProject.ext.androidId 4 def androidId = rootProject.ext.androidId
5 def support = rootProject.ext.dependencies 5 def support = rootProject.ext.dependencies
6 def url = rootProject.ext.url 6 def url = rootProject.ext.url
7 7
8 8
9 android { 9 android {
10 signingConfigs { 10 signingConfigs {
11 11
12 config { 12 config {
13 keyAlias 'alias' 13 keyAlias 'alias'
14 keyPassword '123456' 14 keyPassword '123456'
15 storeFile file('key.jks') 15 storeFile file('key.jks')
16 storePassword '123456' 16 storePassword '123456'
17 } 17 }
18 debug { 18 debug {
19 } 19 }
20 } 20 }
21 compileSdk 32 21 compileSdk 32
22 22
23 defaultConfig { 23 defaultConfig {
24 applicationId "com.hjx.parent" 24 applicationId "com.hjx.parent"
25 minSdk 26 25 minSdk 26
26 targetSdk 32 26 targetSdk 32
27 versionCode 1007 27 versionCode 1009
28 versionName "1.0.0.7" 28 versionName "1.0.09"
29 29
30 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 30 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
31 } 31 }
32 32
33 android.applicationVariants.all { 33 android.applicationVariants.all {
34 variant -> 34 variant ->
35 variant.outputs.all { 35 variant.outputs.all {
36 //在这里修改apk文件名 36 //在这里修改apk文件名
37 outputFileName = "parent-${variant.name}-v${variant.versionName}.apk" 37 outputFileName = "parent-${variant.name}-v${variant.versionName}.apk"
38 } 38 }
39 } 39 }
40 buildTypes { 40 buildTypes {
41 debug { 41 debug {
42 debuggable true 42 debuggable true
43 minifyEnabled false 43 minifyEnabled false
44 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 44 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
45 signingConfig signingConfigs.config 45 signingConfig signingConfigs.config
46 } 46 }
47 release { 47 release {
48 debuggable true 48 debuggable true
49 minifyEnabled false 49 minifyEnabled false
50 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 50 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
51 signingConfig signingConfigs.config 51 signingConfig signingConfigs.config
52 } 52 }
53 } 53 }
54 lintOptions { 54 lintOptions {
55 checkReleaseBuilds false 55 checkReleaseBuilds false
56 abortOnError false 56 abortOnError false
57 } 57 }
58 buildFeatures { 58 buildFeatures {
59 viewBinding true 59 viewBinding true
60 dataBinding true 60 dataBinding true
61 } 61 }
62 compileOptions { 62 compileOptions {
63 sourceCompatibility JavaVersion.VERSION_1_8 63 sourceCompatibility JavaVersion.VERSION_1_8
64 targetCompatibility JavaVersion.VERSION_1_8 64 targetCompatibility JavaVersion.VERSION_1_8
65 } 65 }
66 } 66 }
67 67
68 dependencies { 68 dependencies {
69 support.each { k, v -> implementation v } 69 support.each { k, v -> implementation v }
70 api project(path: ':libs:common') 70 api project(path: ':libs:common')
71 implementation 'androidx.appcompat:appcompat:1.5.1' 71 implementation 'androidx.appcompat:appcompat:1.5.1'
72 implementation 'com.google.android.material:material:1.6.1' 72 implementation 'com.google.android.material:material:1.6.1'
73 implementation 'androidx.constraintlayout:constraintlayout:2.1.4' 73 implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
74 implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.50' 74 implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.50'
75 implementation 'com.github.ForgetAll:LoadingDialog:1.1.2' 75 implementation 'com.github.ForgetAll:LoadingDialog:1.1.2'
76 implementation 'com.github.DL-ZhangTeng:ImagePicker:1.5.0' 76 implementation 'com.github.DL-ZhangTeng:ImagePicker:1.5.0'
77 //使用的三方 77 //使用的三方
78 implementation 'com.yalantis:ucrop:2.2.0' 78 implementation 'com.yalantis:ucrop:2.2.0'
79 implementation 'com.github.DL-ZhangTeng:RequestPermission:1.3.0' 79 implementation 'com.github.DL-ZhangTeng:RequestPermission:1.3.0'
80 implementation 'com.github.DL-ZhangTeng:Utils:2.2.0' 80 implementation 'com.github.DL-ZhangTeng:Utils:2.2.0'
81 81
82 // rx 82 // rx
83 implementation("com.trello.rxlifecycle2:rxlifecycle:2.2.2") 83 implementation("com.trello.rxlifecycle2:rxlifecycle:2.2.2")
84 implementation("com.trello.rxlifecycle2:rxlifecycle-android:2.2.2") 84 implementation("com.trello.rxlifecycle2:rxlifecycle-android:2.2.2")
85 85
86 implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") 86 implementation("com.github.PhilJay:MPAndroidChart:v3.1.0")
87 implementation("com.contrarywind:Android-PickerView:4.1.9") 87 implementation("com.contrarywind:Android-PickerView:4.1.9")
88 88
89 implementation 'com.google.android:flexbox:1.0.0' 89 implementation 'com.google.android:flexbox:1.0.0'
90 90
91 // 沉浸式状态栏和他的Kotlin拓展 91 // 沉浸式状态栏和他的Kotlin拓展
92 implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2' 92 implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
93 implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2' 93 implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2'
94 94
95 // 图片查看 95 // 图片查看
96 implementation 'com.github.chrisbanes:PhotoView:2.0.0' 96 implementation 'com.github.chrisbanes:PhotoView:2.0.0'
97 97
98 implementation 'com.jakewharton:butterknife:10.2.3' 98 implementation 'com.jakewharton:butterknife:10.2.3'
99 annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' 99 annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
100 } 100 }
app/src/main/java/com/hjx/parent/HomeworkDetailActivity.java
1 package com.hjx.parent; 1 package com.hjx.parent;
2 2
3 import android.annotation.SuppressLint; 3 import android.annotation.SuppressLint;
4 import android.content.Intent; 4 import android.content.Intent;
5 import android.os.Bundle; 5 import android.os.Bundle;
6 import android.widget.ImageView; 6 import android.widget.ImageView;
7 import android.widget.TextView; 7 import android.widget.TextView;
8 8
9 import androidx.annotation.NonNull; 9 import androidx.annotation.NonNull;
10 import androidx.annotation.Nullable; 10 import androidx.annotation.Nullable;
11 11
12 import com.bumptech.glide.Glide; 12 import com.bumptech.glide.Glide;
13 import com.chad.library.adapter.base.BaseQuickAdapter; 13 import com.chad.library.adapter.base.BaseQuickAdapter;
14 import com.chad.library.adapter.base.BaseViewHolder; 14 import com.chad.library.adapter.base.BaseViewHolder;
15 import com.hjx.parent.databinding.ActivityHomeworkDetailBinding; 15 import com.hjx.parent.databinding.ActivityHomeworkDetailBinding;
16 import com.hjx.parent.dialog.EditHomeworkDialog; 16 import com.hjx.parent.dialog.EditHomeworkDialog;
17 import com.hjx.parent.dialog.MsgConfirmDialog; 17 import com.hjx.parent.dialog.MsgConfirmDialog;
18 import com.hjx.parent.rx.BaseRxActivity; 18 import com.hjx.parent.rx.BaseRxActivity;
19 import com.prws.common.bean.ResponseResult; 19 import com.prws.common.bean.ResponseResult;
20 import com.prws.common.bean.Student; 20 import com.prws.common.bean.Student;
21 import com.prws.common.bean.homework.HomeWork; 21 import com.prws.common.bean.homework.HomeWork;
22 import com.prws.common.bean.homework.HomeworkList; 22 import com.prws.common.bean.homework.HomeworkList;
23 import com.prws.common.net.NetWorks; 23 import com.prws.common.net.NetWorks;
24 24
25 import java.util.ArrayList; 25 import java.util.ArrayList;
26 import java.util.HashMap; 26 import java.util.HashMap;
27 import java.util.Map; 27 import java.util.Map;
28 28
29 public class HomeworkDetailActivity extends BaseRxActivity<ActivityHomeworkDetailBinding> { 29 public class HomeworkDetailActivity extends BaseRxActivity<ActivityHomeworkDetailBinding> {
30 30
31 private HomeworkList mData; 31 private HomeworkList mData;
32 private Student student; 32 private Student student;
33 33
34 private Adapter mAdapter = new Adapter(); 34 private Adapter mAdapter = new Adapter();
35 private EditHomeworkDialog mDialog; 35 private EditHomeworkDialog mDialog;
36 private MsgConfirmDialog noAnalyseDialog; 36 private MsgConfirmDialog noAnalyseDialog;
37 37
38 @Override 38 @Override
39 public void initView(Bundle savedInstanceState) { 39 public void initView(Bundle savedInstanceState) {
40 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); 40 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
41 mData = (HomeworkList) getIntent().getSerializableExtra("data"); 41 mData = (HomeworkList) getIntent().getSerializableExtra("data");
42 student = (Student) getIntent().getSerializableExtra("student"); 42 student = (Student) getIntent().getSerializableExtra("student");
43 mDialog = new EditHomeworkDialog(this, mData); 43 mDialog = new EditHomeworkDialog(this, mData);
44 noAnalyseDialog = new MsgConfirmDialog.Builder(this) 44 noAnalyseDialog = new MsgConfirmDialog.Builder(this)
45 .setNegative("").setPositive("好的") 45 .setNegative("").setPositive("好的")
46 .setMessage("尚未完成解析制作,\n请先去好记星平板端制作解析").build(); 46 .setMessage("尚未完成解析制作,\n请先去好记星平板端制作解析").build();
47 binding.tvTitle.setText(mData.getName()); 47 binding.tvTitle.setText(mData.getName());
48 48
49 binding.recyclerView.setAdapter(mAdapter); 49 binding.recyclerView.setAdapter(mAdapter);
50 getDetail(); 50 getDetail();
51 51
52 binding.btnFeedback.setOnClickListener(v -> { 52 binding.btnFeedback.setOnClickListener(v -> {
53 if (mAdapter.getData().size() == 0) return; 53 if (mAdapter.getData().size() == 0) return;
54 if (mData.getCompleteFlag() == 0) { 54 // if (mData.getCompleteFlag() == 0) {
55 noAnalyseDialog.show(); 55 // noAnalyseDialog.show();
56 return; 56 // return;
57 } 57 // }
58 Intent intent = new Intent(this, HomeworkSelectActivity.class); 58 Intent intent = new Intent(this, HomeworkSelectActivity.class);
59 intent.putExtra("data", mData); 59 intent.putExtra("data", mData);
60 intent.putExtra("student", student); 60 intent.putExtra("student", student);
61 intent.putExtra("list", new ArrayList<>(mAdapter.getData())); 61 intent.putExtra("list", new ArrayList<>(mAdapter.getData()));
62 startActivityForResult(intent, 0xA01); 62 startActivityForResult(intent, 0xA01);
63 }); 63 });
64 binding.btnEdit.setOnClickListener(v -> mDialog.show(data -> { 64 binding.btnEdit.setOnClickListener(v -> mDialog.show(data -> {
65 edit(data); 65 edit(data);
66 })); 66 }));
67 } 67 }
68 68
69 @Override 69 @Override
70 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 70 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
71 super.onActivityResult(requestCode, resultCode, data); 71 super.onActivityResult(requestCode, resultCode, data);
72 if (requestCode == 0xA01 && resultCode == RESULT_OK) { 72 if (requestCode == 0xA01 && resultCode == RESULT_OK) {
73 finish(); 73 finish();
74 } 74 }
75 } 75 }
76 76
77 @SuppressLint("CheckResult") 77 @SuppressLint("CheckResult")
78 private void getDetail() { 78 private void getDetail() {
79 NetWorks.service_url.getHomeworkDetail(NetWorks.getHeader(), mData.getId()) 79 NetWorks.service_url.getHomeworkDetail(NetWorks.getHeader(), mData.getId())
80 .compose(transformSingle()) 80 .compose(transformSingle())
81 .map(ResponseResult::getData) 81 .map(ResponseResult::getData)
82 .subscribe((list, th) -> { 82 .subscribe((list, th) -> {
83 if (th != null) th.printStackTrace(); 83 if (th != null) th.printStackTrace();
84 mAdapter.setNewData(list); 84 mAdapter.setNewData(list);
85 }); 85 });
86 } 86 }
87 87
88 @SuppressLint("CheckResult") 88 @SuppressLint("CheckResult")
89 private void edit(HomeworkList data) { 89 private void edit(HomeworkList data) {
90 Map<String, Object> body = new HashMap<>(); 90 Map<String, Object> body = new HashMap<>();
91 body.put("homeworkId", data.getId()); 91 body.put("homeworkId", data.getId());
92 body.put("name", data.getName()); 92 body.put("name", data.getName());
93 body.put("grade", data.getGrade()); 93 body.put("grade", data.getGrade());
94 body.put("subject", data.getSubject()); 94 body.put("subject", data.getSubject());
95 body.put("term", data.getTerm()); 95 body.put("term", data.getTerm());
96 body.put("uploadTime", data.uploadTime); 96 body.put("uploadTime", data.uploadTime);
97 body.put("stuId", student.stuId); 97 body.put("stuId", student.stuId);
98 showLoadingDialog("请稍等···"); 98 showLoadingDialog("请稍等···");
99 NetWorks.service_url.editHomework(NetWorks.getHeader(), body) 99 NetWorks.service_url.editHomework(NetWorks.getHeader(), body)
100 .compose(transformSingle()) 100 .compose(transformSingle())
101 .subscribe((response, th) -> { 101 .subscribe((response, th) -> {
102 if (th != null) th.printStackTrace(); 102 if (th != null) th.printStackTrace();
103 if (response != null && response.getSuccess()) { 103 if (response != null && response.getSuccess()) {
104 cancelLoadingDialog(); 104 cancelLoadingDialog();
105 binding.tvTitle.setText(data.getName()); 105 binding.tvTitle.setText(data.getName());
106 } else { 106 } else {
107 loadFail(response == null ? "" : response.getMsg()); 107 loadFail(response == null ? "" : response.getMsg());
108 } 108 }
109 }); 109 });
110 } 110 }
111 111
112 @Override 112 @Override
113 protected ActivityHomeworkDetailBinding getViewBinding() { 113 protected ActivityHomeworkDetailBinding getViewBinding() {
114 return ActivityHomeworkDetailBinding.inflate(getLayoutInflater()); 114 return ActivityHomeworkDetailBinding.inflate(getLayoutInflater());
115 } 115 }
116 116
117 static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> { 117 static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> {
118 118
119 public Adapter() { 119 public Adapter() {
120 super(R.layout.item_homework_detail); 120 super(R.layout.item_homework_detail);
121 } 121 }
122 122
123 @SuppressLint("SetTextI18n") 123 @SuppressLint("SetTextI18n")
124 @Override 124 @Override
125 protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) { 125 protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) {
126 TextView tvNumber = holder.getView(R.id.tvNumber); 126 TextView tvNumber = holder.getView(R.id.tvNumber);
127 ImageView imageView = holder.getView(R.id.ivTopic); 127 ImageView imageView = holder.getView(R.id.ivTopic);
128 int number = getData().indexOf(homeWork) + 1; 128 int number = getData().indexOf(homeWork) + 1;
129 tvNumber.setText("第" + number + "题"); 129 tvNumber.setText("第" + number + "题");
130 Glide.with(mContext).load(homeWork.url).into(imageView); 130 Glide.with(mContext).load(homeWork.url).into(imageView);
131 131
132 holder.itemView.setOnClickListener(v -> { 132 holder.itemView.setOnClickListener(v -> {
133 Intent intent = new Intent(mContext, HomeworkTopicActivity.class); 133 Intent intent = new Intent(mContext, HomeworkTopicActivity.class);
134 intent.putExtra("position", getData().indexOf(homeWork)); 134 intent.putExtra("position", getData().indexOf(homeWork));
135 intent.putExtra("list", new ArrayList<>(getData())); 135 intent.putExtra("list", new ArrayList<>(getData()));
136 mContext.startActivity(intent); 136 mContext.startActivity(intent);
137 }); 137 });
138 } 138 }
139 } 139 }
140 } 140 }
141 141