直播举报--消息中心点击后再次提供证据界面开发

This commit is contained in:
老皮 2024-09-27 16:14:10 +08:00
parent ee8f744ed2
commit 69b868f535
12 changed files with 529 additions and 10 deletions

View File

@ -554,10 +554,11 @@
<string name="video_no_video_home_3">TA還沒有視頻作品</string>
<string name="video_my_video">我的視頻</string>
<string name="video_report_tip_1">選擇舉報理由</string>
<string name="video_report_tip_2">更多詳細資訊請在說明框中描述(選填)</string>
<string name="video_report_tip_2">更多內容請在說明框中描述(必填)</string>
<string name="video_report_submit">提交</string>
<string name="video_report_tip_3">請選擇舉報理由</string>
<string name="video_report_tip_4">舉報成功</string>
<string name="video_report_tip_5">請填寫舉報内容</string>
<string name="video_scroll_top">已經到頂了哦</string>
<string name="video_record_delete_last">確定刪除上一段視頻?</string>
<string name="video_edit_exit">是否退出視頻編輯</string>

View File

@ -617,10 +617,11 @@
<string name="video_no_video_home_3">TA has no video works yet</string>
<string name="video_my_video">My video</string>
<string name="video_report_tip_1">Choose a reason to report</string>
<string name="video_report_tip_2">For more details, please describe in the description box (optional)</string>
<string name="video_report_tip_2">More content should be described in the description box (required)</string>
<string name="video_report_submit">Submission</string>
<string name="video_report_tip_3">Please select the reason for reporting</string>
<string name="video_report_tip_4">Report success</string>
<string name="video_report_tip_5">Please fill in the report</string>
<string name="video_scroll_top">It\'s at the top</string>
<string name="video_record_delete_last">Are you sure you want to delete the previous video?</string>
<string name="video_edit_exit">Exit video editing</string>

View File

