Explorar o código

新增群聊设置背景聊天图片的功能

jixionghui %!s(int64=4) %!d(string=hai) anos
pai
achega
d67ff06214

+ 48 - 1
jixin/src/main/java/com/jixin/im/fragment/MucChatFragment.java

@@ -103,6 +103,7 @@ import com.jixin.im.db.dao.RoomMemberDao;
 import com.jixin.im.db.dao.VideoFileDao;
 import com.jixin.im.downloader.Downloader;
 import com.jixin.im.helper.DialogHelper;
+import com.jixin.im.helper.ImageLoadHelper;
 import com.jixin.im.helper.LoginSecureHelper;
 import com.jixin.im.helper.PrivacySettingHelper;
 import com.jixin.im.helper.ScheduleHelper;
@@ -204,6 +205,7 @@ import de.greenrobot.event.ThreadMode;
 import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer;
 import okhttp3.Call;
 import okhttp3.ResponseBody;
+import pl.droidsonroids.gif.GifDrawable;
 import retrofit2.Callback;
 import retrofit2.Response;
 import top.zibin.luban.Luban;
@@ -450,7 +452,12 @@ public class MucChatFragment extends EasyFragment implements
                 }
                 getMyInfoInThisRoom();
             } else if (action.equals(OtherBroadcast.QC_FINISH)) {
-                finish();
+                int mOperationCode = intent.getIntExtra("Operation_Code", 0);
+                if (mOperationCode == 1) {// 更换聊天背景成功 更新当前页面
+                    loadBackdrop();
+                } else {// 快速创建群组成功 关闭当前页面
+                    finish();
+                }
             } else if (action.equals(OtherBroadcast.REFRESH_WELFARE_INFO)) {
                 //表头推送
                 if (lottery == 1) {
@@ -465,6 +472,46 @@ public class MucChatFragment extends EasyFragment implements
             }
         }
     };
