This commit is contained in:
hch
2024-03-20 17:37:47 +08:00
parent f3d19e37bb
commit 434474bd98
13 changed files with 841 additions and 856 deletions

View File

@@ -55,7 +55,7 @@
android:theme="@style/noAnimationStyle"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".activity.UserHomeActivity"
android:name=".activity.UserHomeActivityOld"
android:screenOrientation="portrait" />
<activity
android:name=".activity.SettingActivity"
@@ -171,6 +171,20 @@
<activity android:name=".activity.CompleteUserInfoActivity"
android:screenOrientation="portrait" />
<activity android:name=".activity.EditUserHobbyActivity" android:screenOrientation="portrait" />
<activity
android:name=".activity.CommunitySendActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.CommunityDetailsActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activity.UserHomeActivity"
android:screenOrientation="portrait" />
</application>
</manifest>

View File

@@ -0,0 +1,372 @@
package com.yunbao.main.activity;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.util.SparseArray;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.R;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.adapter.CommentAdapter;
import com.yunbao.common.bean.ActiveBean;
import com.yunbao.common.bean.CommentBean;
import com.yunbao.common.dialog.ImagePreviewDialog;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.CommonCallback;
import com.yunbao.common.manager.OpenAdManager;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.NineGridLayout;
import com.yunbao.common.views.TopGradual;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Route(path = RouteUtil.PATH_COMMUNITY)
public class CommunityDetailsActivity extends AbsActivity {
private ActiveBean activeBean;
private String activeId;
private ImageView avatar;
private TextView name;
private TextView time;
private TextView content;
private LinearLayout followLayout;
private ImageView followIcon;
private TextView followName;
private NineGridLayout mNineGridLayout;
private ImageView videoImage;
private RecyclerView commentRecyclerView;
private CommentAdapter commentAdapter;
private TextView likeCount;
private ImageView userAvatar;
private ImageView like;
private TextView replyCount;
private EditText comment;
private ImageView send;
private boolean isComment = false;
private RelativeLayout videoLayout;
@Override
protected int getLayoutId() {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
return R.layout.activity_community_details;
}
@Override
protected void create() {
super.create();
}
@Override
protected void onPause() {
super.onPause();
OpenAdManager.getInstance().dismiss();
}
@Override
protected void main() {
activeId = getIntent().getStringExtra(Constants.TO_COMMUNITY_ID);
initView();
initData();
}
private void initView() {
videoLayout = findViewById(R.id.videoLayout);
send = findViewById(R.id.send);
comment = findViewById(R.id.comment);
replyCount = findViewById(R.id.replyCount);
like = findViewById(R.id.like);
userAvatar = findViewById(R.id.userAvatar);
likeCount = findViewById(R.id.likeCount);
avatar = findViewById(R.id.avatar);
name = findViewById(R.id.name);
time = findViewById(R.id.time);
content = findViewById(R.id.content);
followLayout = findViewById(R.id.followLayout);
followIcon = findViewById(R.id.followIcon);
followName = findViewById(R.id.followName);
videoImage = findViewById(R.id.videoImage);
mNineGridLayout = findViewById(R.id.nine_grid_layout);
commentRecyclerView = findViewById(R.id.commentListView);
commentRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
commentRecyclerView.addItemDecoration(new TopGradual());
commentRecyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
mNineGridLayout.setActionListener(new NineGridLayout.ActionListener() {
@Override
public void onItemClick(List<?> dataList, int position) {
ImagePreviewDialog dialog = new ImagePreviewDialog();
dialog.setImageInfo(dataList.size(), position, false, new ImagePreviewDialog.ActionListener() {
@Override
public void loadImage(ImageView imageView, int position) {
ImgLoader.display(mContext, (String) (dataList.get(position)), imageView);
}
@Override
public void onDeleteClick(int position) {
}
});
dialog.show(((AbsActivity) mContext).getSupportFragmentManager(), "ImagePreviewDialog");
}
@Override
public void displayImage(Object path, ImageView imageView) {
ImgLoader.display(CommunityDetailsActivity.this, String.valueOf(path), imageView);
}
});
followLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CommonHttpUtil.setAttention(activeBean.getUser_id(), new CommonCallback<Integer>() {
@Override
public void callback(Integer isAttention) {
if (isAttention == 1) {
ImgLoader.display(CommunityDetailsActivity.this, R.mipmap.icon_like_followed, followIcon);
followName.setText("已关注");
followName.setTextColor(Color.parseColor("#777777"));
followLayout.setBackground(getResources().getDrawable(R.drawable.bg_main_com_type_1));
} else {
ImgLoader.display(CommunityDetailsActivity.this, R.mipmap.icon_like_follow, followIcon);
followName.setText("关注");
followName.setTextColor(getResources().getColor(R.color.white));
followLayout.setBackground(getResources().getDrawable(R.drawable.bg_main_com_type));
}
}
});
}
});
like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CommonHttpUtil.dynamicLove(activeBean.getId(), new HttpCallback() {
@SuppressLint("SetTextI18n")
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
ToastUtil.show(msg);
if (activeBean.getIs_love().equals("1")) {
activeBean.setIs_love("0");
ImgLoader.display(CommunityDetailsActivity.this, R.mipmap.icon_like01, like);
likeCount.setText(Integer.parseInt(activeBean.getLove_num()) - 1 + "人觉得很赞");
} else {
activeBean.setIs_love("1");
ImgLoader.display(CommunityDetailsActivity.this, R.mipmap.icon_like, like);
likeCount.setText(Integer.parseInt(activeBean.getLove_num()) + 1 + "人觉得很赞");
}
}
}
});
}
});
findViewById(R.id.setting).setVisibility(View.VISIBLE);
findViewById(R.id.setting).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SparseArray<String> array = new SparseArray<>();
array.append(0, "举报");
array.append(1, "不感兴趣");
DialogUitl.showStringArrayDialog(CommunityDetailsActivity.this, array, new DialogUitl.StringArrayDialogCallback() {
@Override
public void onItemClick(String text, int tag) {
if (tag == 0) {
RouteUtil.forwardCommentReportActivity(activeBean.getId(), "0");
} else {
CommonHttpUtil.noInterest(activeBean.getUser_id(), new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
ToastUtil.show(msg);
}
});
}
}
});
}
});
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CommonHttpUtil.dynamicReply(activeBean.getId(), isComment ? replyComment.getId() : "0", comment.getText().toString(), new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
comment.setText("");
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(comment, InputMethodManager.SHOW_FORCED);
imm.hideSoftInputFromWindow(comment.getWindowToken(), 0); //强制隐藏键盘
getReply();
}
});
}
});
comment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isComment = false;
}
});
findViewById(R.id.userLayout).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RouteUtil.forwardUserHome(activeBean.getUser_id());
}
});
videoLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
//回复评论
CommentBean replyComment;
private void getReply() {
CommonHttpUtil.getCommunityComment(activeBean.getId(), activeBean.getUser_id(), 1, new HttpCallback() {
@SuppressLint("SetTextI18n")
@Override
public void onSuccess(int code, String msg, String[] info) {
List<CommentBean> list = JSON.parseArray(Arrays.toString(info), CommentBean.class);
if (list != null) {
commentAdapter = new CommentAdapter(mContext, list, activeBean.getUser_id());
commentAdapter.setOnItemClickListener(new CommentAdapter.onItemClickListener() {
@Override
public void onReply(CommentBean commentBean) {
replyComment = commentBean;
isComment = true;
comment.requestFocus();
//键盘输入法管理器
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(comment, 0);
}
@Override
public void onReport(CommentBean commentBean) {
//一级回复 举报
RouteUtil.forwardCommentReportActivity(activeBean.getId(), commentBean.getId());
}
@Override
public void onDel(CommentBean activeBean) {
//一级回复 删除
CommonHttpUtil.delCom(activeBean.getId(), new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
ToastUtil.show(msg);
getReply();
}
}
});
}
@Override
public void onReport(CommentBean.ReplyComment commentBean) {
//二级回复 举报
RouteUtil.forwardCommentReportActivity(activeBean.getId(), commentBean.getId());
}
@Override
public void onDel(CommentBean.ReplyComment activeBean) {
//二级回复 删除
CommonHttpUtil.delCom(activeBean.getId(), new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
ToastUtil.show(msg);
getReply();
}
}
});
}
});
commentRecyclerView.setAdapter(commentAdapter);
replyCount.setText("评论 " + list.size());
}
}
});
}
@SuppressLint("UseCompatLoadingForDrawables")
private void initData() {
LiveNetManager.get(mContext).getDynamicInfo(activeId, new com.yunbao.common.http.base.HttpCallback<ActiveBean>() {
@Override
public void onSuccess(ActiveBean data) {
activeBean = data;
initInfo();
getReply();
}
@Override
public void onError(String error) {
}
});
}
private void initInfo() {
ImgLoader.display(CommunityDetailsActivity.this, CommonAppConfig.getInstance().getUserBean().getAvatarThumb(), userAvatar);
ImgLoader.display(CommunityDetailsActivity.this, activeBean.getUser_avatar(), avatar);
name.setText(activeBean.getUser_name());
time.setText(activeBean.getCreate_time());
likeCount.setText(activeBean.getLove_num() + "人觉得很赞");
if (!StringUtil.isEmpty(activeBean.getContent())) {
content.setText(String.valueOf(JSONObject.parseObject(activeBean.getContent()).get("msg")));
}
if (activeBean.getIs_attention().equals("1")) {//关注
ImgLoader.display(CommunityDetailsActivity.this, R.mipmap.icon_like_followed, followIcon);
followName.setText("已关注");
followName.setTextColor(Color.parseColor("#777777"));
followLayout.setBackground(getResources().getDrawable(R.drawable.bg_main_com_type_1));
} else {
ImgLoader.display(CommunityDetailsActivity.this, R.mipmap.icon_like_follow, followIcon);
followName.setText("关注");
followName.setTextColor(getResources().getColor(R.color.white));
followLayout.setBackground(getResources().getDrawable(R.drawable.bg_main_com_type));
}
if (activeBean.getImg_or_video().equals("1")) {//图片
JSONArray jsonArray = (JSONArray) JSONArray.parse(activeBean.getImg_json());
List<String> tempList = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
tempList.add(String.valueOf(jsonArray.get(i)));
}
mNineGridLayout.setData(tempList);
} else {
ImgLoader.display(CommunityDetailsActivity.this, activeBean.getVideo() + "?vframe/jpg/offset/0", videoImage);
videoLayout.setVisibility(View.VISIBLE);
}
if (activeBean.getIs_love().equals("1")) {
ImgLoader.display(CommunityDetailsActivity.this, R.mipmap.icon_like, like);
} else {
ImgLoader.display(CommunityDetailsActivity.this, R.mipmap.icon_like01, like);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
}
}

