Browse Source

Merge remote-tracking branch 'origin/master'

master
wangxiang 1 year ago
parent
commit
1b84e10d85
  1. 34
      app/src/main/java/com/kanglai/push/ui/activity/FindUsersActivity.java
  2. 4
      app/src/main/java/com/kanglai/push/ui/adapter/DefaultRecyclerAdapter.java
  3. 35
      app/src/main/java/com/kanglai/push/ui/vm/FindUsersViewModel.java
  4. 110
      app/src/main/java/com/kanglai/push/util/SoftKeyboardHelper.java
  5. 2
      app/src/main/res/layout/activity_find_users.xml
  6. 10
      app/src/main/res/layout/item_default.xml

34
app/src/main/java/com/kanglai/push/ui/activity/FindUsersActivity.java

@ -1,7 +1,6 @@
package com.kanglai.push.ui.activity; package com.kanglai.push.ui.activity;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.InputFilter; import android.text.InputFilter;
@ -23,17 +22,14 @@ import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.CacheDiskUtils; import com.blankj.utilcode.util.CacheDiskUtils;
import com.blankj.utilcode.util.CollectionUtils; import com.blankj.utilcode.util.CollectionUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.StringUtils; import com.blankj.utilcode.util.StringUtils;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.dolphin.core.BuildConfig; import com.dolphin.core.BuildConfig;
import com.dolphin.core.base.BaseActivity; import com.dolphin.core.base.BaseActivity;
import com.dolphin.core.util.ToastUtil;
import com.dolphin.core.widget.DefaultItemDecoration; import com.dolphin.core.widget.DefaultItemDecoration;
import com.kanglai.push.BR; import com.kanglai.push.BR;
import com.kanglai.push.R; import com.kanglai.push.R;
import com.kanglai.push.constant.CacheConstant; import com.kanglai.push.constant.CacheConstant;
import com.kanglai.push.constant.CommonConstant;
import com.kanglai.push.databinding.ActivityFindUsersBinding; import com.kanglai.push.databinding.ActivityFindUsersBinding;
import com.kanglai.push.entity.ConcernFan; import com.kanglai.push.entity.ConcernFan;
import com.kanglai.push.entity.LinkEntity; import com.kanglai.push.entity.LinkEntity;
@ -41,15 +37,8 @@ import com.kanglai.push.entity.User;
import com.kanglai.push.ui.adapter.SearchRecyclerAdapter; import com.kanglai.push.ui.adapter.SearchRecyclerAdapter;
import com.kanglai.push.ui.vm.FindUsersViewModel; import com.kanglai.push.ui.vm.FindUsersViewModel;
import com.kanglai.push.util.ViewFilterUtil; import com.kanglai.push.util.ViewFilterUtil;
import com.kongzue.dialogx.dialogs.BottomDialog;
import com.kongzue.dialogx.dialogs.BottomMenu;
import com.kongzue.dialogx.dialogs.FullScreenDialog; import com.kongzue.dialogx.dialogs.FullScreenDialog;
import com.kongzue.dialogx.dialogs.MessageDialog;
import com.kongzue.dialogx.interfaces.OnBindView; import com.kongzue.dialogx.interfaces.OnBindView;
import com.kongzue.dialogx.interfaces.OnDialogButtonClickListener;
import com.kongzue.dialogx.interfaces.OnMenuItemClickListener;
import java.util.List;
/** /**
* 查找各类用户 * 查找各类用户
@ -68,7 +57,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
public RecyclerView mRecyclerView; public RecyclerView mRecyclerView;
public SearchRecyclerAdapter mAdapter; public SearchRecyclerAdapter mAdapter;
public View underline;
public RelativeLayout user_search_btn; // 用户名点击搜索按钮 public RelativeLayout user_search_btn; // 用户名点击搜索按钮
public TextView tv_val_user; public TextView tv_val_user;
@ -105,7 +93,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
tv_val_user = findViewById(R.id.tv_val_user); tv_val_user = findViewById(R.id.tv_val_user);
firm_search_btn = findViewById(R.id.rl_btn_firm); // 触发公司搜索 firm_search_btn = findViewById(R.id.rl_btn_firm); // 触发公司搜索
tv_val_firm = findViewById(R.id.tv_val_firm); tv_val_firm = findViewById(R.id.tv_val_firm);
underline = findViewById(R.id.underline); // 搜索结果下划线
User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR); User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR);
if (user != null) tv_name.setText("当前登录账号:" + user.getNickName()); if (user != null) tv_name.setText("当前登录账号:" + user.getNickName());
@ -118,7 +105,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
mAdapter = searchRecyclerAdapter; mAdapter = searchRecyclerAdapter;
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this); RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.addItemDecoration(new DefaultItemDecoration(ContextCompat.getColor(this,R.color.common_divider_color)));
mRecyclerView.setAdapter(mAdapter); mRecyclerView.setAdapter(mAdapter);
/** 文字搜索框修改事件 */ /** 文字搜索框修改事件 */
@ -170,7 +156,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
@Override @Override
public void onClick(View view) { public void onClick(View view) {
/** 用户点击搜索 */ /** 用户点击搜索 */
mAdapter.empty(); // 清空数据
mViewModel.filterUser(ed_search.getText()); mViewModel.filterUser(ed_search.getText());
user_search_btn.setVisibility(View.GONE); user_search_btn.setVisibility(View.GONE);
firm_search_btn.setVisibility(View.GONE); firm_search_btn.setVisibility(View.GONE);
@ -187,12 +172,13 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
}); });
mDialog = FullScreenDialog.build(); mDialog = FullScreenDialog.build();
} }
/** 通过全屏对话框 来展示目标用户数据 */ /** 通过全屏对话框 来展示目标用户数据 */
@Override @Override
public void onItemViewClicked(LinkEntity item) { public void onItemViewClicked(LinkEntity item) {
hideSoftKeyboard(); hideKeyboard();
mDialog.show(new OnBindView<FullScreenDialog>(R.layout.item_full_dialog_fans) { mDialog.show(new OnBindView<FullScreenDialog>(R.layout.item_full_dialog_fans) {
@Override @Override
public void onBind(FullScreenDialog dialog, View v) { public void onBind(FullScreenDialog dialog, View v) {
@ -222,7 +208,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
text01.setText(item.getDetailedAddress()); text01.setText(item.getDetailedAddress());
text02.setVisibility(View.GONE); text02.setVisibility(View.GONE);
button01.setVisibility(View.GONE); button01.setVisibility(View.GONE);
// button01.setOnClickListener(view -> mViewModel.attentionFrim(item.getId()));
}else { // 用户 }else { // 用户
name.setText(item.getNikeName()+"【"+ item.getName() +"】"); name.setText(item.getNikeName()+"【"+ item.getName() +"】");
text01.setText("所属部门:"+item.getDeptName()); text01.setText("所属部门:"+item.getDeptName());
@ -251,16 +236,11 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
} }
} }
/** /**隐藏键盘 */
* 隐藏软键盘 public void hideKeyboard() {
*/ InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
private void hideSoftKeyboard() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
View currentFocusView = getCurrentFocus(); View currentFocusView = getCurrentFocus();
if (currentFocusView != null) { if (currentFocusView != null) imm.hideSoftInputFromWindow(currentFocusView.getWindowToken(), 0);
imm.hideSoftInputFromWindow(currentFocusView.getWindowToken(), 0); else imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
} else {
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
}
} }
} }

4
app/src/main/java/com/kanglai/push/ui/adapter/DefaultRecyclerAdapter.java

@ -11,6 +11,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ObjectUtils; import com.blankj.utilcode.util.ObjectUtils;
import com.kanglai.push.R; import com.kanglai.push.R;
@ -46,6 +47,7 @@ public class DefaultRecyclerAdapter extends RecyclerView.Adapter<DefaultRecycler
public TextView detailLabel; public TextView detailLabel;
public TextView secondDetailLabel; public TextView secondDetailLabel;
public ImageView disclosureImage; public ImageView disclosureImage;
public View underline;
public ViewHolder(@NonNull View v) { public ViewHolder(@NonNull View v) {
super(v); super(v);
@ -57,6 +59,7 @@ public class DefaultRecyclerAdapter extends RecyclerView.Adapter<DefaultRecycler
detailLabel = v.findViewById(R.id.detail_label); // 第二个值 detailLabel = v.findViewById(R.id.detail_label); // 第二个值
secondDetailLabel = v.findViewById(R.id.second_detail_label); // 第三个值 secondDetailLabel = v.findViewById(R.id.second_detail_label); // 第三个值
disclosureImage = v.findViewById(R.id.disclosure_image); disclosureImage = v.findViewById(R.id.disclosure_image);
underline = v.findViewById(R.id.default_underline);
} }
} }
@ -95,6 +98,7 @@ public class DefaultRecyclerAdapter extends RecyclerView.Adapter<DefaultRecycler
viewHolder.leftBadge.setImageResource(defaultBadge); viewHolder.leftBadge.setImageResource(defaultBadge);
} }
if (position == getItemCount() - 1) viewHolder.underline.setVisibility(View.GONE);
viewHolder.disclosureImage.setVisibility(hideDisclosure? View.GONE: View.VISIBLE); viewHolder.disclosureImage.setVisibility(hideDisclosure? View.GONE: View.VISIBLE);
viewHolder.layoutLeft .setVisibility(hideLeftImage ? View.GONE: View.VISIBLE); viewHolder.layoutLeft .setVisibility(hideLeftImage ? View.GONE: View.VISIBLE);
} }

