diff --git a/android_crop_lib/build.gradle b/android_crop_lib/build.gradle index ce6b7de3c..2cc1a9fe5 100644 --- a/android_crop_lib/build.gradle +++ b/android_crop_lib/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 diff --git a/app/build.gradle b/app/build.gradle index 91e98ab28..bf9c3bbc4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,7 +10,7 @@ apply plugin: 'android-junk-code' def onlyArm64 = Boolean.parseBoolean(only_arm64) android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { applicationId "com.voice.magic" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 81773d268..5ea8b06fb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -945,11 +945,11 @@ + android:windowSoftInputMode="stateAlwaysHidden|adjustResize" /> + android:windowSoftInputMode="stateAlwaysHidden|adjustNothing" /> diff --git a/app/src/main/java/com/mango/moshen/ui/im/InputPanel.java b/app/src/main/java/com/mango/moshen/ui/im/InputPanel.java index 95753ea20..b74ce2fbd 100644 --- a/app/src/main/java/com/mango/moshen/ui/im/InputPanel.java +++ b/app/src/main/java/com/mango/moshen/ui/im/InputPanel.java @@ -28,12 +28,14 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.alibaba.fastjson.JSONObject; import com.chad.library.adapter.base.BaseQuickAdapter; import com.effective.android.panel.PanelSwitchHelper; +import com.effective.android.panel.interfaces.ContentScrollMeasurer; import com.effective.android.panel.interfaces.PanelHeightMeasurer; import com.effective.android.panel.interfaces.listener.OnPanelChangeListener; import com.effective.android.panel.view.panel.IPanelView; @@ -105,6 +107,8 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba private static final int SHOW_LAYOUT_DELAY = 0; private final List selectPhotos = new ArrayList<>(); + private final boolean inRoom; + private int unfilledHeight = 0; protected Container container; protected View view; protected Handler uiHandler; @@ -130,7 +134,6 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba private boolean cancelled = false; private boolean touched = false; // 是否按着 private boolean isKeyboardShowed = false; // 是否显示键盘 - private boolean isTextAudioSwitchShow; // 是否展示左侧语音按钮 // adapter private List actions; // data @@ -220,19 +223,15 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba } }; - public InputPanel(Container container, View view, List actions, boolean isTextAudioSwitchShow) { + public InputPanel(Container container, View view, List actions, boolean inRoom) { this.container = container; this.view = view; this.actions = actions; this.uiHandler = new Handler(); - this.isTextAudioSwitchShow = isTextAudioSwitchShow; + this.inRoom = inRoom; init(); } - public InputPanel(Container container, View view, List actions) { - this(container, view, actions, true); - } - // 上滑取消录音判断 private static boolean isCancelled(View view, MotionEvent event) { int[] location = new int[2]; @@ -348,9 +347,39 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba return R.id.emoji_button; } }) + .addContentScrollMeasurer(new ContentScrollMeasurer() { + @Override + public int getScrollDistance(int defaultDistance) { + return defaultDistance - unfilledHeight; + } + + @Override + public int getScrollViewId() { + return R.id.messageListView; + } + }) .logTrack(false)//output log .build(); messageListView.setPanelSwitchHelper(mHelper); + messageListView.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); + if (layoutManager instanceof LinearLayoutManager) { + int childCount = recyclerView.getChildCount(); + if (childCount > 0) { + View lastChildView = recyclerView.getChildAt(childCount - 1); + int bottom = lastChildView.getBottom(); + int listHeight = messageListView.getHeight() - messageListView.getPaddingBottom(); + unfilledHeight = listHeight - bottom; + } + } + } + }); + if (inRoom) { + container.activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + } } } @@ -446,12 +475,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba // 文本录音按钮切换布局 textAudioSwitchLayout = view.findViewById(R.id.switchLayout); - if (isTextAudioSwitchShow) { - textAudioSwitchLayout.setVisibility(View.VISIBLE); - } else { - textAudioSwitchLayout.setVisibility(View.GONE); - } - + textAudioSwitchLayout.setVisibility(View.GONE); messageListView = view.findViewById(R.id.messageListView); ivImage = view.findViewById(R.id.iv_image); ivCamera = view.findViewById(R.id.iv_camera); @@ -537,15 +561,12 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba }); // 不展示右侧按钮时需要添加edit间距 - if (!isTextAudioSwitchShow) { - try { - ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) messageEditText.getLayoutParams(); - layoutParams.setMarginStart(SizeUtils.dp2px(view.getContext(), 12)); - messageEditText.requestLayout(); - } catch (Exception ex) { - ex.printStackTrace(); - } - + try { + ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) messageEditText.getLayoutParams(); + layoutParams.setMarginStart(SizeUtils.dp2px(view.getContext(), 12)); + messageEditText.requestLayout(); + } catch (Exception ex) { + ex.printStackTrace(); } } diff --git a/app/src/main/java/com/mango/moshen/ui/im/fragment/MessageFragment.java b/app/src/main/java/com/mango/moshen/ui/im/fragment/MessageFragment.java index 04b717abd..6af4e76f2 100644 --- a/app/src/main/java/com/mango/moshen/ui/im/fragment/MessageFragment.java +++ b/app/src/main/java/com/mango/moshen/ui/im/fragment/MessageFragment.java @@ -18,6 +18,7 @@ import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import com.mango.core.UriProvider; @@ -131,6 +132,14 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi } }; + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments()!=null){ + inRoom =getArguments().getBoolean(IN_ROOM); + } + } + @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); @@ -219,7 +228,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi } if (inputPanel == null) { - inputPanel = new InputPanel(container, rootView, getActionList()); + inputPanel = new InputPanel(container, rootView, getActionList(),inRoom); inputPanel.setCustomization(customization); inputPanel.setLimitLevel(isChat, hintText); } else { diff --git a/app/src/main/java/com/mango/moshen/ui/webview/JSInterface.java b/app/src/main/java/com/mango/moshen/ui/webview/JSInterface.java index 655bd4e91..38b6bf263 100644 --- a/app/src/main/java/com/mango/moshen/ui/webview/JSInterface.java +++ b/app/src/main/java/com/mango/moshen/ui/webview/JSInterface.java @@ -548,6 +548,7 @@ public class JSInterface { //拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。 req.path = "pages/index/index?pub_ticket=" + AuthModel.get().getTicket() + "&tarotChargeProdId=" + jsonObject.getString("tarotChargeProdId") + + "&luckyTarotRecordId=" + jsonObject.getString("luckyTarotRecordId") + "&cardList=" + jsonObject.getString("cardList") + "&payType=" + jsonObject.getString("payType") + "&pub_uid=" + AuthModel.get().getCurrentUid() + @@ -558,7 +559,7 @@ public class JSInterface { "&app=" + XChatConstants.APP_MARK; req.miniprogramType = BuildConfig.DEBUG ? WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_TEST : WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版 api.sendReq(req); - TarotPayWebViewActivity.start(mActivity, UriProvider.JAVA_WEB_URL + "yinyou/modules/tarot/payment_result.html?chargeRecordId=" + jsonObject.getString("chargeRecordId")); + TarotPayWebViewActivity.start(mActivity, UriProvider.JAVA_WEB_URL + "yinyou/modules/tarot/payment_result.html?luckyTarotRecordId=" + jsonObject.getString("luckyTarotRecordId")); } /** diff --git a/app/src/main/java/com/mango/moshen/ui/webview/TarotPayWebViewActivity.java b/app/src/main/java/com/mango/moshen/ui/webview/TarotPayWebViewActivity.java index 352f2f56d..ce450bac9 100644 --- a/app/src/main/java/com/mango/moshen/ui/webview/TarotPayWebViewActivity.java +++ b/app/src/main/java/com/mango/moshen/ui/webview/TarotPayWebViewActivity.java @@ -16,7 +16,7 @@ import com.mango.moshen.R; */ public class TarotPayWebViewActivity extends CommonWebViewActivity { - public static void start(Context context, String url ) { + public static void start(Context context, String url) { Intent intent = new Intent(context, TarotPayWebViewActivity.class); intent.putExtra("url", url); context.startActivity(intent); @@ -26,7 +26,7 @@ public class TarotPayWebViewActivity extends CommonWebViewActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setFinishOnTouchOutside(false); - getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,ScreenUtil.dip2px(150)); + getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, ScreenUtil.dip2px(150)); getWindow().setGravity(Gravity.CENTER); layoutTitleBar.setVisibility(View.GONE); } diff --git a/app/src/main/res/values-v31/styles.xml b/app/src/main/res/values-v31/styles.xml new file mode 100644 index 000000000..f8426fd52 --- /dev/null +++ b/app/src/main/res/values-v31/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/app/src/module_room_chat/java/com/mango/moshen/room_chat/activity/RoomMsgActivity.java b/app/src/module_room_chat/java/com/mango/moshen/room_chat/activity/RoomMsgActivity.java index 62e439248..30f232993 100644 --- a/app/src/module_room_chat/java/com/mango/moshen/room_chat/activity/RoomMsgActivity.java +++ b/app/src/module_room_chat/java/com/mango/moshen/room_chat/activity/RoomMsgActivity.java @@ -63,7 +63,7 @@ public class RoomMsgActivity extends BaseActivity implements CarMagicIndicator.O tabInfoList.add(new TabInfo(i, titles[i])); } viewpager.setOffscreenPageLimit(2); - viewpager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager(), getFragment(), titles)); + //viewpager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager(), getFragment(), titles)); viewIndicator.setViewPager(viewpager, titles, this, getFragment()); IMNetEaseManager.get().getChatRoomEventObservable() diff --git a/core/build.gradle b/core/build.gradle index 6965b000b..cd8b0fd9e 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -4,7 +4,7 @@ apply plugin: 'kotlin-android' apply from: '../mob.gradle' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 targetSdkVersion 29 diff --git a/core/src/main/java/com/mango/core/initial/bean/InitInfo.java b/core/src/main/java/com/mango/core/initial/bean/InitInfo.java index dfcd9906f..b4df3ee55 100644 --- a/core/src/main/java/com/mango/core/initial/bean/InitInfo.java +++ b/core/src/main/java/com/mango/core/initial/bean/InitInfo.java @@ -158,5 +158,7 @@ public class InitInfo implements Serializable { private List officialMsgUids; + private List officialAccountUids; + private boolean twelveStarSwitch; } diff --git a/core/src/main/java/com/mango/core/utils/SystemUidUtil.java b/core/src/main/java/com/mango/core/utils/SystemUidUtil.java index 11ac02a1d..62cb920af 100644 --- a/core/src/main/java/com/mango/core/utils/SystemUidUtil.java +++ b/core/src/main/java/com/mango/core/utils/SystemUidUtil.java @@ -17,8 +17,12 @@ public class SystemUidUtil { initInfo.getOfficialMsgUids().contains(uid)) { return true; } - return XChatConstants.SECRETARY_UID.equals(uid) - || XChatConstants.SYSTEM_MESSAGE_UID.equals(uid) - || XChatConstants.MATCH_UID.equals(uid); + + if (initInfo != null && + !ListUtils.isListEmpty(initInfo.getOfficialAccountUids()) && + initInfo.getOfficialAccountUids().contains(uid)) { + return true; + } + return false; } } diff --git a/library/build.gradle b/library/build.gradle index 55a8fab6d..533a34493 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 targetSdkVersion 29