@ -0,0 +1,248 @@
package com.yunbao.live.activity;
import android.graphics.Color;
import android.text.Editable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.yunbao.common.BuildConfig;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.interfaces.ImageResultCallback;
import com.yunbao.common.utils.ProcessImageUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.live.R;
import java.io.File;
import java.util.Locale;
public class ReportSecondActivity extends AbsActivity implements View.OnClickListener {
private TextView info_textView;
private EditText edit;
private TextView btn_report;
private ImageView image_1,image_2,image_3,cancel_1,cancel_2,cancel_3;
private ProcessImageUtil mImageUtil;
private int photoIndex;
private File mFile1, mFile2, mFile3;
private int uploadImageCount;
private String inputText;
@Override
protected int getLayoutId() {
return R.layout.activity_report_second;
}
@Override
protected void main() {
super.main();
info_textView = findViewById(R.id.info_textView);
edit = findViewById(R.id.edit);
btn_report = findViewById(R.id.btn_report);
image_1 = findViewById(R.id.image_1);
image_2 = findViewById(R.id.image_2);
image_3 = findViewById(R.id.image_3);
cancel_1 = findViewById(R.id.cancel_1);
cancel_2 = findViewById(R.id.cancel_2);
cancel_3 = findViewById(R.id.cancel_3);
imageUtilInit();
btn_report.setOnClickListener(this);
image_1.setOnClickListener(this);
image_1 .setOnClickListener(this);
image_2 .setOnClickListener(this);
image_3 .setOnClickListener(this);
cancel_1.setOnClickListener(this);
cancel_2.setOnClickListener(this);
edit.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
inputText = s.toString();
setButtonStatus();
}
});
}
private void setButtonStatus(){
if ((inputText != null && !inputText.isEmpty()) || uploadImageCount > 0) {
btn_report.setEnabled(true);
btn_report.setBackground(getResources().getDrawable(R.drawable.border_yellow));
} else {
btn_report.setEnabled(false);
btn_report.setBackgroundResource(R.drawable.border_hui);
}
}
private void setInfoText(String userName) {
/*
* CH您舉報的用戶用戶暱稱我們已對其進行重點觀察並進一步判定若發現違規將立刻處理感謝您的監督~
如您有任何信息證明補充可點擊進入詳情再次進行提交感謝您對淨化平台環境做出的貢獻
ENThe user 用戶暱稱 you reported has been under our close observation and further judgment. If any violation is found, it will be dealt with immediately. Thank you for your supervision.
If you have any supplementary information or proof, you can click to enter the details and submit again. Thank you for your contribution to purifying the platform environment.
* */
StringBuilder stringBuilder = new StringBuilder();
Locale locale = getResources().getConfiguration().locale;
String language = locale.getLanguage();
int startIndex = 0;
int endIndex = 0;
if (TextUtils.equals(language, "zh")) {
stringBuilder.append("您舉報的用戶【");
startIndex = stringBuilder.toString().length();
stringBuilder.append(userName);
endIndex = stringBuilder.toString().length();
stringBuilder .append("】,我們已對其進行重點觀察,並進一步判定,若發現違規將立刻處理,感謝您的監督~\n如您有任何信息證明補充可點擊進入詳情再次進行提交感謝您對淨化平台環境做出的貢獻");
} else {
stringBuilder.append("The user 【");
startIndex = stringBuilder.toString().length();
stringBuilder .append(userName);
endIndex = stringBuilder.toString().length();
stringBuilder.append("】 you reported has been under our close observation and further judgment. If any violation is found, it will be dealt with immediately. Thank you for your supervision.\nIf you have any supplementary information or proof, you can click to enter the details and submit again. Thank you for your contribution to purifying the platform environment.");
}
SpannableString spannableString = new SpannableString(stringBuilder.toString());
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FF870F")), startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
info_textView.setText(spannableString);
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.btn_report) {
reportSecond();
} else if (id == R.id.image_1) {
photoIndex = 0;
mImageUtil.getImageByAlbum();
} else if (id == R.id.image_2) {
photoIndex = 1;
mImageUtil.getImageByAlbum();
} else if (id == R.id.image_3) {
photoIndex = 2;
mImageUtil.getImageByAlbum();
} else if (id == R.id.cancel_1) {
uploadImageCount--;
mFile1 = null;
cancel_1.setVisibility(View.GONE);
ImgLoader.display(mContext, R.mipmap.upload_image, image_1);
setButtonStatus();
} else if (id == R.id.cancel_2) {
uploadImageCount--;
mFile2 = null;
cancel_2.setVisibility(View.GONE);
ImgLoader.display(mContext, R.mipmap.upload_image, image_2);
setButtonStatus();
} else if (id == R.id.cancel_3) {
uploadImageCount--;
mFile3 = null;
cancel_3.setVisibility(View.GONE);
ImgLoader.display(mContext, R.mipmap.upload_image, image_3);
setButtonStatus();
}
}
private void reportSecond() {
/*
*
* if (mIntoIndex == 0) {
LiveHttpUtil.setReport(mToUid, bean.getName(),text, file1, file2, file3, mVideoId, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
ToastUtil.show(mContext.getString(R.string.video_report_tip_4));
onBackPressed();
} else {
ToastUtil.show(msg);
}
}
});
} else {
CommonHttpUtil.setCommunityReport(community_type, comment_id, mToUid, text, file1, file2, file3, bean.getId(), new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
ToastUtil.show(mContext.getString(R.string.video_report_tip_4));
onBackPressed();
} else {
ToastUtil.show(msg);
}
}
});
}
* */
finish();
}
private void imageUtilInit() {
mImageUtil = new ProcessImageUtil((LiveReportActivity)mContext);
mImageUtil.setImageResultCallback(new ImageResultCallback() {
@Override
public void beforeCamera() {
}
@Override
public void onSuccess(File file) {
if (file != null) {
if (photoIndex == 0) {
mFile1 = file;
ImgLoader.display(mContext, file, image_1);
cancel_1.setVisibility(View.VISIBLE);
uploadImageCount++;
}
else if (photoIndex == 1){
mFile2 = file;
ImgLoader.display(mContext, file, image_2);
cancel_2.setVisibility(View.VISIBLE);
uploadImageCount++;
}
else if (photoIndex == 2){
mFile3 = file;
ImgLoader.display(mContext, file, image_3);
cancel_3.setVisibility(View.VISIBLE);
uploadImageCount++;
}
setButtonStatus();
}
}
@Override
public void onFailure() {
}
});
}
}