View File

@@ -0,0 +1,384 @@
package com.yunbao.main.activity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.ClipData;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.VideoView;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.fastjson.JSONObject;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnDismissListener;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.bigkoo.pickerview.view.TimePickerView;
import com.google.gson.Gson;
import com.yunbao.common.R;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.bean.NewCommunityType;
import com.yunbao.common.custom.ItemDecoration;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.manager.CommunityTypeManager;
import com.yunbao.common.upload.UploadBean;
import com.yunbao.common.upload.UploadCallback;
import com.yunbao.common.upload.UploadQnImpl;
import com.yunbao.common.utils.ActiveImageAdapter;
import com.yunbao.common.utils.DateFormatUtil;
import com.yunbao.common.utils.FilesUtils;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
public class CommunitySendActivity extends AbsActivity {
public static final int PERMISSION_REQUEST_CODE_IMG = 0;
public static final int PERMISSION_REQUEST_CODE_VIDEO = 1;
private RecyclerView mRecyclerViewImage;
private LinearLayout imgTextLayout;
private LinearLayout videoLayout;
private LinearLayout talkLayout;
private LinearLayout timeLayout;
private EditText content;
private TextView chooseTime;
private final int CHOOSE_IMG = 100;//Android 5.0以下的
private final int CHOOSE_VIDEO = 200;//Android 5.0以上的
private List<Uri> uriList = new ArrayList<>();
private File videoFile;
private ActiveImageAdapter activeImageAdapter;
private VideoView videoView;
private RelativeLayout videoViewLayout;
private ImageView delVideo;
private TextView talkContent;
private List<String> talkList = new ArrayList<>();
private TextView submit;
private boolean isImage;
UploadQnImpl mUploadStrategy;
private List<String> imgUrlList = new ArrayList<>();
private String videoUrl;
List<NewCommunityType> newCommunityTypeList = new ArrayList<>();
int talkId;
@Override
protected int getLayoutId() {
return R.layout.activity_community_send;
}
@Override
protected void main() {
newCommunityTypeList = new CommunityTypeManager(mContext).getCommunityTypeList();
content = findViewById(R.id.content);
submit = findViewById(R.id.submit);
submit.setVisibility(View.VISIBLE);
talkContent = findViewById(R.id.talkContent);
delVideo = findViewById(R.id.delVideo);
videoViewLayout = findViewById(R.id.videoViewLayout);
videoView = findViewById(R.id.videoView);
imgTextLayout = findViewById(R.id.imgTextLayout);
videoLayout = findViewById(R.id.videoLayout);
talkLayout = findViewById(R.id.talkLayout);
timeLayout = findViewById(R.id.timeLayout);
chooseTime = findViewById(R.id.chooseTime);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<UploadBean> uploadBeanList = new ArrayList<>();
if (isImage) {
for (int i = 0; i < activeImageAdapter.getImageFileList().size(); i++) {
UploadBean uploadBean = new UploadBean(activeImageAdapter.getImageFileList().get(i), UploadBean.IMG);
uploadBeanList.add(uploadBean);
}
uploadFile(uploadBeanList, true);
} else {
uploadBeanList.add(new UploadBean(videoFile, UploadBean.VIDEO));
uploadFile(uploadBeanList, false);
}
}
});
delVideo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
videoFile = null;
videoView.stopPlayback();
videoViewLayout.setVisibility(View.GONE);
}
});
talkLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showTalkChooseDialog();
}
});
timeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showTimeChooseDialog();
}
});
imgTextLayout.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.TIRAMISU)
@Override
public void onClick(View v) {
String permission1 = Manifest.permission.READ_EXTERNAL_STORAGE;
String permission2 = Manifest.permission.WRITE_EXTERNAL_STORAGE;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
permission1 = Manifest.permission.READ_MEDIA_IMAGES;
permission2 = Manifest.permission.READ_MEDIA_VIDEO;
}
int isPermission1 = ContextCompat.checkSelfPermission(mContext, permission1);
int isPermission2 = ContextCompat.checkSelfPermission(mContext, permission2);
if (isPermission1 == PackageManager.PERMISSION_GRANTED && isPermission2 == PackageManager.PERMISSION_GRANTED) {
openImageChooserActivity();
} else {
//申请权限
ActivityCompat.requestPermissions(CommunitySendActivity.this, new String[]{permission1, permission2}, PERMISSION_REQUEST_CODE_IMG);
}
}
});
videoLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String permission1 = Manifest.permission.READ_EXTERNAL_STORAGE;
String permission2 = Manifest.permission.WRITE_EXTERNAL_STORAGE;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
permission1 = Manifest.permission.READ_MEDIA_IMAGES;
permission2 = Manifest.permission.READ_MEDIA_VIDEO;
}
int isPermission1 = ContextCompat.checkSelfPermission(mContext, permission1);
int isPermission2 = ContextCompat.checkSelfPermission(mContext, permission2);
if (isPermission1 == PackageManager.PERMISSION_GRANTED && isPermission2 == PackageManager.PERMISSION_GRANTED) {
openVideoChooserActivity();
} else {
//申请权限
ActivityCompat.requestPermissions(CommunitySendActivity.this, new String[]{permission1, permission2}, PERMISSION_REQUEST_CODE_VIDEO);
}
}
});
mRecyclerViewImage = findViewById(R.id.recyclerView_image);
mRecyclerViewImage.setLayoutManager(new GridLayoutManager(mContext, 3, GridLayoutManager.VERTICAL, false));
ItemDecoration decoration = new ItemDecoration(mContext, 0x00000000, 15, 15);
decoration.setOnlySetItemOffsetsButNoDraw(true);
mRecyclerViewImage.addItemDecoration(decoration);
activeImageAdapter = new ActiveImageAdapter(CommunitySendActivity.this);
mRecyclerViewImage.setAdapter(activeImageAdapter);
mRecyclerViewImage.setVisibility(View.VISIBLE);
activeImageAdapter.setActionListener(new ActiveImageAdapter.ActionListener() {
@Override
public void onAddClick() {
}
@Override
public void onItemClick(int position) {
}
@Override
public void onDeleteAll() {
}
@Override
public void onDel(int position) {
}
});
}
private void submit() {
if (isImage) {
if (imgUrlList.size() == 0) {
ToastUtil.show("请选择图片或者视频");
return;
}
} else {
if (StringUtil.isEmpty(videoUrl)) {
ToastUtil.show("请选择图片或者视频");
return;
}
}
String imgUrl = "";
if (isImage) {
imgUrl = new Gson().toJson(imgUrlList);
}
String tempTime = "";
if (!chooseTime.getText().toString().equals("立即发表")) {
tempTime = chooseTime.getText().toString();
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg", content.getText().toString());
CommonHttpUtil.pushCommunity(isImage, jsonObject.toString(), String.valueOf(talkId), imgUrl, videoUrl, tempTime, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
ToastUtil.show("发布成功");
finish();
}
}
});
}
private void showTalkChooseDialog() {
talkList = new ArrayList<>();
for (int i = 0; i < newCommunityTypeList.size(); i++) {
talkList.add(newCommunityTypeList.get(i).getTalk_name());
}
OptionsPickerView pickerView = new OptionsPickerBuilder(CommunitySendActivity.this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
talkId = newCommunityTypeList.get(options1).getId();
talkContent.setText(talkList.get(options1));
talkContent.setVisibility(View.VISIBLE);
}
}).setTitleText("选择话题").setContentTextSize(16).build();
pickerView.setPicker(talkList, null, null);
pickerView.show();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_REQUEST_CODE_IMG) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
openImageChooserActivity();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE_IMG);
}
}
if (requestCode == PERMISSION_REQUEST_CODE_VIDEO) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
openVideoChooserActivity();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE_VIDEO);
}
}
}
public void showTimeChooseDialog() {
TimePickerView timePickerView = new TimePickerBuilder(CommunitySendActivity.this, new OnTimeSelectListener() {
@SuppressLint("SetTextI18n")
@Override
public void onTimeSelect(Date date, View v) {
chooseTime.setText(DateFormatUtil.getTimeStrings(date.getTime()));
}
}).setType(new boolean[]{true, true, true, true, true, false})// 默认全部显示
.setCancelText("Cancel")//取消按钮文字
.setSubmitText("Sure")//确认按钮文字
.setTitleSize(20)//标题文字大小
.setTitleText("Title")//标题文字
.setOutSideCancelable(false)//点击屏幕,点在控件外部范围时,是否取消显示
.isCyclic(true)//是否循环滚动
.setLabel("", "", "", "", "", "")//默认设置为年月日时分秒
.isCenterLabel(false) //是否只显示中间选中项的label文字false则每项item全部都带有label。
.build();
timePickerView.show();
timePickerView.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(Object o) {
}
});
}
private void openImageChooserActivity() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, CHOOSE_IMG);
}
private void openVideoChooserActivity() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("video/*");
startActivityForResult(intent, CHOOSE_VIDEO);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == CHOOSE_IMG) {
// 获取用户选择的图片 URI
Uri[] imageUris = null;
if (data != null) {
ClipData clipData = data.getClipData();
if (clipData != null) {
// 如果支持多选,则通过 getItemAt() 方法获取每个被选中的图片 URI
imageUris = new Uri[clipData.getItemCount()];
List<String> tempList = new ArrayList<>();
for (int i = 0; i < clipData.getItemCount(); i++) {
imageUris[i] = clipData.getItemAt(i).getUri();
File file = new File(Objects.requireNonNull(FilesUtils.getPath(mContext, imageUris[i])));
tempList.add(file.getPath());
L.e("imageUris:" + imageUris[i].getPath() + "_" + imageUris[i].getEncodedPath());
}
activeImageAdapter.insertList(tempList);
} else {
// 单选情况下直接获取图片 URI
imageUris = new Uri[]{data.getData()};
uriList.add(imageUris[0]);
List<String> tempList = new ArrayList<>();
File file = new File(Objects.requireNonNull(FilesUtils.getPath(mContext, imageUris[0])));
tempList.add(file.getPath());
activeImageAdapter.insertList(tempList);
}
}
isImage = true;
} else if (requestCode == CHOOSE_VIDEO && resultCode == RESULT_OK && data != null) {
Uri uri = data.getData();
videoFile = new File(Objects.requireNonNull(FilesUtils.getPath(mContext, uri)));
videoView.setVideoURI(uri);
videoView.start();
videoViewLayout.setVisibility(View.VISIBLE);
isImage = false;
}
}
private void uploadFile(List<UploadBean> uploadBeans, boolean isImg) {
if (mUploadStrategy == null) {
mUploadStrategy = new UploadQnImpl(mContext);
}
mUploadStrategy.upload(uploadBeans, true, new UploadCallback() {
@Override
public void onFinish(List<UploadBean> list, boolean success) {
if (!success) {
return;
}
if (isImage) {
for (int i = 0; i < list.size(); i++) {
imgUrlList.add(list.get(i).getRemoteAccessUrl());
}
} else {
videoUrl = list.get(0).getRemoteAccessUrl();
}
submit();
L.e(new Gson().toJson(list));
}
}, isImg);
}
}