+
+    public void loadBackdrop() {
+        String mChatBgPath = PreferenceUtils.getString(getActivity(), Constants.SET_CHAT_BACKGROUND_PATH
+                + mFriend.getRoomId() + mLoginUserId, "reset");
+
+        String mChatBg = PreferenceUtils.getString(getActivity(), Constants.SET_CHAT_BACKGROUND
+                + mFriend.getRoomId() + mLoginUserId, "reset");
+
+        if (TextUtils.isEmpty(mChatBgPath)
+                || mChatBg.equals("reset")) {// 未设置聊天背景或者还原了聊天背景
+            mChatBgIv.setImageDrawable(null);
+            return;
+        }
+
+        File file = new File(mChatBgPath);
+        if (file.exists()) {// 加载本地
+            if (mChatBgPath.toLowerCase().endsWith("gif")) {
+                try {
+                    GifDrawable gifDrawable = new GifDrawable(file);
+                    mChatBgIv.setImageDrawable(gifDrawable);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            } else {
+                ImageLoadHelper.showFileWithError(
+                        getActivity(),
+                        file,
+                        R.drawable.fez,
+                        mChatBgIv
+                );
+            }
+        } else {// 加载网络
+            ImageLoadHelper.showImageWithError(
+                    getActivity(),
+                    mChatBg,
+                    R.color.chat_bg,
+                    mChatBgIv
+            );
+        }
+    }
     private CountDownTimer mBaoXiangDownTimer;
     public MediaPlayer mediaPlayer;
     private LinearLayout llWelfareNotice;

+ 4 - 0
jixin/src/main/java/com/jixin/im/ui/base/BaseActivity.java

@@ -2,6 +2,7 @@ package com.jixin.im.ui.base;
 
 import android.content.pm.ActivityInfo;
 import android.os.Bundle;
+import android.os.StrictMode;
 import android.text.TextUtils;
 
 import com.jixin.im.util.LocaleHelper;
@@ -18,6 +19,9 @@ public abstract class BaseActivity extends BaseLoginActivity {
     protected void onCreate(Bundle savedInstanceState) {
         LocaleHelper.setLocale(this, LocaleHelper.getLanguage(this));
         super.onCreate(savedInstanceState);
+        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
+        StrictMode.setVmPolicy(builder.build());
+        builder.detectFileUriExposure();
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);// 竖屏
     }
 

+ 7 - 0
jixin/src/main/java/com/jixin/im/ui/message/multi/RoomInfoActivity.java

@@ -51,6 +51,7 @@ import com.jixin.im.helper.DialogHelper;
 import com.jixin.im.ui.MainActivity;
 import com.jixin.im.ui.base.BaseActivity;
 import com.jixin.im.ui.message.search.SearchChatHistoryActivity;
+import com.jixin.im.ui.message.single.SelectSetTypeActivity;
 import com.jixin.im.ui.mucfile.MucFileListActivity;
 import com.jixin.im.ui.other.BasicInfoActivity;
 import com.jixin.im.ui.other.QRcodeActivity;
@@ -866,6 +867,12 @@ public class RoomInfoActivity extends BaseActivity {
 //                    msgSaveDaysDialog.show();
 //                }
 //            });
+            footer. findViewById(R.id.set_background_rl).setOnClickListener(v -> {
+
+                Intent intentBackground = new Intent(this, SelectSetTypeActivity.class);
+                intentBackground.putExtra(AppConstant.EXTRA_USER_ID, mucRoom.getId());
+                startActivity(intentBackground);
+            });
 
             footer.findViewById(R.id.banned_voice_rl).setOnClickListener(new View.OnClickListener() {
                 @Override

+ 7 - 0
jixin/src/main/java/com/jixin/im/ui/message/single/SelectSetTypeActivity.java

@@ -6,8 +6,11 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
+import android.os.StrictMode;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.View;
 import android.widget.TextView;
 
@@ -119,6 +122,7 @@ public class SelectSetTypeActivity extends BaseActivity implements View.OnClickL
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode,resultCode,data);
         if (requestCode == REQUEST_CODE_PICK_PHOTO && resultCode == Activity.RESULT_OK) {
             if (data != null) {
                 ArrayList<String> stringArrayListExtra = data.getStringArrayListExtra(PhotoPickerActivity.EXTRA_RESULT);
@@ -128,6 +132,9 @@ public class SelectSetTypeActivity extends BaseActivity implements View.OnClickL
             }
         } else if (requestCode == REQUEST_CODE_TAKE_PHOTO && resultCode == Activity.RESULT_OK) {
             if (mNewPhotoUri != null) {
+                String path = mNewPhotoUri.getPath();
+                Log.e("wanglaoji",path);
+
                 SetChatBackActivity.start(mContext, mFriendId, mNewPhotoUri.getPath());
             } else {
                 ToastUtil.showToast(this, R.string.c_take_picture_failed);

+ 7 - 7
jixin/src/main/res/layout/activity_person_setting.xml

@@ -104,7 +104,7 @@
 
             <RelativeLayout
                 android:id="@+id/label_rl"
-                android:visibility="gone"
+                android:visibility="visible"
 
                 style="@style/IMTble_No_Line">
 
@@ -150,7 +150,7 @@
 
             <RelativeLayout
                 android:id="@+id/chat_history_search"
-                android:visibility="gone"
+                android:visibility="visible"
                 style="@style/IMTble_No_Line"
                 android:layout_marginTop="15dp">
 
@@ -174,7 +174,7 @@
 
             <RelativeLayout
                 android:id="@+id/rl_transfer"
-                android:visibility="gone"
+                android:visibility="visible"
                 style="@style/IMTble_No_Line">
 
                 <View
@@ -202,7 +202,7 @@
 
             <RelativeLayout
                 style="@style/IMTble_No_Line"
-                android:visibility="gone"
+                android:visibility="visible"
                 android:layout_marginTop="15dp">
 
                 <TextView
@@ -291,7 +291,7 @@
 
             <RelativeLayout
                 android:id="@+id/msg_save_days_rl"
-                android:visibility="gone"
+                android:visibility="visible"
                 style="@style/IMTble_No_Line"
                 android:layout_marginTop="15dp">
 
@@ -326,7 +326,7 @@
 
             <RelativeLayout
                 android:id="@+id/set_background_rl"
-                android:visibility="gone"
+                android:visibility="visible"
                 style="@style/IMTble_No_Line"
                 android:layout_marginTop="15dp">
 
@@ -366,7 +366,7 @@
 
             <RelativeLayout
                 android:id="@+id/sync_chat_history_empty"
-                android:visibility="gone"
+                android:visibility="visible"
                 style="@style/IMTble_No_Line">
 
                 <View

+ 23 - 0
jixin/src/main/res/layout/activity_room_info_footer.xml

@@ -611,6 +611,29 @@
                 android:layout_centerVertical="true" />
 
         </RelativeLayout>
+        <RelativeLayout
+            android:id="@+id/set_background_rl"
+            android:visibility="visible"
+            style="@style/IMTble_No_Line"
+            android:layout_marginTop="15dp">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:text="@string/chat_background"
+                android:textColor="@color/Grey_800"
+                android:textSize="@dimen/one_level_title" />
+
+            <ImageView
+                style="IMTbleLine_ArrowImg"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:background="@mipmap/right_arrow_icon" />
+
+        </RelativeLayout>
 
         <RelativeLayout
             android:id="@+id/chat_history_empty"

+ 2 - 0
jixin/src/main/res/layout/layout_main_footbar.xml

@@ -42,6 +42,8 @@
         <!--        android:drawableTop="@drawable/tab_group_normal_bg"-->
         <RadioButton
             android:id="@+id/rb_tab_3"
+            android:textStyle="bold"
+            android:textSize="@dimen/sp_16_text_size"
             style="@style/SkMainTabStyle"
             android:text="发现" />