View File

@ -7,6 +7,8 @@ import android.graphics.drawable.Drawable;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -19,6 +21,7 @@ import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.interfaces.ImageResultCallback;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.ProcessImageUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveReportActivity;
import com.yunbao.live.bean.LiveReportBean;
@ -304,6 +307,12 @@ public class LiveReportAdapter extends RecyclerView.Adapter {
void submit() {
String text = mEditText.getText().toString().trim();
if (TextUtils.isEmpty(text)) {
ToastUtil.show(R.string.video_report_tip_5);
return;
}
if (mActionListener != null) {
// mActionListener.onReportClick(mCurVideoReportBean, text);
mActionListener.onReportClick(mCurVideoReportBean, text,mFile1,mFile2,mFile3);

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="60dp" />
<solid android:color="#716A6A" />
</shape>
</item>
</selector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#f7f7f7" />
<corners android:radius="10dp" />
</shape>

View File

@ -0,0 +1,209 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/white"
android:layout_height="match_parent">
<TextView
android:id="@+id/titleView"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:gravity="center"
android:text="@string/report_second_1"
android:textColor="@color/textColor"
android:textSize="18sp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:textStyle="bold" />
<ImageView
android:id="@+id/btn_back"
android:layout_width="40dp"
android:layout_height="40dp"
android:padding="9dp"
android:src="@mipmap/icon_back"
app:layout_constraintTop_toTopOf="@id/titleView"
app:layout_constraintBottom_toBottomOf="@id/titleView"
app:layout_constraintStart_toStartOf="parent"
/>
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:text="@string/report_second_2"
android:textColor="#ff333333"
android:layout_marginTop="30dp"
android:textSize="15sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/titleView" />
<TextView
android:id="@+id/textView8"
android:layout_width="8dp"
android:layout_height="15dp"
android:text="*"
android:textColor="#ffff870f"
android:textSize="15sp"
app:layout_constraintBottom_toBottomOf="@+id/textView5"
app:layout_constraintStart_toEndOf="@+id/textView5"
app:layout_constraintTop_toTopOf="@+id/textView5" />
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginTop="11dp"
android:layout_marginEnd="15dp"
app:cardBackgroundColor="#F7F7F7"
app:cardCornerRadius="10dp"
app:cardElevation="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/textView5"
app:layout_constraintTop_toBottomOf="@+id/textView5">
<TextView
android:id="@+id/info_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:text="您舉報的用戶【用戶暱稱】,我們已對其進行重點觀察,並進一步判定,若發現違規將立刻處理,感謝您的監督~"
android:textColor="#ff777777"
android:textSize="11sp" />
</androidx.cardview.widget.CardView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/report_second_3"
android:textColor="#ff333333"
android:textSize="15sp"
android:id="@+id/textView10"
android:layout_marginTop="19dp"
app:layout_constraintStart_toStartOf="@+id/textView5"
app:layout_constraintTop_toBottomOf="@+id/cardView" />
<ImageView
android:layout_width="98dp"
android:layout_height="98dp"
android:id="@+id/image_1"
app:layout_constraintStart_toStartOf="@id/textView5"
app:layout_constraintEnd_toStartOf="@id/image_2"
app:layout_constraintTop_toBottomOf="@id/textView10"
android:src="@mipmap/upload_image"
android:layout_marginTop="15dp"
/>
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@mipmap/cancel_upload"
app:layout_constraintCircle="@+id/image_1"
app:layout_constraintCircleAngle="45"
app:layout_constraintCircleRadius="60dp"
android:id="@+id/cancel_1"
android:visibility="gone"
tools:ignore="MissingConstraints" />
<ImageView
android:layout_width="98dp"
android:layout_height="98dp"
android:id="@+id/image_2"
app:layout_constraintStart_toEndOf="@id/image_1"
app:layout_constraintEnd_toStartOf="@id/image_3"
app:layout_constraintTop_toTopOf="@id/image_1"
android:src="@mipmap/upload_image"
/>
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@mipmap/cancel_upload"
app:layout_constraintCircle="@+id/image_2"
app:layout_constraintCircleAngle="45"
app:layout_constraintCircleRadius="60dp"
android:id="@+id/cancel_2"
android:visibility="gone"
tools:ignore="MissingConstraints" />
<ImageView
android:layout_width="98dp"
android:layout_height="98dp"
android:id="@+id/image_3"
app:layout_constraintStart_toEndOf="@id/image_2"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="15dp"
app:layout_constraintTop_toTopOf="@id/image_1"
android:src="@mipmap/upload_image"
/>
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@mipmap/cancel_upload"
app:layout_constraintCircle="@+id/image_3"
app:layout_constraintCircleAngle="45"
app:layout_constraintCircleRadius="60dp"
android:id="@+id/cancel_3"
android:visibility="gone"
tools:ignore="MissingConstraints" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/report_second_4"
android:textColor="#333333"
android:textSize="15sp"
app:layout_constraintStart_toStartOf="@id/textView5"
app:layout_constraintTop_toBottomOf="@id/image_1"
android:layout_marginTop="20dp"
android:id="@+id/textView6"
/>
<EditText
android:id="@+id/edit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@drawable/edit_background_f7"
android:gravity="top"
android:hint="@string/report_second_5"
android:maxLength="200"
android:minHeight="60dp"
android:padding="10dp"
android:textColor="@color/textColor"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="@+id/cardView"
app:layout_constraintStart_toStartOf="@+id/textView6"
app:layout_constraintTop_toBottomOf="@id/textView6" />
<TextView
android:id="@+id/btn_report"
android:layout_width="150dp"
android:layout_height="48dp"
android:background="@drawable/border_hui"
android:gravity="center"
android:text="@string/video_report_submit"
android:textColor="@color/white"
android:textSize="16sp"
android:clickable="false"
android:layout_marginTop="50dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/edit"
app:layout_constraintTop_toBottomOf="@+id/edit" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,11 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="46dp"
android:gravity="center_vertical"
android:paddingLeft="15dp"
android:text="@string/video_report_tip_1"
android:textColor="@color/gray1"
android:textSize="13sp"
/>
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*"
android:textColor="@color/red"
android:textSize="20sp"
android:gravity="center"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="10dp"
android:id="@+id/tmp_view"
app:layout_constraintBaseline_toBaselineOf="@id/tv_report_tip"
/>
<TextView
app:layout_constraintStart_toEndOf="@id/tmp_view"
app:layout_constraintEnd_toEndOf="parent"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingLeft="2dp"
android:text="@string/video_report_tip_1"
android:textColor="@color/gray1"
android:textSize="13sp"
android:id="@+id/tv_report_tip"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -145,4 +145,10 @@
<string name="prank_im_immediately_go">立即前往</string>
<string name="live_room_sud_hint_join">加入</string>
<string name="live_dialog_top_guardian_tasks">守護任務</string>
<string name="report_second_1">舉報結果通知</string>
<string name="report_second_2">通知</string>
<string name="report_second_3">上傳圖片</string>
<string name="report_second_4">舉報內容補充</string>
<string name="report_second_5">若您有其它補充信息,請在說明框中描述~</string>
</resources>

View File

@ -148,4 +148,10 @@
<string name="prank_im_immediately_go">Go now</string>
<string name="live_room_sud_hint_join">Join</string>
<string name="live_dialog_top_guardian_tasks">Guard tasks</string>
<string name="report_second_1">Notification of report result</string>
<string name="report_second_2">Notification</string>
<string name="report_second_3">Upload pictures</string>
<string name="report_second_4">Report content supplement</string>
<string name="report_second_5">If you have additional information, please describe it in the description box</string>
</resources>