View File

@@ -1,83 +1,765 @@
package com.yunbao.main.activity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.text.TextUtils;
import android.view.ViewGroup;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.Outline;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.util.SparseArray;
import android.view.View;
import android.view.ViewOutlineProvider;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.fastjson.JSONArray;
import com.google.gson.Gson;
import com.makeramen.roundedimageview.RoundedImageView;
import com.ms.banner.Banner;
import com.xuexiang.xui.widget.flowlayout.FlowTagLayout;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.R;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.adapter.LabelTagAdapter;
import com.yunbao.common.adapter.UserCommunityAdapter;
import com.yunbao.common.adapter.UserHomeImgAdapter;
import com.yunbao.common.bean.ActiveBean;
import com.yunbao.common.bean.ActiveOtherBean;
import com.yunbao.common.bean.HomeUserExhibitInfoBean;
import com.yunbao.common.bean.HomeUserInfoBean;
import com.yunbao.common.bean.LabelBean;
import com.yunbao.common.bean.UserHomeImgBean;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.CommonCallback;
import com.yunbao.common.upload.UploadBean;
import com.yunbao.common.upload.UploadCallback;
import com.yunbao.common.upload.UploadQnImpl;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.FilesUtils;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.live.activity.LiveAddImpressActivity;
import com.yunbao.main.R;
import com.yunbao.main.http.MainHttpUtil;
import com.yunbao.main.views.UserHomeViewHolder2;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.UserHomeImgsViewHolder;
/**
* Created by cxf on 2018/9/25.
*/
//@Route(path = RouteUtil.PATH_USER_HOME)
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import pl.droidsonroids.gif.GifImageView;
@Route(path = RouteUtil.PATH_USER_HOME)
public class UserHomeActivity extends AbsActivity {
private UserHomeViewHolder2 mUserHomeViewHolder;
private final int CHOOSE_IMG = 100;//Android 5.0以下的
public static final int PERMISSION_REQUEST_CODE_IMG = 0;
private String uid;
private Banner mBanner;
private RecyclerView imgsRecyclerView;
private UserHomeImgAdapter userHomeImgAdapter;
private List<String> bannerImgList = new ArrayList<>();
private List<UserHomeImgBean> tempList;
private RoundedImageView avatar;
private TextView userName;
private TextView fansCount;
private TextView likeCount;
private LinearLayout followLayout;
private ImageView followIcon;
private TextView followName;
private TextView userId;
private TextView userStatus;
private ImageView userStatusIcon;
private ImageView user_sex;
private ImageView authorIcon;
private ImageView levelIcon;
private LinearLayout authenticationLayout;
private TextView signature;
private LinearLayout moreLayout;
private TextView moreText;
private ImageView moreIcon;
private HomeUserInfoBean userInfo;
private RecyclerView communityRecyclerView;
private LinearLayout itemLayout01;
private LinearLayout itemLayout02;
private LinearLayout itemLayout03;
private LinearLayout itemLayout04;
private FlowTagLayout myFlowTag; //我的标签
private LabelTagAdapter myAdapter;
private boolean isShowcase;
private boolean isAnchor;
private boolean isMe;
private RelativeLayout userPresidentLayout;
private TextView userPresidentName;
private RoundedImageView fansImg1;
private RoundedImageView fansImg2;
private RoundedImageView fansImg3;
private List<RoundedImageView> fansImgViewList = new ArrayList<>();
private RoundedImageView guardImg1;
private RoundedImageView guardImg2;
private RoundedImageView guardImg3;
private List<RoundedImageView> guardImgViewList = new ArrayList<>();
private RoundedImageView giftImg1;
private RoundedImageView giftImg2;
private RoundedImageView giftImg3;
private List<RoundedImageView> giftImgViewList = new ArrayList<>();
private RoundedImageView honorImg1;
private RoundedImageView honorImg2;
private RoundedImageView honorImg3;
private List<RoundedImageView> honorImgViewList = new ArrayList<>();
private TextView giftCount;
private List<String> tagList;
private GifImageView liveStatus;
private TextView topName;
private LinearLayout topLayout;
private ScrollView scrollView;
private RelativeLayout topImgLayout;
private ImageView imgUp;
private ImageView imgLabel;
private LinearLayout bottomEditLayout;
private UploadQnImpl mUploadStrategy;
private List<ActiveBean> videoList = new ArrayList<>();
@Override
protected int getLayoutId() {
return R.layout.activity_empty;
return R.layout.activity_user_home;
}
@Override
protected boolean isStatusBarWhite() {
return true;
protected void create() {
super.create();
}
@Override
protected void main() {
Intent intent = getIntent();
String toUid = intent.getStringExtra(Constants.TO_UID);
if (TextUtils.isEmpty(toUid)) {
uid = getIntent().getStringExtra(Constants.TO_UID);
if (StringUtil.isEmpty(uid)) {
ToastUtil.show("用户不存在");
finish();
return;
}
boolean fromLiveRoom = intent.getBooleanExtra(Constants.FROM_LIVE_ROOM, false);
String fromLiveUid = fromLiveRoom ? intent.getStringExtra(Constants.LIVE_UID) : null;
mUserHomeViewHolder = new UserHomeViewHolder2(mContext, (ViewGroup) findViewById(R.id.container), toUid, fromLiveRoom,fromLiveUid);
mUserHomeViewHolder.addToParent();
mUserHomeViewHolder.subscribeActivityLifeCycle();
mUserHomeViewHolder.loadData();
initView();
getUseData();
getCommunityList();
}
MainHttpUtil.getBaseInfo(new CommonCallback<UserBean>() {
private void getCommunityList() {
CommonHttpUtil.getOtherDynamicList(uid, new com.yunbao.common.http.HttpCallback() {
@Override
public void callback(UserBean bean) {
UserBean userBean = CommonAppConfig.getInstance().getUserBean();
userBean = bean;
public void onSuccess(int code, String msg, String[] info) {
List<ActiveOtherBean> beanList = JSONArray.parseArray(Arrays.toString(info), ActiveOtherBean.class);
UserCommunityAdapter userCommunityAdapter = new UserCommunityAdapter(mContext, beanList);
userCommunityAdapter.setOnItemClickListener(new UserCommunityAdapter.onItemClickListener() {
@Override
public void onImgItem(ActiveOtherBean bean, int position) {
if (bean.getImg_or_video().equals("1")) {
RouteUtil.forwardCommunity(bean.getId());
} else {
int playPosition = 0;
for (int i = 0; i < videoList.size(); i++) {
if (videoList.get(i).getId().equals(bean.getId())) {
playPosition = i;
}
}
RouteUtil.forwardVideoActivity();
}
}
@Override
public void onVideoItem(String activeBean, int position) {
}
});
communityRecyclerView.setAdapter(userCommunityAdapter);
}
});
}
@SuppressLint({"SetTextI18n", "UseCompatLoadingForDrawables"})
private void initData(HomeUserInfoBean userInfoBean) {
userInfo = userInfoBean;
if (!userInfo.getCheckBlack().get(0).getU2t().equals("0")) {
ToastUtil.show("已拉黑,无法查看");
finish();
return;
}
if (!StringUtil.isEmpty(userInfo.getUserHomeTopInfo().getUser_president_name())) {
userPresidentLayout.setVisibility(View.VISIBLE);
userPresidentName.setText(userInfo.getUserHomeTopInfo().getUser_president_name());
}
isAnchor = userInfo.getUserHomeTopInfo().getIs_anchor() == 1;
isMe = CommonAppConfig.getInstance().getUserBean().getId().equals(String.valueOf(userInfo.getUserHomeTopInfo().getUser_id()));
ImgLoader.display(UserHomeActivity.this, userInfo.getUserHomeTopInfo().getUser_avatar(), avatar);
topName.setText(userInfo.getUserHomeTopInfo().getUser_name()); //用户名称-顶部
userName.setText(userInfo.getUserHomeTopInfo().getUser_name());//用户名称
fansCount.setText(String.valueOf(userInfo.getUserHomeTopInfo().getUser_fans_num()));//粉丝数量
likeCount.setText(String.valueOf(userInfo.getUserHomeTopInfo().getUser_love_num()));//关注数量
public void addImpress(String toUid) {
Intent intent = new Intent(mContext, LiveAddImpressActivity.class);
intent.putExtra(Constants.TO_UID, toUid);
startActivityForResult(intent, 100);
if (isMe) {
bottomEditLayout.setVisibility(View.VISIBLE);
imgUp.setVisibility(View.VISIBLE);
imgLabel.setVisibility(View.VISIBLE);
followLayout.setVisibility(View.GONE);
}
if (!StringUtil.isEmpty(userInfo.getUserHomeTopInfo().getUser_goodnum())) {
userId.setText("靓号:" + userInfo.getUserHomeTopInfo().getUser_goodnum());//用户靓号
} else {
userId.setText("ID:" + userInfo.getUserHomeTopInfo().getUser_id());//用户ID
}
if (userInfo.getUserHomeTopInfo().getRong_online().equals("0")) {
userStatus.setText("在线");
userStatusIcon.setImageDrawable(getResources().getDrawable(R.mipmap.icon_green));
} else {
userStatus.setText("离线");
userStatusIcon.setImageDrawable(getResources().getDrawable(R.mipmap.icon_gray));
}
if (userInfo.getUserHomeTopInfo().getIs_live() == 1) {
liveStatus.setVisibility(View.VISIBLE);
avatar.setBackground(getResources().getDrawable(R.drawable.bg_live_1));
}
ImgLoader.display(UserHomeActivity.this, Integer.parseInt(String.valueOf(userInfo.getUserHomeTopInfo().getUser_sex())) == 0 ? R.mipmap.icon_man_new : R.mipmap.icon_wumen, user_sex);
ImgLoader.display(UserHomeActivity.this, userInfo.getUserHomeTopInfo().getUser_level_anchor_img(), authorIcon);
ImgLoader.display(UserHomeActivity.this, userInfo.getUserHomeTopInfo().getUser_level_img(), levelIcon);
if (isAnchor) {//是否是主播
authorIcon.setVisibility(View.VISIBLE);
authenticationLayout.setVisibility(View.VISIBLE);
} else {
authorIcon.setVisibility(View.GONE);
authenticationLayout.setVisibility(View.GONE);
}
signature.setText(userInfo.getUserHomeTopInfo().getUser_signature());//个性签名
//标签
myAdapter = new LabelTagAdapter(mContext, new LabelTagAdapter.OnSureOnClickListener() {
@Override
public void sure(LabelBean.Children labelBean) {
}
});
tagList = new ArrayList<>();
if (!StringUtil.isEmpty(userInfo.getUserHomeTopInfo().getAge())) {
tagList.add(userInfo.getUserHomeTopInfo().getAge() + "");
}
if (!StringUtil.isEmpty(userInfo.getUserHomeTopInfo().getHeight())) {
tagList.add(userInfo.getUserHomeTopInfo().getHeight());
}
if (!StringUtil.isEmpty(userInfo.getUserHomeTopInfo().getCareer())) {
tagList.add(userInfo.getUserHomeTopInfo().getCareer());
}
if (userInfo.getUserHomeTopInfo().getCn_label() != null) {
if (userInfo.getUserHomeTopInfo().getCn_label().size() > 0) {
for (int i = 0; i < userInfo.getUserHomeTopInfo().getCn_label().size(); i++) {
if (!StringUtil.isEmpty(userInfo.getUserHomeTopInfo().getCn_label().get(i))) {
tagList.add(userInfo.getUserHomeTopInfo().getCn_label().get(i));
}
}
myFlowTag.setAdapter(myAdapter);
myFlowTag.setTagCheckedMode(FlowTagLayout.FLOW_TAG_CHECKED_NONE);
myAdapter.setData(tagList);
}
}
mBanner.setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
outline.setRoundRect(0, 0, 0, 0, 0);
}
});
mBanner.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
bannerImgList = userInfo.getUserHomeTopInfo().getUser_home_banner();
tempList = new ArrayList<>();
for (int i = 0; i < bannerImgList.size(); i++) {
tempList.add(new UserHomeImgBean(bannerImgList.get(i)));
}
if (tempList.size() > 0) {
tempList.get(0).setShow(true);
}
userHomeImgAdapter = new UserHomeImgAdapter(UserHomeActivity.this, tempList, isMe);
imgsRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
imgsRecyclerView.setAdapter(userHomeImgAdapter);
userHomeImgAdapter.setOnItemClickListener(new UserHomeImgAdapter.onItemClickListener() {
@Override
public void onImgItem(UserHomeImgBean activeBean, int position) {
L.e("onImgItem:" + position);
mBanner.setCurrentPage(position).start();
for (int i = 0; i < tempList.size(); i++) {
if (i == position) {
tempList.get(i).setShow(true);
} else {
tempList.get(i).setShow(false);
}
}
userHomeImgAdapter.setCommentBeanList(tempList);
}
@Override
public void onImgDel(UserHomeImgBean activeBean, int position) {
bannerImgList.remove(position);
uploadImg(false);
}
});
mBanner.setAutoPlay(false).setPages(bannerImgList, new UserHomeImgsViewHolder()).setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
L.e("onPageSelected:" + position);
for (int i = 0; i < tempList.size(); i++) {
if (i == position) {
tempList.get(i).setShow(true);
} else {
tempList.get(i).setShow(false);
}
}
userHomeImgAdapter.setCommentBeanList(tempList);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mBanner.start();
}
private void initView() {
bottomEditLayout = findViewById(R.id.bottomEditLayout);
imgUp = findViewById(R.id.imgUp);
imgLabel = findViewById(R.id.imgLabel);
topImgLayout = findViewById(R.id.topImgLayout);
topLayout = findViewById(R.id.topLayout);
scrollView = findViewById(R.id.scrollView);
topName = findViewById(R.id.topName);
liveStatus = findViewById(R.id.liveStatus);
giftCount = findViewById(R.id.giftCount);
fansImg1 = findViewById(R.id.fansImg1);
fansImg2 = findViewById(R.id.fansImg2);
fansImg3 = findViewById(R.id.fansImg3);
fansImgViewList = new ArrayList<>();
fansImgViewList.add(fansImg1);
fansImgViewList.add(fansImg2);
fansImgViewList.add(fansImg3);
guardImg1 = findViewById(R.id.guardImg1);
guardImg2 = findViewById(R.id.guardImg2);
guardImg3 = findViewById(R.id.guardImg3);
guardImgViewList = new ArrayList<>();
guardImgViewList.add(guardImg1);
guardImgViewList.add(guardImg2);
guardImgViewList.add(guardImg3);
giftImg1 = findViewById(R.id.giftImg1);
giftImg2 = findViewById(R.id.giftImg2);
giftImg3 = findViewById(R.id.giftImg3);
giftImgViewList = new ArrayList<>();
giftImgViewList.add(giftImg1);
giftImgViewList.add(giftImg2);
giftImgViewList.add(giftImg3);
honorImg1 = findViewById(R.id.honorImg1);
honorImg2 = findViewById(R.id.honorImg2);
honorImg3 = findViewById(R.id.honorImg3);
honorImgViewList = new ArrayList<>();
honorImgViewList.add(honorImg1);
honorImgViewList.add(honorImg2);
honorImgViewList.add(honorImg3);
userPresidentLayout = findViewById(R.id.userPresidentLayout);
userPresidentName = findViewById(R.id.userPresidentName);
itemLayout01 = findViewById(R.id.itemLayout01);
itemLayout02 = findViewById(R.id.itemLayout02);
itemLayout03 = findViewById(R.id.itemLayout03);
itemLayout04 = findViewById(R.id.itemLayout04);
communityRecyclerView = findViewById(R.id.communityRecyclerView);
myFlowTag = findViewById(R.id.myFlowTag);
avatar = findViewById(R.id.avatar);
userName = findViewById(R.id.name);
fansCount = findViewById(R.id.fansCount);
likeCount = findViewById(R.id.likeCount);
followLayout = findViewById(R.id.followLayout);
followName = findViewById(R.id.followName);
followIcon = findViewById(R.id.followIcon);
userId = findViewById(R.id.userId);
userStatus = findViewById(R.id.userStatus);
userStatusIcon = findViewById(R.id.userStatusIcon);
user_sex = findViewById(R.id.user_sex);
levelIcon = findViewById(R.id.levelIcon);
authorIcon = findViewById(R.id.authorlIcon);
authenticationLayout = findViewById(R.id.authenticationLayout);
signature = findViewById(R.id.signature);
moreLayout = findViewById(R.id.moreLayout);
moreText = findViewById(R.id.moreText);
moreIcon = findViewById(R.id.moreIcon);
mBanner = findViewById(R.id.banner);
imgsRecyclerView = findViewById(R.id.imgsRecyclerView);
communityRecyclerView = findViewById(R.id.communityRecyclerView);
communityRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
communityRecyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
findViewById(R.id.back).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
followLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CommonHttpUtil.setAttention(String.valueOf(userInfo.getUserHomeTopInfo().getUser_id()), new CommonCallback<Integer>() {
@Override
public void callback(Integer isAttention) {
if (isAttention == 1) {
ImgLoader.display(UserHomeActivity.this, R.mipmap.icon_like_followed, followIcon);
followName.setText("已关注");
followName.setTextColor(Color.parseColor("#777777"));
followLayout.setBackground(getResources().getDrawable(R.drawable.bg_main_com_type_1));
} else {
ImgLoader.display(UserHomeActivity.this, R.mipmap.icon_like_follow, followIcon);
followName.setText("关注");
followName.setTextColor(getResources().getColor(R.color.white));
followLayout.setBackground(getResources().getDrawable(R.drawable.bg_main_com_type));
}
}
});
}
});
moreLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isShowcase) {
if (isAnchor) {
itemLayout01.setVisibility(View.GONE);
itemLayout02.setVisibility(View.GONE);
itemLayout03.setVisibility(View.GONE);
itemLayout04.setVisibility(View.GONE);
} else {
itemLayout03.setVisibility(View.GONE);
itemLayout04.setVisibility(View.GONE);
}
moreText.setText("查看更多");
ImgLoader.display(mContext, R.mipmap.icon_down, moreIcon);
} else {
if (isAnchor) {
itemLayout01.setVisibility(View.VISIBLE);
itemLayout02.setVisibility(View.VISIBLE);
itemLayout03.setVisibility(View.VISIBLE);
itemLayout04.setVisibility(View.VISIBLE);
} else {
itemLayout01.setVisibility(View.GONE);
itemLayout02.setVisibility(View.GONE);
}
moreText.setText("收起");
ImgLoader.display(mContext, R.mipmap.icon_up, moreIcon);
}
isShowcase = !isShowcase;
}
});
findViewById(R.id.back).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
int height = (int) (topImgLayout.getMeasuredHeight() * 1.2);
if (scrollY <= 0) {
//滑动之前,标题栏布局背景颜色为完全透明,标题文字完全透明
topLayout.setBackgroundColor(Color.argb(0, 0, 0, 0));
topName.setTextColor(Color.argb(0, 255, 255, 255));
//让mScrollView滑动的距离在0~height之间时颜色发生渐变
} else if (scrollY > 0 && scrollY <= height) {
//获取渐变率
float scale = (float) scrollY / height;
//获取渐变数值
float alpha = (255 * scale);
//布局文本颜色逐渐发生变化
topLayout.setBackgroundColor(Color.argb((int) alpha, 0, 0, 0));
topName.setTextColor(Color.argb((int) alpha, 255, 255, 255));
} else {
//当滑动距离超过height布局文本颜色完全不透明
topLayout.setBackgroundColor(Color.argb(255, 0, 0, 0));
topName.setTextColor(Color.argb(255, 255, 255, 255));
}
}
});
topLayout.setBackgroundColor(Color.argb(0, 0, 0, 0));
topName.setTextColor(Color.argb(0, 255, 255, 255));
}
imgUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (bannerImgList.size() < 9) {
selectImg();
}
}
});
bottomEditLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RouteUtil.forwardEditProfileActivity();
}
});
findViewById(R.id.setting).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SparseArray<String> array = new SparseArray<>();
array.append(1, "不感兴趣");
array.append(0, "举报");
array.append(2, "加入黑名单");
DialogUitl.showStringArrayDialog(UserHomeActivity.this, array, new DialogUitl.StringArrayDialogCallback() {
@Override
public void onItemClick(String text, int tag) {
if (tag == 0) {
RouteUtil.forwardLiveReportActivity(String.valueOf(userInfo.getUserHomeTopInfo().getUser_id()));
} else if (tag == 1) {
CommonHttpUtil.noInterest(String.valueOf(userInfo.getUserHomeTopInfo().getUser_id()), new com.yunbao.common.http.HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
ToastUtil.show(msg);
}
});
} else {
CommonHttpUtil.noInterest(String.valueOf(userInfo.getUserHomeTopInfo().getUser_id()), new com.yunbao.common.http.HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
ToastUtil.show(msg);
}
});
}
}
});
}
});
}
private void selectImg() {
String permission1 = Manifest.permission.READ_EXTERNAL_STORAGE;
String permission2 = Manifest.permission.WRITE_EXTERNAL_STORAGE;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
permission1 = Manifest.permission.READ_MEDIA_IMAGES;
permission2 = Manifest.permission.READ_MEDIA_VIDEO;
}
int isPermission1 = ContextCompat.checkSelfPermission(mContext, permission1);
int isPermission2 = ContextCompat.checkSelfPermission(mContext, permission2);
if (isPermission1 == PackageManager.PERMISSION_GRANTED && isPermission2 == PackageManager.PERMISSION_GRANTED) {
openImageChooserActivity();
} else {
//申请权限
ActivityCompat.requestPermissions(UserHomeActivity.this, new String[]{permission1, permission2}, PERMISSION_REQUEST_CODE_IMG);
}
}
private void openImageChooserActivity() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false);
startActivityForResult(intent, CHOOSE_IMG);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 100 && resultCode == RESULT_OK) {
if (mUserHomeViewHolder != null) {
mUserHomeViewHolder.refreshImpress();
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_REQUEST_CODE_IMG) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
openImageChooserActivity();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE_IMG);
}
}
}
private void getUseData() {
LiveNetManager.get(mContext).getUserHomeInfo(uid, new HttpCallback<HomeUserInfoBean>() {
@Override
public void onSuccess(HomeUserInfoBean data) {
initData(data);
}
@Override
public void onError(String error) {
}
});
LiveNetManager.get(mContext).getUserExhibitInfoInfo(uid, new HttpCallback<HomeUserExhibitInfoBean>() {
@SuppressLint("SetTextI18n")
@Override
public void onSuccess(HomeUserExhibitInfoBean data) {
//主播粉丝团
if (data.getUserHomeTopInfo().getFans().getList() != null) {
if (data.getUserHomeTopInfo().getFans().getList().size() >= 3) {
for (int i = 0; i < 3; i++) {
ImgLoader.display(mContext, data.getUserHomeTopInfo().getFans().getList().get(i).getAvatar(), fansImgViewList.get(i));
}
} else {
for (int i = 0; i < data.getUserHomeTopInfo().getFans().getList().size(); i++) {
ImgLoader.display(mContext, data.getUserHomeTopInfo().getFans().getList().get(i).getAvatar(), fansImgViewList.get(i));
}
}
}
//主播守护团
if (data.getUserHomeTopInfo().getGuard() != null) {
if (data.getUserHomeTopInfo().getGuard().size() >= 3) {
for (int i = 0; i < 3; i++) {
ImgLoader.display(mContext, data.getUserHomeTopInfo().getGuard().get(i).getAvatar(), guardImgViewList.get(i));
}
} else {
for (int i = 0; i < data.getUserHomeTopInfo().getGuard().size(); i++) {
ImgLoader.display(mContext, data.getUserHomeTopInfo().getGuard().get(i).getAvatar(), guardImgViewList.get(i));
}
}
}
//礼物墙
if (data.getGiftAlreadyWall().getGift_wall() != null) {
if (data.getGiftAlreadyWall().getGift_wall().size() >= 3) {
for (int i = 0; i < 3; i++) {
ImgLoader.display(mContext, data.getGiftAlreadyWall().getGift_wall().get(i).getGifticon(), giftImgViewList.get(i));
}
} else {
for (int i = 0; i < data.getGiftAlreadyWall().getGift_wall().size(); i++) {
ImgLoader.display(mContext, data.getGiftAlreadyWall().getGift_wall().get(i).getGifticon(), giftImgViewList.get(i));
}
}
giftCount.setText(data.getGiftAlreadyWall().getGift_wall().size() + "/36");
}
//荣誉墙
if (data.getUserHomeTopInfo().getDress() != null) {
if (data.getUserHomeTopInfo().getDress().size() >= 3) {
for (int i = 0; i < 3; i++) {
ImgLoader.display(mContext, data.getUserHomeTopInfo().getDress().get(i).getDisplay_src(), honorImgViewList.get(i));
}
} else {
for (int i = 0; i < data.getUserHomeTopInfo().getDress().size(); i++) {
ImgLoader.display(mContext, data.getUserHomeTopInfo().getDress().get(i).getDisplay_src(), honorImgViewList.get(i));
}
}
}
}
@Override
public void onError(String error) {
}
});
}
@Override
protected void onDestroy() {
if (mUserHomeViewHolder != null) {
mUserHomeViewHolder.release();
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == CHOOSE_IMG) {
// 获取用户选择的图片 URI
Uri[] imageUris = null;
if (data != null) {
imageUris = new Uri[]{data.getData()};
File file = new File(Objects.requireNonNull(FilesUtils.getPath(mContext, imageUris[0])));
uploadFile(file);
}
}
super.onDestroy();
}
private void uploadFile(File file) {
if (mUploadStrategy == null) {
mUploadStrategy = new UploadQnImpl(mContext);
}
List<UploadBean> uploadBeans = new ArrayList<>();
UploadBean upVideoBean = new UploadBean(file, UploadBean.IMG);
uploadBeans.add(upVideoBean);
mUploadStrategy.upload(uploadBeans, true, new UploadCallback() {
@Override
public void onFinish(List<UploadBean> list, boolean success) {
if (!success) {
return;
}
bannerImgList.add("https://downs.yaoulive.com/" + list.get(0).getRemoteAccessUrl());
uploadImg(true);
L.e(new Gson().toJson(list));
}
}, true);
}
private void uploadImg(boolean isUp) {
CommonHttpUtil.uploadUserInfoImg(new Gson().toJson(bannerImgList), new com.yunbao.common.http.HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info != null) {
if (isUp) {
ToastUtil.show("上传成功");
} else {
ToastUtil.show("删除成功");
}
mBanner.setPages(bannerImgList, new UserHomeImgsViewHolder()).start();
tempList = new ArrayList<>();
for (int i = 0; i < bannerImgList.size(); i++) {
tempList.add(new UserHomeImgBean(bannerImgList.get(i)));
}
if (tempList.size() > 0) {
tempList.get(0).setShow(true);
}
userHomeImgAdapter.setCommentBeanList(tempList);
}
}
});
}
private File uri2File(Uri uri) {
String img_path;
String[] proj = {MediaStore.Images.Media.DATA};
Cursor actualimagecursor = this.managedQuery(uri, proj, null, null, null);
if (actualimagecursor == null) {
img_path = uri.getPath();
} else {
int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
actualimagecursor.moveToFirst();
img_path = actualimagecursor.getString(actual_image_column_index);
}
File file = new File(img_path);
return file;
}
}