35
app/src/main/java/com/kanglai/push/ui/vm/FindUsersViewModel.java

@ -1,6 +1,7 @@
package com.kanglai.push.ui.vm; package com.kanglai.push.ui.vm;
import android.app.Application; import android.app.Application;
import android.os.Handler;
import android.text.Editable; import android.text.Editable;
import android.util.Pair; import android.util.Pair;
import android.view.View; import android.view.View;
@ -27,6 +28,7 @@ import com.kanglai.push.entity.User;
import com.kanglai.push.service.LinkService; import com.kanglai.push.service.LinkService;
import com.kanglai.push.ui.activity.FindUsersActivity; import com.kanglai.push.ui.activity.FindUsersActivity;
import com.kongzue.dialogx.dialogs.FullScreenDialog; import com.kongzue.dialogx.dialogs.FullScreenDialog;
import com.kongzue.dialogx.dialogs.WaitDialog;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -65,7 +67,8 @@ public class FindUsersViewModel extends ToolbarViewModel<FindUsersActivity> {
/** 加载用户列表数据 */ /** 加载用户列表数据 */
public void loadUserList(){ public void loadUserList(){
linkService.getFriendList(MapUtils.newHashMap()) linkService.getFriendList(
MapUtils.newHashMap(Pair.create("size","999")))
.compose(RxUtil.schedulersTransformer()) .compose(RxUtil.schedulersTransformer())
.compose(RxUtil.exceptionTransformer()) .compose(RxUtil.exceptionTransformer())
.doOnSubscribe(this) .doOnSubscribe(this)
@ -91,7 +94,7 @@ public class FindUsersViewModel extends ToolbarViewModel<FindUsersActivity> {
} }
/** 加载公司列表 */ /** 加载公司列表 */
public void loadFirmList(){ public void loadFirmList(){
linkService.getEnterpriseList(MapUtils.newHashMap()) linkService.getEnterpriseList(MapUtils.newHashMap(Pair.create("size","999")))
.compose(RxUtil.schedulersTransformer()) .compose(RxUtil.schedulersTransformer())
.compose(RxUtil.exceptionTransformer()) .compose(RxUtil.exceptionTransformer())
.doOnSubscribe(this) .doOnSubscribe(this)
@ -145,7 +148,15 @@ public class FindUsersViewModel extends ToolbarViewModel<FindUsersActivity> {
protected void publishResults(CharSequence charSequence, FilterResults results) { protected void publishResults(CharSequence charSequence, FilterResults results) {
ArrayList<LinkEntity> linkArrayList = (ArrayList<LinkEntity>) results.values; ArrayList<LinkEntity> linkArrayList = (ArrayList<LinkEntity>) results.values;
if (linkArrayList.size() != 0) { if (linkArrayList.size() != 0) {
mActivity.mAdapter.refresh(linkArrayList); mActivity.hideKeyboard();
WaitDialog.show(" ");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
WaitDialog.dismiss();
mActivity.mAdapter.refresh(linkArrayList);
}
},800);
}else ToastUtil.showCenter("未找到与[ " + charSequence + " ]相类似的用户"); }else ToastUtil.showCenter("未找到与[ " + charSequence + " ]相类似的用户");
} }
}; };
@ -170,19 +181,19 @@ public class FindUsersViewModel extends ToolbarViewModel<FindUsersActivity> {
protected void publishResults(CharSequence charSequence, FilterResults filterResults) { protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
ArrayList<LinkEntity> linkArrayList = (ArrayList<LinkEntity>) filterResults.values; ArrayList<LinkEntity> linkArrayList = (ArrayList<LinkEntity>) filterResults.values;
if (linkArrayList.size() != 0) { if (linkArrayList.size() != 0) {
mActivity.mAdapter.refresh(linkArrayList); mActivity.hideKeyboard();
WaitDialog.show(" ");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
WaitDialog.dismiss();
mActivity.mAdapter.refresh(linkArrayList);
}
},800);
}else ToastUtil.showCenter("未找到与[ " + charSequence + " ]相类似的企业"); }else ToastUtil.showCenter("未找到与[ " + charSequence + " ]相类似的企业");
} }
}; };
/**
* 关注企业
* todo 暂时没有业务需求
*
* @param id
*/
public void attentionFrim(String id) {
}
/** 关注好友 */ /** 关注好友 */
public void attentionUser(String id, FullScreenDialog dialog) { public void attentionUser(String id, FullScreenDialog dialog) {

110
app/src/main/java/com/kanglai/push/util/SoftKeyboardHelper.java

@ -0,0 +1,110 @@
package com.kanglai.push.util;
import android.content.Context;
import android.content.res.Configuration;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import com.blankj.utilcode.util.ScreenUtils;
/**
* 软键盘工具类
* @Author: liusixiang007
* @since: 2024/1/10
*/
public class SoftKeyboardHelper {
public static final String TAG = "SoftKeyboard_Debug";
private InputMethodManager imm;
private final Context context;
private int lastScreenOrientation;
public SoftKeyboardHelper(Context context) {
this.context = context;
if (ScreenUtils.isPortrait()) {
lastScreenOrientation = Configuration.ORIENTATION_PORTRAIT;
} else {
lastScreenOrientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
/**
* 显示软键盘
* @param view 触发软键盘的EditText
*/
public synchronized void showSoftKeyboard(EditText view) {
if (imm == null) {
imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
}
imm.showSoftInput(view, 0);
}
/**
* 隐藏软键盘
*
* @param view 触发软键盘的EditText
*/
public synchronized void hideSoftKeyboard(EditText view) {
if (imm == null) {
imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
}
if (view != null) {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
/**
* 监听软键盘弹出监听
* @param parentLayout 父容器
* @param softKeyboardListener 监听接口
*/
public void setKeyboardListener(final View parentLayout, final SoftKeyboardListener softKeyboardListener) {
if (softKeyboardListener == null || parentLayout == null) {
return;
}
parentLayout.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View view, int left, int top, int right, int bottom,
int oldLeft, int oldTop, int oldRight, int oldBottom) {
int screenHeight = ScreenUtils.getScreenHeight();
int currentScreenOrientation = -1;
if (ScreenUtils.isPortrait()) {
currentScreenOrientation = Configuration.ORIENTATION_PORTRAIT;
} else {
currentScreenOrientation = Configuration.ORIENTATION_LANDSCAPE;
}
//排除横竖屏切换引起的布局变化
if (lastScreenOrientation != currentScreenOrientation) {
lastScreenOrientation = currentScreenOrientation;
return;
}
int defaultHeight = screenHeight / 3;
if (oldBottom != 0 && bottom != 0 && (oldBottom - bottom > defaultHeight)) {
softKeyboardListener.onSoftKeyboardShow(0);
} else if (oldBottom != 0 && bottom != 0 && (bottom - oldBottom > defaultHeight)) {
softKeyboardListener.onSoftKeyboardHide(0);
}
}
});
}
/** 软键盘事件监听接口 */
public interface SoftKeyboardListener {
/**
* 软键盘弹出监听回调
*
* @param softKeyboardHeight 软键盘高度
*/
void onSoftKeyboardShow(int softKeyboardHeight);
/**
* 软键盘隐藏监听回调
*
* @param softKeyboardHeight 软键盘高度
*/
void onSoftKeyboardHide(int softKeyboardHeight);
}
}

2
app/src/main/res/layout/activity_find_users.xml

@ -154,7 +154,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"/> android:layout_height="wrap_content"/>
</RelativeLayout> </RelativeLayout>
<View android:id="@+id/underline" style="@style/underline" android:layout_marginLeft="0dp" android:layout_marginRight="0dp"/> <!-- <View android:id="@+id/underline" style="@style/underline" android:layout_marginLeft="0dp" android:layout_marginRight="0dp"/>-->
<!-- 企业相关搜索按钮 --> <!-- 企业相关搜索按钮 -->
<RelativeLayout <RelativeLayout
android:id="@+id/rl_btn_firm" android:id="@+id/rl_btn_firm"

10
app/src/main/res/layout/item_default.xml

@ -34,7 +34,7 @@
<LinearLayout <LinearLayout
android:id="@+id/layout_content" android:id="@+id/layout_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="@dimen/dp_44"
android:layout_toRightOf="@+id/layout_left" android:layout_toRightOf="@+id/layout_left"
android:gravity="center"> android:gravity="center">
<TextView <TextView
@ -81,4 +81,12 @@
android:visibility="visible" android:visibility="visible"
tools:visibility="visible"/> tools:visibility="visible"/>
</LinearLayout> </LinearLayout>
<!-- 下划线 -->
<View
android:id="@+id/default_underline"
android:layout_below="@+id/layout_content"
style="@style/underline"
android:alpha="0.3"
android:layout_marginLeft="@dimen/dp_50"
android:layout_marginRight="@dimen/dp_10" />
</RelativeLayout> </RelativeLayout>
Loading…
Cancel
Save