diff --git a/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java b/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java index fc129fb6d..2dbcce732 100644 --- a/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java +++ b/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java @@ -756,7 +756,7 @@ public class AVRoomActivity extends BaseMvpActivity - implements View.OnClickListener, IRoomSettingView { +public class RoomSettingActivity extends BaseMvpActivity implements View.OnClickListener, IRoomSettingView, EasyPermissions.PermissionCallbacks { private RelativeLayout managerLayout; private RelativeLayout blackLayout; @@ -98,6 +133,14 @@ public class RoomSettingActivity extends BaseMvpActivity pickMedia; + private Uri mUri; + private Job mJob; + private final int PERMISSION_CODE_STORAGE = 12; + private final int REQUEST_CODE_OPEN_PHOTO_PROVIDER = 111; // 从相册中选择 + private final int REQUEST_CODE_STORAGE = 42; + private final int MAX_BITMAP_SIZE = 100 * 1024 * 1024; // 剪切的图片最大为100 MB + public static void start(Context context) { Intent intent = new Intent(context, RoomSettingActivity.class); context.startActivity(intent); @@ -135,17 +178,33 @@ public class RoomSettingActivity extends BaseMvpActivity roomEvent.getEvent() == RoomEvent.ROOM_INFO_UPDATE) .subscribe(roomEvent -> updateRoomInfoView()); + + if (ActivityResultContracts.PickVisualMedia.isPhotoPickerAvailable(this)) { + pickMedia = registerForActivityResult(new ActivityResultContracts.PickVisualMedia(), new ActivityResultCallback() { + @Override + public void onActivityResult(Uri uri) { + if (uri != null && mUri != null) { + crop(uri, 1, mUri); + } + } + }); + } + } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); + if (mJob != null) { + mJob.cancel(null); + } } private void initView() { @@ -260,8 +319,7 @@ public class RoomSettingActivity extends BaseMvpActivity= 33){ + DialogUtil.INSTANCE.getDialog(this, new EasyAlertDialogHelper.OnDialogActionListener() { + @Override + public void doCancelAction() {} + @Override + public void doOkAction() { + mUri = Uri.parse("file://"+ FileHelper.getRootCacheDir().getPath()+"/"+System.nanoTime()+".jpg"); + SPUtils.putBoolean(ConstantsLib.Key.Permissions_Img,true); + pickMedia.launch(new PickVisualMediaRequest.Builder().setMediaType(ActivityResultContracts.PickVisualMedia.ImageOnly.INSTANCE).build()); + } + }); + }else{ + if (!EasyPermissions.hasPermissions(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { + EasyPermissions.requestPermissions(this, getString(R.string.permission_storage_rationale), PERMISSION_CODE_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE); + } else { + mUri = Uri.parse("file://"+ FileHelper.getRootCacheDir().getPath()+"/"+System.nanoTime()+".jpg"); + PhotoProvider.photoProvider(this, 1,false,REQUEST_CODE_OPEN_PHOTO_PROVIDER, true); + } + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); + } + + @Override + public void onPermissionsGranted(int requestCode, @NonNull List perms) { + if (requestCode == PERMISSION_CODE_STORAGE) { + checkStoragePermission(); + } + } + + @Override + public void onPermissionsDenied(int requestCode, @NonNull List perms) { + if (requestCode == PERMISSION_CODE_STORAGE) { + String requestTip = getString(R.string.permission_storage_denied); + CommonTipDialog mPrivacyDialog = new CommonTipDialog(context); + mPrivacyDialog.setTipMsg(requestTip); + mPrivacyDialog.setOkText(getString(R.string.room_perform_go_update)); + mPrivacyDialog.setOnActionListener(new CommonTipDialog.OnActionListener() { + @Override + public void onOk() { + //同意跳到应用详情页面 + Uri packageUri = Uri.parse("package:${packageName}"); + Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageUri); + startActivityForResult(intent, REQUEST_CODE_STORAGE); + } + + @Override + public void onCancel() { + //取消跳到应用详情页面 + ToastUtils.show(getString(R.string.permission_storage_refused)); + } + }); + mPrivacyDialog.show(); + } + } + + + + private void switchGiftValue(){ if (AvRoomDataManager.get().isCpRoom()) { return; @@ -894,4 +1019,102 @@ public class RoomSettingActivity extends BaseMvpActivity photos = PhotoProvider.getResultPhotoList(data); + if (photos != null && !photos.isEmpty()) { + Photo photo = photos.get(0); + crop(photo.uri, photo.size, mUri); + } else { + toast(R.string.empty_data); + } + } + break; + + case UCrop.REQUEST_CROP: + if (mUri != null && mUri.getPath() != null) { + try { + if (mJob != null) { + mJob.cancel(null); + } + mJob = PhotoCompressUtil.compress( + this, + mUri.getPath(), + PhotoCompressUtil.getCompressCachePath("roomAvatar"), new PhotoCompressCallback() { + @Override + public void onSuccess(@NonNull String compressedImg) { + getDialogManager().showProgressDialog(RoomSettingActivity.this, ResUtil.getString(R.string.ui_user_userinfomodifyactivity_09)); + FileModel.get() + .uploadFile(compressedImg) + .compose(bindToLifecycle()) + .subscribe((url, throwable) -> { + if (throwable != null) { + onUploadFail(throwable); + } else { + onUpload(url); + } + }); + } + @Override + public void onFail(@NonNull Throwable e) { + toast(e.getMessage()); + } + }); + mJob.start(); + } catch (Exception e) { + + } + } + break; + } + } + } + + /** + * 第三方图片裁剪框架Ucrop + */ + private void crop(Uri sourceUri, long sourceSize, Uri destinationUri) { + if (sourceUri == null || destinationUri == null) { + return; + } //防止too large导致oom,大于100m不处理,内存大小 + if (BitmapUtil.getSdBitmapSize(sourceUri) >= MAX_BITMAP_SIZE) { + toast(R.string.text_bitmap_too_large); + return; + } + + + UCrop.Options options = new UCrop.Options(); + options.setCompressionQuality(100); + options.setShowCropGrid(false); + options.setToolbarColor(ContextCompat.getColor(App.gContext,android.R.color.black)); + options.setStatusBarColor(ContextCompat.getColor(App.gContext, android.R.color.black)); + options.setHideBottomControls(true); + options.setCompressionFormat(Bitmap.CompressFormat.JPEG); + options.setToolbarCancelDrawable(R.drawable.user_ucrop_ic_closs); + options.setToolbarCropDrawable(R.drawable.user_ucrop_ic_sure); + options.setToolbarWidgetColor(ContextCompat.getColor(App.gContext, R.color.color_white)); + UCrop.of(sourceUri, destinationUri).withOptions(options).withAspectRatio(1f, 1f).withMaxResultSize(800, 800).start(this); + + } + + private void onUpload(String url) { + LogUtils.d(" 请求接口 更新房间封面 url = "+url); + save(null,url,null,null,false,roomInfo.isHasAnimationEffect()); + } + + private void onUploadFail(Throwable throwable) { + toast(ResUtil.getString(R.string.ui_user_userinfomodifyactivity_08) + ":"+throwable.getMessage()); + getDialogManager().dismissDialog(); + } + + } diff --git a/app/src/main/java/com/chwl/app/avroom/activity/RoomTitleEditActivity.java b/app/src/main/java/com/chwl/app/avroom/activity/RoomTitleEditActivity.java index f21f09cb1..78071a471 100644 --- a/app/src/main/java/com/chwl/app/avroom/activity/RoomTitleEditActivity.java +++ b/app/src/main/java/com/chwl/app/avroom/activity/RoomTitleEditActivity.java @@ -119,7 +119,7 @@ public class RoomTitleEditActivity extends BaseBindingActivity disposable = PraiseModel.get().praise(AvRoomDataManager.get().getRoomUid(), true) diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/RoomBoomInfoDialog.kt b/app/src/main/java/com/chwl/app/avroom/dialog/RoomBoomInfoDialog.kt index 154d965f2..9f639f1dc 100644 --- a/app/src/main/java/com/chwl/app/avroom/dialog/RoomBoomInfoDialog.kt +++ b/app/src/main/java/com/chwl/app/avroom/dialog/RoomBoomInfoDialog.kt @@ -152,7 +152,7 @@ class RoomBoomInfoDialog : BaseDialogFragment() { animView.setLoop(Int.MAX_VALUE) animView.loadAnim2(it.vapUrl) - if (UserModel.get().partitionId == 2L) { + if (UserModel.get().isArUser) { binding.avatarTime.text = R.string.roomBoomInfoRankHint2.getString() } else { binding.avatarTime.text = R.string.roomBoomInfoRankHint.getString() diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/RoomGameListDialog.kt b/app/src/main/java/com/chwl/app/avroom/dialog/RoomGameListDialog.kt index 0dc9ed872..6fba7b915 100644 --- a/app/src/main/java/com/chwl/app/avroom/dialog/RoomGameListDialog.kt +++ b/app/src/main/java/com/chwl/app/avroom/dialog/RoomGameListDialog.kt @@ -179,7 +179,9 @@ class RoomGameListDialog : if (roomIcon.isBaiShunGame()) { newData.add(GameInfo(name = roomIcon.name?:"", pic = roomIcon.icon?:"" , pic2 = roomIcon.icon?:"", skipContent = roomIcon.skipContent?:"", ruleValue = roomIcon.ruleValue?:"")) }else if(roomIcon.isFindLove()){ - newData.add(GameInfo(name = roomIcon.name?:"", pic = roomIcon.icon?:"" , pic2 = roomIcon.icon?:"", skipContent = roomIcon.skipContent?:"", ruleValue = roomIcon.ruleValue?:"", isFindLove = true)) + newData.add(GameInfo(name = roomIcon.name?:"", pic = roomIcon.icon?:"" , pic2 = roomIcon.icon?:"", skipContent = roomIcon.skipContent?:"", ruleValue = roomIcon.ruleValue?:"", code = roomIcon.code)) + }else if(roomIcon.isLeadercc()){ + newData.add(GameInfo(name = roomIcon.name?:"", pic = roomIcon.icon?:"" , pic2 = roomIcon.icon?:"", skipContent = roomIcon.skipContent?:"", ruleValue = roomIcon.ruleValue?:"", code = roomIcon.code)) } } return newData @@ -267,7 +269,7 @@ class RoomGameListDialog : ) } }else if(!gameInfo.skipContent.isNullOrEmpty() || !gameInfo.ruleValue.isNullOrEmpty()){ - if (gameInfo.isFindLove) { + if (gameInfo.isFindLove()) { jumpFindLove() } else { jumpBaiShunGame(gameInfo) @@ -329,9 +331,11 @@ class RoomGameListDialog : //这里的2和4是服务端定义的错误状态 关闭排麦模式和关闭PK模式! private fun isShowChangeGame(): Boolean { + //todo do 游戏模式限制判断 val currentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo - return currentRoomInfo != null && currentRoomInfo.type != RoomInfo.ROOM_TYPE_SINGLE && - (currentRoomInfo.roomModeType == RoomModeType.NORMAL_MODE || currentRoomInfo.roomModeType == 2 || currentRoomInfo.roomModeType == 4) + return currentRoomInfo != null + && currentRoomInfo.type != RoomInfo.ROOM_TYPE_SINGLE +// && (currentRoomInfo.roomModeType == RoomModeType.NORMAL_MODE || currentRoomInfo.roomModeType == 2 || currentRoomInfo.roomModeType == 4) } interface GameplayDialogListener { diff --git a/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt b/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt index c8bf45e0d..7ed4fe4d6 100644 --- a/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt +++ b/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt @@ -91,7 +91,6 @@ import com.chwl.core.gift.bean.BoomMsgAwardList import com.chwl.core.gift.bean.BoomMsgDialogBean import com.chwl.core.gift.bean.BoomMsgExpPushBean import com.chwl.core.gift.bean.GiftInfo -import com.chwl.core.gift.bean.GiftType import com.chwl.core.gift.event.GiftComboEvent import com.chwl.core.gift.event.NotifyEvent import com.chwl.core.gift.event.RoomFreeGiftEvent @@ -980,12 +979,6 @@ open class BaseRoomFragment?> : callback.onFail() EventBus.getDefault().post(GiftComboEvent(GiftComboEvent.Action.ACT_GIFT_CANCEL)) } else { - if (giftInfo.giftType == GiftType.GIFT_TYPE_NORMAL || giftInfo.giftType == GiftType.GIFT_TYPE_SUPER_LUCKY || giftInfo.giftType == GiftType.GIFT_TYPE_LUCKY_24) { - giftDialog?.hide() - val giftComboEvent = GiftComboEvent(GiftComboEvent.Action.ACT_GIFT_END) - giftComboEvent.giftNumber = gift.data.giftNum - EventBus.getDefault().post(giftComboEvent) - } callback.onSuccess() } } @@ -1371,6 +1364,7 @@ open class BaseRoomFragment?> : } if (giftDialog?.isShowing != true && !requireActivity().isFinishing) { EventBus.getDefault().post(GiftComboEvent(GiftComboEvent.Action.ACT_GIFT_POINT)) + EventBus.getDefault().post(GiftComboEvent(GiftComboEvent.Action.ACT_GIFT_DIALOG_DISMISS)) giftDialog?.show() } } @@ -1611,22 +1605,7 @@ open class BaseRoomFragment?> : - //礼物连击相关 消息 - @Subscribe(threadMode = ThreadMode.MAIN) - fun onGiftComboEvent(event: GiftComboEvent) { - when (event.action) { - GiftComboEvent.Action.ACT_GIFT_START-> { - giftDialog?.sendGift() - } - - GiftComboEvent.Action.ACT_GIFT_SHOW-> { - giftDialog?.show() - } - - else -> {} - } - } //横幅相关消息 @Subscribe(threadMode = ThreadMode.MAIN) diff --git a/app/src/main/java/com/chwl/app/avroom/online/RoomOnlineAvatarAdapter.kt b/app/src/main/java/com/chwl/app/avroom/online/RoomOnlineAvatarAdapter.kt index 1497c6e6d..41e16723f 100644 --- a/app/src/main/java/com/chwl/app/avroom/online/RoomOnlineAvatarAdapter.kt +++ b/app/src/main/java/com/chwl/app/avroom/online/RoomOnlineAvatarAdapter.kt @@ -5,6 +5,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.chad.library.adapter.base.diff.BaseQuickDiffCallback import com.chwl.app.R +import com.chwl.app.ui.utils.ImageLoadUtils import com.chwl.app.ui.utils.loadAvatar class RoomOnlineAvatarAdapter : @@ -12,7 +13,7 @@ class RoomOnlineAvatarAdapter : override fun convert(helper: BaseViewHolder, item: Pair?) { val avatarView = helper.getView(R.id.iv_avatar) - avatarView.loadAvatar(item?.second) + ImageLoadUtils.loadAvatar(item?.second,avatarView) } fun updateData(list: List>?) { diff --git a/app/src/main/java/com/chwl/app/avroom/widget/BottomView.java b/app/src/main/java/com/chwl/app/avroom/widget/BottomView.java index 972a35880..9ed88e5c9 100644 --- a/app/src/main/java/com/chwl/app/avroom/widget/BottomView.java +++ b/app/src/main/java/com/chwl/app/avroom/widget/BottomView.java @@ -353,9 +353,10 @@ public class BottomView extends LinearLayout implements View.OnClickListener { } RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; if (roomInfo == null) return; - boolean show = (AvRoomDataManager.get().isQueuingMicro() || AvRoomDataManager.get().isOpenPKMode()) && - !AvRoomDataManager.get().isCpRoom() && - (AvRoomDataManager.get().isManager() || roomInfo.getRoomModeType() == RoomModeType.OPEN_MICRO_MODE); + boolean show = ( + AvRoomDataManager.get().isQueuingMicro() || AvRoomDataManager.get().isOpenPKMode()) + && !AvRoomDataManager.get().isCpRoom() + && (AvRoomDataManager.get().isManager() || roomInfo.getRoomModeType() == RoomModeType.OPEN_MICRO_MODE); iconMicQueue.setVisibility(show ? VISIBLE : GONE); } diff --git a/app/src/main/java/com/chwl/app/bindadapter/ViewAdapter.java b/app/src/main/java/com/chwl/app/bindadapter/ViewAdapter.java index 119c6cadc..8c1330ee7 100644 --- a/app/src/main/java/com/chwl/app/bindadapter/ViewAdapter.java +++ b/app/src/main/java/com/chwl/app/bindadapter/ViewAdapter.java @@ -12,10 +12,13 @@ import android.widget.TextView; import androidx.annotation.Nullable; import androidx.databinding.BindingAdapter; +import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; +import com.chwl.app.ui.utils.ImageLoadUtilsV2; +import com.chwl.library.common.glide.GlideUtils; import com.netease.nim.uikit.support.glide.GlideApp; import com.chwl.app.R; import com.chwl.app.ui.utils.ImageLoadUtils; @@ -66,8 +69,7 @@ public class ViewAdapter { @BindingAdapter(value = {"avatarUrl"}, requireAll = false) public static void setAvatarUrl(ImageView imageView, String url) { - if (TextUtils.isEmpty(url) || url.equals("null")) return; - ImageLoadUtils.loadAvatar(imageView.getContext(), url, imageView); + ImageLoadUtils.loadAvatar(url,imageView,R.drawable.default_avatar); } @BindingAdapter(value = {"roundUrl"}, requireAll = false) diff --git a/app/src/main/java/com/chwl/app/common/widget/dialog/DialogManager.java b/app/src/main/java/com/chwl/app/common/widget/dialog/DialogManager.java index c914258e1..69c7fd84c 100644 --- a/app/src/main/java/com/chwl/app/common/widget/dialog/DialogManager.java +++ b/app/src/main/java/com/chwl/app/common/widget/dialog/DialogManager.java @@ -739,7 +739,7 @@ public class DialogManager { window.setContentView(R.layout.dialog_in_app_sharing_confirm); ImageView avatarView = window.findViewById(R.id.iv_avatar); - ImageLoadUtils.loadAvatar(getContext().getApplicationContext(), avatar, avatarView, true); + ImageLoadUtils.loadAvatar(getContext().getApplicationContext(), avatar, avatarView); TextView nickView = window.findViewById(R.id.tv_nick); nickView.setText(nick); diff --git a/app/src/main/java/com/chwl/app/earn/adapter/GoldDetailAdapter.kt b/app/src/main/java/com/chwl/app/earn/adapter/GoldDetailAdapter.kt index 30488a5e7..a97faafee 100644 --- a/app/src/main/java/com/chwl/app/earn/adapter/GoldDetailAdapter.kt +++ b/app/src/main/java/com/chwl/app/earn/adapter/GoldDetailAdapter.kt @@ -3,6 +3,7 @@ package com.chwl.app.earn.adapter import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.chwl.app.R +import com.chwl.app.ui.utils.ImageLoadUtils import com.chwl.app.ui.utils.ImageLoadUtilsV2 import com.chwl.core.earn.bean.HallMemberGoldFlowInfo import com.chwl.library.utils.FormatUtils @@ -19,7 +20,7 @@ class GoldDetailAdapter : R.id.tv_have_change, mContext.getString(R.string.have_converted, FormatUtils.formatToShortDown(item.exchangeGolds)) ) - ImageLoadUtilsV2.loadAvatar(helper.getView(R.id.iv_user_avatar), item.avatar) + ImageLoadUtils.loadAvatar(item.avatar,helper.getView(R.id.iv_user_avatar)) } } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/earn/adapter/GoldRecordAdapter.kt b/app/src/main/java/com/chwl/app/earn/adapter/GoldRecordAdapter.kt index 2cb27e2de..70368f24f 100644 --- a/app/src/main/java/com/chwl/app/earn/adapter/GoldRecordAdapter.kt +++ b/app/src/main/java/com/chwl/app/earn/adapter/GoldRecordAdapter.kt @@ -3,6 +3,7 @@ package com.chwl.app.earn.adapter import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.chwl.app.R +import com.chwl.app.ui.utils.ImageLoadUtils import com.chwl.app.ui.utils.ImageLoadUtilsV2 import com.chwl.core.earn.bean.HallMemberGoldFlowInfo import com.chwl.library.utils.FormatUtils @@ -20,7 +21,7 @@ class GoldRecordAdapter : mContext.getString(R.string.have_converted, FormatUtils.formatToShortDown(item.exchangeGolds)) ) .setText(R.id.tv_pos, (helper.layoutPosition + 1).toString()) - ImageLoadUtilsV2.loadAvatar(helper.getView(R.id.iv_user_avatar), item.avatar) + ImageLoadUtils.loadAvatar(item.avatar,helper.getView(R.id.iv_user_avatar)) } } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/earn/adapter/GoldRoomAdapter.kt b/app/src/main/java/com/chwl/app/earn/adapter/GoldRoomAdapter.kt index fadd6770e..972ee6fad 100644 --- a/app/src/main/java/com/chwl/app/earn/adapter/GoldRoomAdapter.kt +++ b/app/src/main/java/com/chwl/app/earn/adapter/GoldRoomAdapter.kt @@ -3,6 +3,7 @@ package com.chwl.app.earn.adapter import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.chwl.app.R +import com.chwl.app.ui.utils.ImageLoadUtils import com.chwl.app.ui.utils.ImageLoadUtilsV2 import com.chwl.core.earn.bean.HallVo @@ -17,7 +18,7 @@ class GoldRoomAdapter : BaseQuickAdapter(R.layout.item_g override fun convert(helper: BaseViewHolder, item: HallVo) { helper.setText(R.id.tv_content, item.hallName) - ImageLoadUtilsV2.loadAvatar(helper.getView(R.id.iv_hall_avatar), item.ownerAvatar) + ImageLoadUtils.loadAvatar(item.ownerAvatar,helper.getView(R.id.iv_hall_avatar)) helper.itemView.isSelected = helper.layoutPosition==selPosition diff --git a/app/src/main/java/com/chwl/app/home/adapter/HomeChatAdapter.kt b/app/src/main/java/com/chwl/app/home/adapter/HomeChatAdapter.kt index 86420cfbc..97f965c09 100644 --- a/app/src/main/java/com/chwl/app/home/adapter/HomeChatAdapter.kt +++ b/app/src/main/java/com/chwl/app/home/adapter/HomeChatAdapter.kt @@ -6,6 +6,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.opensource.svgaplayer.SVGAImageView import com.chwl.app.R +import com.chwl.app.ui.utils.ImageLoadUtils import com.chwl.app.ui.utils.ImageLoadUtilsV2 import com.chwl.app.ui.utils.loadFromAssets import com.chwl.core.home.bean.HomeRoomInfo @@ -19,7 +20,7 @@ class HomeChatAdapter : override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) { val svgaLiving = helper.getView(R.id.svga_living) - ImageLoadUtilsV2.loadAvatar(helper.getView(R.id.iv_avatar), item.avatar) + ImageLoadUtils.loadAvatar( item.avatar,helper.getView(R.id.iv_avatar)) helper.setText(R.id.tv_name, item.title.subAndReplaceDot(6)) if (item.mgId == 0L) { helper.getView(R.id.group_game).visibility = View.INVISIBLE diff --git a/app/src/main/java/com/chwl/app/home/adapter/HomeRoomFragmentAdapter.java b/app/src/main/java/com/chwl/app/home/adapter/HomeRoomFragmentAdapter.java index d676670c5..b617ffa45 100644 --- a/app/src/main/java/com/chwl/app/home/adapter/HomeRoomFragmentAdapter.java +++ b/app/src/main/java/com/chwl/app/home/adapter/HomeRoomFragmentAdapter.java @@ -65,7 +65,7 @@ public class HomeRoomFragmentAdapter extends BaseMultiItemQuickAdapter { ImageView mIvTabLabel = helper.findViewById(R.id.iv_tab_label); if (!TextUtils.isEmpty(item.getTagPict()) && !item.isCrossPking() && TextUtils.isEmpty(item.getIconContent())) { mIvTabLabel.setVisibility(View.VISIBLE); - ImageLoadUtils.loadAvatarBig(item.getTagPict(), mIvTabLabel); + ImageLoadUtils.loadAvatarBig(item.getTagPict(),mIvTabLabel); } else { mIvTabLabel.setVisibility(View.GONE); } ImageView ivCover = helper.findViewById(R.id.iv_cover); if (!TextUtils.isEmpty(item.getAvatar())) { - ImageLoadUtils.loadAvatarBig(item.getAvatar(), ivCover, R.drawable.default_cover); + ImageLoadUtils.loadAvatarBig(item.getAvatar(), ivCover); } else { GlideApp.with(BaseApp.getContext()) .load(R.drawable.default_cover) diff --git a/app/src/main/java/com/chwl/app/home/helper/OpenRoomHelper.java b/app/src/main/java/com/chwl/app/home/helper/OpenRoomHelper.java index 86670f29d..1cbbad9e8 100644 --- a/app/src/main/java/com/chwl/app/home/helper/OpenRoomHelper.java +++ b/app/src/main/java/com/chwl/app/home/helper/OpenRoomHelper.java @@ -141,6 +141,7 @@ public class OpenRoomHelper { RoomSettingModel roomSettingModel = new RoomSettingModel(); return roomSettingModel.updateRoomInfo( roomInfo.getTitle(), + roomInfo.getAvatar(), roomInfo.getRoomDesc(), roomInfo.getIntroduction(), roomInfo.roomPwd, @@ -160,6 +161,7 @@ public class OpenRoomHelper { RoomSettingModel roomSettingModel = new RoomSettingModel(); roomSettingModel.updateRoomInfo( roomInfo.getTitle(), + roomInfo.getAvatar(), roomInfo.getRoomDesc(), roomInfo.getIntroduction(), roomInfo.roomPwd, diff --git a/app/src/main/java/com/chwl/app/luckymoney/adapter/LuckyMoneyMemberListAdapter.java b/app/src/main/java/com/chwl/app/luckymoney/adapter/LuckyMoneyMemberListAdapter.java index f6a865c75..c5881dba5 100644 --- a/app/src/main/java/com/chwl/app/luckymoney/adapter/LuckyMoneyMemberListAdapter.java +++ b/app/src/main/java/com/chwl/app/luckymoney/adapter/LuckyMoneyMemberListAdapter.java @@ -42,7 +42,7 @@ public class LuckyMoneyMemberListAdapter extends BaseAdapter TextView amount = helper.getView(R.id.tv_member_amount); - ImageLoadUtils.loadAvatar(context, item.getAvatar(), ivAvatar, true); + ImageLoadUtils.loadAvatar(context, item.getAvatar(), ivAvatar); tvName.setText(item.getNick()); timestamp.setText(simpleDateFormat.format(new Date(item.getCreateTime()))); helper.setVisible(R.id.tv_luckiest, item.isLuckiest()); diff --git a/app/src/main/java/com/chwl/app/luckymoney/dialog/LuckyMoneyDialog.java b/app/src/main/java/com/chwl/app/luckymoney/dialog/LuckyMoneyDialog.java index 39c5670f3..783d23153 100644 --- a/app/src/main/java/com/chwl/app/luckymoney/dialog/LuckyMoneyDialog.java +++ b/app/src/main/java/com/chwl/app/luckymoney/dialog/LuckyMoneyDialog.java @@ -119,7 +119,7 @@ public class LuckyMoneyDialog extends AppCompatDialog implements View.OnClickLis private void setupAvatarAndNick(LuckyMoneyInfo luckyMoneyInfo) { ImageView userAvatar = findViewById(R.id.iv_avatar); - ImageLoadUtils.loadAvatar(getContext(), luckyMoneyInfo.getAvatar(), userAvatar, true); + ImageLoadUtils.loadAvatar(getContext(), luckyMoneyInfo.getAvatar(), userAvatar); TextView userName = findViewById(R.id.tv_user_name); userName.setText(luckyMoneyInfo.getNick()); } diff --git a/app/src/main/java/com/chwl/app/luckymoney/view/LuckyMoneyDetailActivity.java b/app/src/main/java/com/chwl/app/luckymoney/view/LuckyMoneyDetailActivity.java index 8f36f36b7..70a86bc50 100644 --- a/app/src/main/java/com/chwl/app/luckymoney/view/LuckyMoneyDetailActivity.java +++ b/app/src/main/java/com/chwl/app/luckymoney/view/LuckyMoneyDetailActivity.java @@ -90,7 +90,7 @@ public class LuckyMoneyDetailActivity extends BaseBindingActivity(), } private fun setTaskProgress(entity: CpTaskEntity) { - ImageLoadUtilsV2.loadAvatar(mBinding.ivAccept, entity.cpAvatar) - ImageLoadUtilsV2.loadAvatar(mBinding.ivInvite, entity.avatar) + ImageLoadUtils.loadAvatar( entity.cpAvatar,mBinding.ivAccept) + ImageLoadUtils.loadAvatar(entity.avatar,mBinding.ivInvite) mBinding.tvLevel.text = String.format(resources.getString(R.string.cp_level, entity.cpLevel.toString())) val progress = ((entity.cpSecretVal.toFloat() / entity.cpNextLevelSecretVal) * 100).toInt() diff --git a/app/src/main/java/com/chwl/app/relation/cp/adapter/InviteRecordAdapter.kt b/app/src/main/java/com/chwl/app/relation/cp/adapter/InviteRecordAdapter.kt index 4669bb18e..9745e902e 100644 --- a/app/src/main/java/com/chwl/app/relation/cp/adapter/InviteRecordAdapter.kt +++ b/app/src/main/java/com/chwl/app/relation/cp/adapter/InviteRecordAdapter.kt @@ -6,6 +6,7 @@ import android.widget.TextView import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.chwl.app.R +import com.chwl.app.ui.utils.ImageLoadUtils import com.chwl.app.ui.utils.ImageLoadUtilsV2 import com.chwl.core.relation.cp.bean.UserCpListEntity @@ -19,7 +20,7 @@ class InviteRecordAdapter(private val context: Context) : item?.inviteUserAvatar?.let { val imageView = helper .getView(R.id.iv_avatar) - ImageLoadUtilsV2.loadAvatar(imageView, it) + ImageLoadUtils.loadAvatar(it,imageView) } item?.inviteUserNick.let { val tvName = helper.getView(R.id.tv_name) diff --git a/app/src/main/java/com/chwl/app/relation/cp/dialog/CpGlobalDialog.kt b/app/src/main/java/com/chwl/app/relation/cp/dialog/CpGlobalDialog.kt index 9e0fde7e6..d6c5fd1c8 100644 --- a/app/src/main/java/com/chwl/app/relation/cp/dialog/CpGlobalDialog.kt +++ b/app/src/main/java/com/chwl/app/relation/cp/dialog/CpGlobalDialog.kt @@ -10,6 +10,7 @@ import com.chwl.app.databinding.DialogCpGlobalBinding import com.chwl.app.relation.cp.CpDataManager import com.chwl.app.relation.cp.activity.CpInviteRecordActivity import com.chwl.app.base.BaseBindingDialog +import com.chwl.app.ui.utils.ImageLoadUtils import com.chwl.app.ui.utils.ImageLoadUtilsV2 import com.chwl.core.relation.cp.bean.CpInviteInfo import com.chwl.library.annatation.ActLayoutRes @@ -35,7 +36,7 @@ class CpGlobalDialog(context: Context) : binding.tvVisit.setOnClickListener(this) setCancelable(false) entity?.let { - ImageLoadUtilsV2.loadAvatar(binding.ivAvatar, entity?.inviteAvatar) + ImageLoadUtils.loadAvatar(entity?.inviteAvatar, binding.ivAvatar ) binding.tvNick.text = it.inviteNick } } diff --git a/app/src/main/java/com/chwl/app/team/adapter/TeamListAdapter.java b/app/src/main/java/com/chwl/app/team/adapter/TeamListAdapter.java index ef41cd9e7..5ec61a37f 100644 --- a/app/src/main/java/com/chwl/app/team/adapter/TeamListAdapter.java +++ b/app/src/main/java/com/chwl/app/team/adapter/TeamListAdapter.java @@ -41,7 +41,7 @@ public class TeamListAdapter extends BaseAdapter { TextView teamName = helper.getView(R.id.tv_team_name); helper.addOnClickListener(R.id.ll_container); - ImageLoadUtils.loadAvatar(context, item.getIcon(), avatar, true); + ImageLoadUtils.loadAvatar(context, item.getIcon(), avatar); teamName.setText(item.getName()); } diff --git a/app/src/main/java/com/chwl/app/team/view/NimTeamMessageActivity.java b/app/src/main/java/com/chwl/app/team/view/NimTeamMessageActivity.java index de1e7b779..979e60fdf 100644 --- a/app/src/main/java/com/chwl/app/team/view/NimTeamMessageActivity.java +++ b/app/src/main/java/com/chwl/app/team/view/NimTeamMessageActivity.java @@ -105,7 +105,7 @@ public class NimTeamMessageActivity extends BaseMessageActivity { }); if (FamilyModel.Instance().getMyFamily() != null) { ImageLoadUtils.loadAvatar(getApplicationContext(), FamilyModel.Instance().getMyFamily().getFamilyIcon(), - teamAvatar, true); + teamAvatar); } } diff --git a/app/src/main/java/com/chwl/app/ui/im/avtivity/AddBlackListActivity.java b/app/src/main/java/com/chwl/app/ui/im/avtivity/AddBlackListActivity.java index 5be07eb02..fd4a4d9dc 100644 --- a/app/src/main/java/com/chwl/app/ui/im/avtivity/AddBlackListActivity.java +++ b/app/src/main/java/com/chwl/app/ui/im/avtivity/AddBlackListActivity.java @@ -81,7 +81,7 @@ public class AddBlackListActivity extends BaseMvpActivity { // 头像 - ImageLoadUtils.loadAvatar(AddBlackListActivity.this, userInfo.getAvatar(), ivAvatar, true); + ImageLoadUtils.loadAvatar(AddBlackListActivity.this, userInfo.getAvatar(), ivAvatar); // 名字 tvName.setText(RegexUtil.getPrintableString(userInfo.getNick())); }); diff --git a/app/src/main/java/com/chwl/app/ui/im/avtivity/BlackListAdapter.java b/app/src/main/java/com/chwl/app/ui/im/avtivity/BlackListAdapter.java index 6758cbf32..40eaab511 100644 --- a/app/src/main/java/com/chwl/app/ui/im/avtivity/BlackListAdapter.java +++ b/app/src/main/java/com/chwl/app/ui/im/avtivity/BlackListAdapter.java @@ -108,7 +108,7 @@ public class BlackListAdapter extends RecyclerView.Adapter { UserInfoActivity.Companion.start(context,cpInfo.cpUid); }); @@ -397,8 +397,8 @@ public class UserInfoActivity extends BaseBindingActivity { UserInfoActivity.Companion.start(context,cpInfo.cpUid); @@ -410,7 +410,7 @@ public class UserInfoActivity extends BaseBindingActivity - crop(uri, 1, mUri) + if (uri != null) { + mUri?.let { + if (isGif) { + val isCopy = MyUriUtils.copyFileToUrl(this,uri, it) + if (isCopy) { + onActivityResult(UCrop.REQUEST_CROP,RESULT_OK,null) + } + } else { + crop(uri, 1, it) + } + } + } } } } @@ -127,11 +140,7 @@ class UserInfoModifyActivity : BaseViewBindingActivity= 33){ DialogUtil.getDialog(this,object : EasyAlertDialogHelper.OnDialogActionListener { @@ -450,8 +460,9 @@ class UserInfoModifyActivity : BaseViewBindingActivity { mViewBinding.cpLevel.setImageResource(getLevelImg(data.cpLevel)) - ImageLoadUtils.loadImage(mViewBinding.userAvatar,data.avatar) - ImageLoadUtils.loadImage(mViewBinding.userAvatarCp,data.cpAvatar) + ImageLoadUtils.loadAvatar(data.avatar,mViewBinding.userAvatar) + ImageLoadUtils.loadAvatar(data.cpAvatar, mViewBinding.userAvatarCp) val max = (data.endExp - data.startExp) val current = (data.currentExp.toFloat() / max.toFloat()) * 100f diff --git a/app/src/main/java/com/chwl/app/ui/utils/ImageLoad.kt b/app/src/main/java/com/chwl/app/ui/utils/ImageLoad.kt index 3b9ba0e2e..b85f26401 100644 --- a/app/src/main/java/com/chwl/app/ui/utils/ImageLoad.kt +++ b/app/src/main/java/com/chwl/app/ui/utils/ImageLoad.kt @@ -79,15 +79,8 @@ fun ImageView.load( } fun ImageView.loadAvatar(url: String?) { - if (context.isDestroyed()) return - - GlideApp.with(context).load(url) - .dontAnimate() - .placeholder(R.drawable.default_avatar) - .error(R.drawable.default_avatar) - .transform(CenterCrop(), CircleCrop()) - .into(this) + ImageLoadUtils.loadAvatar(url,this) } diff --git a/app/src/main/java/com/chwl/app/ui/utils/ImageLoadUtils.java b/app/src/main/java/com/chwl/app/ui/utils/ImageLoadUtils.java index 4067d169c..ba263e72a 100644 --- a/app/src/main/java/com/chwl/app/ui/utils/ImageLoadUtils.java +++ b/app/src/main/java/com/chwl/app/ui/utils/ImageLoadUtils.java @@ -21,6 +21,7 @@ import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.CircleCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.bumptech.glide.load.resource.gif.GifDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.target.SimpleTarget; @@ -47,86 +48,35 @@ public class ImageLoadUtils { private static final String PIC_PROCESSING = "?imageslim"; private static final String ACCESS_URL = "img.erbanyy.com"; - public static void laodUsrInfoAvatar(Context context, String avatar, ImageView imageView) { - loadCircleImage(context, avatar, imageView, R.drawable.default_avatar); + public static void loadAvatarBig(String avatar, ImageView imageView) { + loadAvatar(imageView.getContext(), avatar, imageView, R.drawable.default_avatar); } - - public static void loadAvatar(Context context, String avatar, ImageView imageView, boolean isCircle) { - if (StringUtil.isEmpty(avatar)) { - loadDefaultImage(context, imageView, R.drawable.default_avatar); - return; - } - - StringBuilder sb = new StringBuilder(avatar); - if (avatar.contains(ACCESS_URL)) { - if (!avatar.contains("?")) { - sb.append(PIC_PROCESSING); - } - sb.append("|imageView2/1/w/100/h/100"); - } - if (isCircle) { - loadCircleImage(context, sb.toString(), imageView, R.drawable.default_avatar); - } else { - loadImage(context, sb.toString(), imageView, R.drawable.default_avatar); - } - } - - public static void loadBigAvatar(Context context, String avatar, ImageView imageView, boolean isCircle) { - if (StringUtil.isEmpty(avatar)) { - return; - } - StringBuffer sb = new StringBuffer(avatar); - if (avatar.contains(ACCESS_URL)) { - if (!avatar.contains("?")) { - sb.append(PIC_PROCESSING); - } - sb.append("|imageView2/1/w/150/h/150"); - } - if (isCircle) { - loadCircleImage(context, sb.toString(), imageView, R.drawable.default_avatar); - } else { - loadImage(context, sb.toString(), imageView, R.drawable.default_avatar); - } - } - - public static void loadAvatar(Context context, String avatar, ImageView imageView) { - loadAvatar(context, avatar, imageView, false); - } - public static void loadAvatar(String avatar, ImageView imageView) { - loadAvatar(avatar, imageView, R.drawable.default_avatar); + loadAvatar(imageView.getContext(), avatar, imageView, R.drawable.default_avatar); + } + + public static void loadAvatar(Context context,String avatar, ImageView imageView) { + loadAvatar(context,avatar, imageView, R.drawable.default_avatar); } public static void loadAvatar(String avatar, ImageView imageView, int defaultRes) { - loadAvatar(avatar, imageView, defaultRes, 150); + loadAvatar(imageView.getContext(),avatar,imageView,defaultRes); } - public static void loadAvatarBig(String avatar, ImageView imageView) { - loadAvatarBig(avatar, imageView, R.drawable.default_avatar); - } - - public static void loadAvatarBig(String avatar, ImageView imageView, int defaultRes) { - loadAvatar(avatar, imageView, defaultRes, 250); - } - - /** - * do by lvzebiao - * 加载头像通用方法 - */ - public static void loadAvatar(String avatar, ImageView imageView, int defaultRes, int customSize) { - if (avatar == null) { - avatar = ""; + public static void loadAvatar(Context context,String avatar, ImageView imageView, int defaultRes) { + if (TextUtils.isEmpty(avatar) || avatar.equals("null")) return; + if (context == null) return; + if (avatar.endsWith(".gif") || avatar.endsWith(".GIF")) { + ImageLoadUtils.loadCircleImageGif(context, avatar,imageView,defaultRes); + } else { + ImageLoadUtils.loadCircleImage(context, avatar, imageView,defaultRes); } - StringBuilder sb = new StringBuilder(avatar); - if (avatar.contains(ACCESS_URL)) { - if (!avatar.contains("?")) { - sb.append(PIC_PROCESSING); - } - sb.append("|imageView2/1/w/").append(customSize).append("/h/").append(customSize); - } - loadImage(imageView.getContext(), sb.toString(), imageView, defaultRes); } + + + + public static void loadSmallRoundBackground(Context context, String url, ImageView imageView) { if (StringUtil.isEmpty(url)) { return; @@ -370,6 +320,32 @@ public class ImageLoadUtils { .into(imageView); } + public static void loadCircleImageGif(Context context, String url, ImageView imageView, int defaultRes) { + GlideApp.with(context.getApplicationContext()) + .asGif() + .load(url) + .transform(new CircleCrop()) + .placeholder(defaultRes) + .error(defaultRes) + .listener(new RequestListener() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { + imageView.setImageResource(defaultRes); + return true; + } + + @Override + public boolean onResourceReady(GifDrawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { + if (resource != null) { + imageView.setImageDrawable(resource); + resource.start(); + } + return true; + } + }) + .into(imageView); + } + public static void loadBackground(Context context, String url, int defaultRes, View view) { GlideApp.with(context) .asDrawable() diff --git a/app/src/main/java/com/chwl/app/ui/utils/ImageLoadUtilsV2.java b/app/src/main/java/com/chwl/app/ui/utils/ImageLoadUtilsV2.java index 1f2c8603e..908bc149c 100644 --- a/app/src/main/java/com/chwl/app/ui/utils/ImageLoadUtilsV2.java +++ b/app/src/main/java/com/chwl/app/ui/utils/ImageLoadUtilsV2.java @@ -29,14 +29,6 @@ public class ImageLoadUtilsV2 { small_avatar_size = UIUtil.dip2px(context, 50); } - public static void loadAvatar(ImageView imageView, String url) { - loadImage(imageView, url, small_avatar_size, true, false); - } - - public static void loadAvatar(ImageView imageView, String url, boolean isDontAnim) { - loadImage(imageView, url, small_avatar_size, true, isDontAnim); - } - public static void loadImage(ImageView imageView, String url, int size) { loadImage(imageView, url, size, false, false); } diff --git a/app/src/main/java/com/chwl/app/ui/webview/CommonWebViewActivity.java b/app/src/main/java/com/chwl/app/ui/webview/CommonWebViewActivity.java index 98a122549..601283fc2 100644 --- a/app/src/main/java/com/chwl/app/ui/webview/CommonWebViewActivity.java +++ b/app/src/main/java/com/chwl/app/ui/webview/CommonWebViewActivity.java @@ -190,9 +190,9 @@ public class CommonWebViewActivity extends BaseActivity { webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setDomStorageEnabled(true); - webView.getSettings().setDatabaseEnabled(true); - webView.getSettings().setMediaPlaybackRequiresUserGesture(true); - webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); + webView.getSettings().setDatabaseEnabled(true); //新接入h5游戏需要的设置 + webView.getSettings().setMediaPlaybackRequiresUserGesture(false); //新接入h5游戏需要的设置 + webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); //新接入h5游戏需要的设置 // 设置 WebView 可以在 HTTPS 通道上加载 HTTP 资源,Android 4.4 后的暗坑 // 因为 Android 4.4 后默认不允许在 HTTPS 通道上加载 HTTP 资源 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { diff --git a/app/src/main/java/com/chwl/app/ui/widget/GiftAvatarAdapter.java b/app/src/main/java/com/chwl/app/ui/widget/GiftAvatarAdapter.java index 32c0fe298..399b0bcd5 100644 --- a/app/src/main/java/com/chwl/app/ui/widget/GiftAvatarAdapter.java +++ b/app/src/main/java/com/chwl/app/ui/widget/GiftAvatarAdapter.java @@ -95,7 +95,7 @@ public class GiftAvatarAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/res/layout/activity_room_setting.xml b/app/src/main/res/layout/activity_room_setting.xml index 39350f21f..327a4ed4a 100644 --- a/app/src/main/res/layout/activity_room_setting.xml +++ b/app/src/main/res/layout/activity_room_setting.xml @@ -149,6 +149,41 @@ android:layout_height="@dimen/dp_10" android:background="@color/line_353548" /> + + + + + + + + + + - - - - + app:layout_constraintTop_toTopOf="@id/ivHeadWearCp" /> + android:visibility="gone" + tools:visibility="visible"> - - - - - - diff --git a/app/src/main/res/layout/nim_recent_contact_team_list_item.xml b/app/src/main/res/layout/nim_recent_contact_team_list_item.xml index 3be99c482..776918d03 100644 --- a/app/src/main/res/layout/nim_recent_contact_team_list_item.xml +++ b/app/src/main/res/layout/nim_recent_contact_team_list_item.xml @@ -17,16 +17,14 @@ android:id="@+id/img_head" android:layout_width="55dp" android:layout_height="55dp" - android:layout_centerVertical="true" - android:layout_alignParentStart="true" + android:layout_centerInParent="true" tools:src="@drawable/default_avatar" /> You turned off the music and the mic. + roomAvatar + + diff --git a/app/src/module_community/java/com/chwl/app/community/dynamic/adapter/CommentAdapter.java b/app/src/module_community/java/com/chwl/app/community/dynamic/adapter/CommentAdapter.java index ba669476d..13137fe52 100644 --- a/app/src/module_community/java/com/chwl/app/community/dynamic/adapter/CommentAdapter.java +++ b/app/src/module_community/java/com/chwl/app/community/dynamic/adapter/CommentAdapter.java @@ -11,6 +11,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.chwl.app.R; import com.chwl.app.UIHelper; +import com.chwl.app.ui.utils.ImageLoadUtils; import com.chwl.app.ui.utils.ImageLoadUtilsV2; import com.chwl.app.utils.RegexUtil; import com.chwl.app.utils.TimeUiUtils; @@ -32,7 +33,7 @@ public class CommentAdapter extends BaseQuickAdapter { @Override protected void convert(BaseViewHolder helper, Comment item) { - ImageLoadUtilsV2.loadAvatar(helper.getView(R.id.iv_avatar), item.getAvatar()); + ImageLoadUtils.loadAvatar( item.getAvatar(),helper.getView(R.id.iv_avatar)); TextView tvNick = helper.getView(R.id.tv_nick); tvNick.setText(RegexUtil.getPrintableString(item.getNick())); VipHelper.loadVipIcon(helper.getView(R.id.iv_vip_icon), item.getUserVipInfoVO()); diff --git a/app/src/module_community/java/com/chwl/app/community/dynamic/adapter/CommentReplyAdapter.java b/app/src/module_community/java/com/chwl/app/community/dynamic/adapter/CommentReplyAdapter.java index 894498387..d6f64c25d 100644 --- a/app/src/module_community/java/com/chwl/app/community/dynamic/adapter/CommentReplyAdapter.java +++ b/app/src/module_community/java/com/chwl/app/community/dynamic/adapter/CommentReplyAdapter.java @@ -8,6 +8,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.chwl.app.R; import com.chwl.app.UIHelper; +import com.chwl.app.ui.utils.ImageLoadUtils; import com.chwl.app.ui.utils.ImageLoadUtilsV2; import com.chwl.app.utils.RegexUtil; import com.chwl.app.utils.SpannableBuilder; @@ -30,7 +31,7 @@ public class CommentReplyAdapter extends BaseQuickAdapter @Override protected void convert(BaseViewHolder helper, Reply item) { - ImageLoadUtilsV2.loadAvatar(helper.getView(R.id.iv_avatar), item.getAvatar(), true); + ImageLoadUtils.loadAvatar(item.getAvatar(),helper.getView(R.id.iv_avatar)); TextView tvNick = helper.getView(R.id.tv_nick); tvNick.setText(RegexUtil.getPrintableString(item.getNick())); VipHelper.loadVipIcon(helper.getView(R.id.iv_vip_icon), item.getUserVipInfoVO()); diff --git a/app/src/module_community/java/com/chwl/app/community/dynamic/view/DynamicDetailActivity.java b/app/src/module_community/java/com/chwl/app/community/dynamic/view/DynamicDetailActivity.java index cacb7aaba..71961532f 100644 --- a/app/src/module_community/java/com/chwl/app/community/dynamic/view/DynamicDetailActivity.java +++ b/app/src/module_community/java/com/chwl/app/community/dynamic/view/DynamicDetailActivity.java @@ -23,6 +23,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.chwl.app.photo.BigPhotoActivity; import com.chwl.app.photo.PagerOption; +import com.chwl.app.ui.utils.ImageLoadUtils; import com.chwl.app.utils.AvatarHelper; import com.chwl.library.widget.SVGAView; import com.chwl.core.XConstants; @@ -654,7 +655,7 @@ public class DynamicDetailActivity extends BaseViewBindingActivity - - + app:layout_constraintTop_toTopOf="parent" /> if (item == null) return; - ImageLoadUtils.loadAvatar(mContext, item.getAvatar(), helper.getView(R.id.iv_avatar), true); + ImageLoadUtils.loadAvatar(mContext, item.getAvatar(), helper.getView(R.id.iv_avatar)); helper.setText(R.id.tv_row_num, item.getRowNum()); String nick = item.getNick(); diff --git a/app/src/module_labour_union/java/com/chwl/app/module_hall/income/adapter/LiveIncomeAdapter.java b/app/src/module_labour_union/java/com/chwl/app/module_hall/income/adapter/LiveIncomeAdapter.java index 3c1f3ef76..a3eea3d70 100644 --- a/app/src/module_labour_union/java/com/chwl/app/module_hall/income/adapter/LiveIncomeAdapter.java +++ b/app/src/module_labour_union/java/com/chwl/app/module_hall/income/adapter/LiveIncomeAdapter.java @@ -28,7 +28,7 @@ public class LiveIncomeAdapter extends BaseQuickAdapter - updateRoomInfo(String title, + String avatar, String desc, String introduction, String pwd, @@ -97,7 +98,7 @@ public class RoomSettingModel extends BaseMvpModel { boolean isPureMode, int type, long gameId) { - return updateRoomInfo(title, desc, introduction, pwd, label, tagId, uid, ticket, hasEffect, audio, limitType, isPureMode, type, gameId, null); + return updateRoomInfo(title,avatar, desc, introduction, pwd, label, tagId, uid, ticket, hasEffect, audio, limitType, isPureMode, type, gameId, null); } /** @@ -110,6 +111,7 @@ public class RoomSettingModel extends BaseMvpModel { * @param tagId 标签id */ public Single updateRoomInfo(String title, + String avatar, String desc, String introduction, String pwd, @@ -124,7 +126,7 @@ public class RoomSettingModel extends BaseMvpModel { int type, long gameId, Long singleRoomSortId) { - return mRoomSettingService.updateRoomInfo(title, desc, introduction, pwd, label, tagId, uid, hasEffect, audio, limitType, isPureMode, type, gameId, singleRoomSortId) + return mRoomSettingService.updateRoomInfo(title, avatar,desc, introduction, pwd, label, tagId, uid, hasEffect, audio, limitType, isPureMode, type, gameId, singleRoomSortId) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .onErrorResumeNext(this.getSingleCommonExceptionFunction()) @@ -159,9 +161,9 @@ public class RoomSettingModel extends BaseMvpModel { * @param label 标签名字 * @param tagId 标签id */ - public Single updateByAdmin(long roomUid, String title, String desc, String introduction, String pwd, String label, + public Single updateByAdmin(long roomUid, String title,String avatar, String desc, String introduction, String pwd, String label, int tagId, long uid, String ticket, boolean hasEffect, int audio, boolean isPureMode) { - return mRoomSettingService.updateByAdmin(roomUid, title, desc, introduction, pwd, label, tagId, uid, hasEffect, audio, isPureMode) + return mRoomSettingService.updateByAdmin(roomUid, title,avatar,desc, introduction, pwd, label, tagId, uid, hasEffect, audio, isPureMode) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .onErrorResumeNext(this.getSingleCommonExceptionFunction()) @@ -288,10 +290,14 @@ public class RoomSettingModel extends BaseMvpModel { */ @FormUrlEncoded @POST("room/update") - Single> updateRoomInfo(@Field("title") String title, @Field("roomDesc") String desc, + Single> updateRoomInfo(@Field("title") String title, + @Field("avatar") String avatar, + @Field("roomDesc") String desc, @Field("introduction") String introduction, - @Field("roomPwd") String pwd, @Field("roomTag") String label, - @Field("tagId") int tagId, @Field("uid") long uid, + @Field("roomPwd") String pwd, + @Field("roomTag") String label, + @Field("tagId") int tagId, + @Field("uid") long uid, @Field("hasAnimationEffect") boolean hasAnimationEffect, @Field("audioQuality") int audioQuality, @Field("limitType") String limitType, @@ -319,11 +325,14 @@ public class RoomSettingModel extends BaseMvpModel { */ @FormUrlEncoded @POST("room/updateByAdmin") - Single> updateByAdmin(@Field("roomUid") long roomUid, @Field("title") String title, + Single> updateByAdmin(@Field("roomUid") long roomUid, + @Field("title") String title, + @Field("avatar") String avatar, @Field("roomDesc") String desc, @Field("introduction") String introduction, @Field("roomPwd") String pwd, - @Field("roomTag") String label, @Field("tagId") int tagId, + @Field("roomTag") String label, + @Field("tagId") int tagId, @Field("uid") long uid, @Field("hasAnimationEffect") boolean hasAnimationEffect, @Field("audioQuality") int audioQuality, diff --git a/core/src/main/java/com/chwl/core/user/IUserModel.java b/core/src/main/java/com/chwl/core/user/IUserModel.java index 4a7271a9b..2e942ec25 100644 --- a/core/src/main/java/com/chwl/core/user/IUserModel.java +++ b/core/src/main/java/com/chwl/core/user/IUserModel.java @@ -254,4 +254,8 @@ public interface IUserModel extends IModel { boolean isSamePartition(long partitionId); long getPartitionId(); + + boolean isArUser(); + boolean isTWUser(); + boolean isEnUser(); } diff --git a/core/src/main/java/com/chwl/core/user/UserModel.java b/core/src/main/java/com/chwl/core/user/UserModel.java index f2688de22..3ae1244e7 100644 --- a/core/src/main/java/com/chwl/core/user/UserModel.java +++ b/core/src/main/java/com/chwl/core/user/UserModel.java @@ -900,6 +900,24 @@ public final class UserModel extends BaseModel implements IUserModel { // 2是 阿拉伯 return currentUserInfo.partitionId == 2; } + //是否是华语用户 + public boolean isTWUser(){ + if (currentUserInfo == null) { + return false; + } + // 4 是 华语用户 + return currentUserInfo.partitionId == 4; + } + //是否是英文用户 + public boolean isEnUser(){ + if (currentUserInfo == null) { + return false; + } + // 1 是 英文用户 + return currentUserInfo.partitionId == 1; + } + + private interface Api { /** diff --git a/core/src/main/java/com/chwl/core/utils/MyUriUtils.kt b/core/src/main/java/com/chwl/core/utils/MyUriUtils.kt index 67a0e5dd0..ee4fe8636 100644 --- a/core/src/main/java/com/chwl/core/utils/MyUriUtils.kt +++ b/core/src/main/java/com/chwl/core/utils/MyUriUtils.kt @@ -52,6 +52,17 @@ object MyUriUtils { } + fun copyFileToUrl(context: Context, uri: Uri,outUri:Uri) : Boolean{ + val contentResolver = context.contentResolver + contentResolver?.openInputStream(uri)?.use { uriStream -> + contentResolver?.openOutputStream(outUri,"wt")?.use { outStream-> + uriStream.copyTo(outStream) + return true + } + } + return false + } + fun getFileInfo(file: File) : MutableList?{ var width = 0 var height = 0 diff --git a/library/src/module_easyphoto/java/com/chwl/library/easyphoto/builder/AlbumBuilder.java b/library/src/module_easyphoto/java/com/chwl/library/easyphoto/builder/AlbumBuilder.java index 9dd7b05d8..a2c5912bd 100644 --- a/library/src/module_easyphoto/java/com/chwl/library/easyphoto/builder/AlbumBuilder.java +++ b/library/src/module_easyphoto/java/com/chwl/library/easyphoto/builder/AlbumBuilder.java @@ -367,6 +367,10 @@ public class AlbumBuilder { return filter(Type.VIDEO); } + public AlbumBuilder onlyGif() { + return filter(Type.GIF); + } + /** * 过滤 * diff --git a/nim_uikit/src/com/netease/nim/uikit/common/ui/imageview/HeadImageView.java b/nim_uikit/src/com/netease/nim/uikit/common/ui/imageview/HeadImageView.java index 872f9b995..aeb9f4749 100644 --- a/nim_uikit/src/com/netease/nim/uikit/common/ui/imageview/HeadImageView.java +++ b/nim_uikit/src/com/netease/nim/uikit/common/ui/imageview/HeadImageView.java @@ -1,13 +1,23 @@ package com.netease.nim.uikit.common.ui.imageview; +import android.annotation.SuppressLint; import android.content.Context; import android.text.TextUtils; import android.util.AttributeSet; +import android.widget.ImageView; + +import androidx.annotation.Nullable; import com.bumptech.glide.Glide; +import com.bumptech.glide.load.DataSource; +import com.bumptech.glide.load.engine.GlideException; +import com.bumptech.glide.load.resource.gif.GifDrawable; +import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; +import com.bumptech.glide.request.target.Target; import com.netease.nim.uikit.R; import com.netease.nim.uikit.api.NimUIKit; +import com.netease.nim.uikit.support.glide.GlideApp; import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum; import com.netease.nimlib.sdk.msg.model.IMMessage; import com.netease.nimlib.sdk.robot.model.RobotAttachment; @@ -17,7 +27,7 @@ import com.netease.nimlib.sdk.uinfo.model.UserInfo; /** * Created by huangjun on 2015/11/13. */ -public class HeadImageView extends CircleImageView { +public class HeadImageView extends androidx.appcompat.widget.AppCompatImageView { private static final String PIC_PROCESSING = "?imageslim"; private static final String ACCESS_URL = "img.erbanyy.com"; @@ -88,16 +98,43 @@ public class HeadImageView extends CircleImageView { * 若使用网易云信云存储,这里可以设置下载图片的压缩尺寸,生成下载URL * 如果图片来源是非网易云信云存储,请不要使用NosThumbImageUtil */ - final String thumbUrl = makeAvatarThumbNosUrl(url, thumbSize); - RequestOptions requestOptions = new RequestOptions() - .centerCrop() - .placeholder(defaultResId) - .error(defaultResId) - .override(thumbSize, thumbSize); - Glide.with(getContext().getApplicationContext()).asBitmap() - .load(thumbUrl) - .apply(requestOptions) - .into(this); + if (url != null && !TextUtils.isEmpty(url)){ + final String thumbUrl = makeAvatarThumbNosUrl(url, thumbSize); + RequestOptions requestOptions = new RequestOptions() + .circleCrop() + .placeholder(defaultResId) + .error(defaultResId) + .override(thumbSize, thumbSize); + + if (url.endsWith(".gif") || url.endsWith(".Gif")) { + GlideApp.with(getContext().getApplicationContext()).asGif() + .load(thumbUrl) + .apply(requestOptions) + .listener(new RequestListener() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { + HeadImageView.this.setImageResource(defaultResId); + return true; + } + + @Override + public boolean onResourceReady(GifDrawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { + if (resource != null) { + HeadImageView.this.setImageDrawable(resource); + resource.start(); + } + return true; + } + }) + .into(this); + } else { + Glide.with(getContext().getApplicationContext()).asBitmap() + .load(thumbUrl) + .apply(requestOptions) + .into(this); + } + } + } /**