View File

@@ -0,0 +1,81 @@
package com.yunbao.main.activity;
import android.content.Intent;
import android.text.TextUtils;
import android.view.ViewGroup;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.interfaces.CommonCallback;
import com.yunbao.live.activity.LiveAddImpressActivity;
import com.yunbao.main.R;
import com.yunbao.main.http.MainHttpUtil;
import com.yunbao.main.views.UserHomeViewHolder2;
/**
* Created by cxf on 2018/9/25.
*/
//@Route(path = RouteUtil.PATH_USER_HOME)
public class UserHomeActivityOld extends AbsActivity {
private UserHomeViewHolder2 mUserHomeViewHolder;
@Override
protected int getLayoutId() {
return R.layout.activity_empty;
}
@Override
protected boolean isStatusBarWhite() {
return true;
}
@Override
protected void main() {
Intent intent = getIntent();
String toUid = intent.getStringExtra(Constants.TO_UID);
if (TextUtils.isEmpty(toUid)) {
return;
}
boolean fromLiveRoom = intent.getBooleanExtra(Constants.FROM_LIVE_ROOM, false);
String fromLiveUid = fromLiveRoom ? intent.getStringExtra(Constants.LIVE_UID) : null;
mUserHomeViewHolder = new UserHomeViewHolder2(mContext, (ViewGroup) findViewById(R.id.container), toUid, fromLiveRoom,fromLiveUid);
mUserHomeViewHolder.addToParent();
mUserHomeViewHolder.subscribeActivityLifeCycle();
mUserHomeViewHolder.loadData();
MainHttpUtil.getBaseInfo(new CommonCallback<UserBean>() {
@Override
public void callback(UserBean bean) {
UserBean userBean = CommonAppConfig.getInstance().getUserBean();
userBean = bean;
}
});
}
public void addImpress(String toUid) {
Intent intent = new Intent(mContext, LiveAddImpressActivity.class);
intent.putExtra(Constants.TO_UID, toUid);
startActivityForResult(intent, 100);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 100 && resultCode == RESULT_OK) {
if (mUserHomeViewHolder != null) {
mUserHomeViewHolder.refreshImpress();
}
}
}
@Override
protected void onDestroy() {
if (mUserHomeViewHolder != null) {
mUserHomeViewHolder.release();
}
super.onDestroy();
}
}

View File

@@ -9,10 +9,10 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.activity.CommunitySendActivity;
import com.yunbao.common.event.FloatWarOrderEvent;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.main.R;
import com.yunbao.main.activity.CommunitySendActivity;
import org.greenrobot.eventbus.EventBus;

View File

@@ -33,7 +33,6 @@ import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.Constants;
import com.yunbao.common.HtmlConfig;
import com.yunbao.common.activity.UserHomeActivity;
import com.yunbao.common.activity.WebViewActivity;
import com.yunbao.common.bean.GoogleBean;
import com.yunbao.common.bean.UserBean;

View File

@@ -6,7 +6,6 @@ import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -14,10 +13,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.activity.LiveContributeActivity;
import com.yunbao.live.activity.LiveGuardListActivity;
import com.yunbao.live.bean.ImpressBean;
@@ -26,8 +22,7 @@ import com.yunbao.live.custom.MyTextView;
import com.yunbao.live.views.AbsUserHomeViewHolder;
import com.yunbao.main.R;
import com.yunbao.main.activity.MyImpressActivity;
import com.yunbao.main.activity.UserHomeActivity;
import com.yunbao.main.bean.UserHomeConBean;
import com.yunbao.main.activity.UserHomeActivityOld;
import java.util.List;
@@ -128,8 +123,8 @@ public class UserHomeDetailViewHolder extends AbsUserHomeViewHolder implements V
* 添加印象
*/
private void addImpress() {
if (mContext instanceof UserHomeActivity) {
((UserHomeActivity) mContext).addImpress(mToUid);
if (mContext instanceof UserHomeActivityOld) {
((UserHomeActivityOld) mContext).addImpress(mToUid);
}
}

View File

@@ -51,7 +51,7 @@ import com.yunbao.live.views.LiveRecordViewHolder;
import com.yunbao.main.R;
import com.yunbao.main.activity.FansActivity;
import com.yunbao.main.activity.FollowActivity;
import com.yunbao.main.activity.UserHomeActivity;
import com.yunbao.main.activity.UserHomeActivityOld;
import com.yunbao.main.bean.UserHomeConBean;
import com.yunbao.main.http.MainHttpConsts;
import com.yunbao.main.http.MainHttpUtil;
@@ -543,8 +543,8 @@ public class UserHomeViewHolder extends AbsLivePageViewHolder implements AppBarL
}
private void back() {
if (mContext instanceof UserHomeActivity) {
((UserHomeActivity) mContext).onBackPressed();
if (mContext instanceof UserHomeActivityOld) {
((UserHomeActivityOld) mContext).onBackPressed();
}
}
@@ -591,8 +591,8 @@ public class UserHomeViewHolder extends AbsLivePageViewHolder implements AppBarL
* 添加印象
*/
private void addImpress() {
if (mContext instanceof UserHomeActivity) {
((UserHomeActivity) mContext).addImpress(mToUid);
if (mContext instanceof UserHomeActivityOld) {
((UserHomeActivityOld) mContext).addImpress(mToUid);
}
}

View File

@@ -24,16 +24,12 @@ import androidx.viewpager.widget.ViewPager;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.adapter.ViewPagerAdapter;
import com.yunbao.common.bean.ConfigBean;
import com.yunbao.common.bean.LevelBean;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.bean.NewLevelModel;
import com.yunbao.common.event.FollowEvent;
@@ -52,7 +48,6 @@ import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
import com.yunbao.common.utils.MicStatusManager;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.SVGAViewUtils;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.live.activity.LiveReportActivity;
@@ -68,7 +63,7 @@ import com.yunbao.main.R;
import com.yunbao.main.activity.EditProfileActivity;
import com.yunbao.main.activity.FansActivity;
import com.yunbao.main.activity.FollowActivity;
import com.yunbao.main.activity.UserHomeActivity;
import com.yunbao.main.activity.UserHomeActivityOld;
import com.yunbao.main.http.MainHttpConsts;
import com.yunbao.main.http.MainHttpUtil;
@@ -86,8 +81,6 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -635,8 +628,8 @@ public class UserHomeViewHolder2 extends AbsLivePageViewHolder implements LiveSh
}
private void back() {
if (mContext instanceof UserHomeActivity) {
((UserHomeActivity) mContext).onBackPressed();
if (mContext instanceof UserHomeActivityOld) {
((UserHomeActivityOld) mContext).onBackPressed();
}
}
@@ -801,7 +794,7 @@ public class UserHomeViewHolder2 extends AbsLivePageViewHolder implements LiveSh
MicStatusManager.getInstance().showDownMicDialog(mContext);
return;
}
((UserHomeActivity) mContext).onBackPressed();
((UserHomeActivityOld) mContext).onBackPressed();
EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, Integer.parseInt(liveTypeVal)));
} else {
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveTypeVal), Integer.parseInt(liveSdk));