Browse Source

Merge remote-tracking branch 'origin/master'

master
wangxiang 1 year ago
parent
commit
1b84e10d85
  1. 32
      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. 31
      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

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

@ -1,7 +1,6 @@ @@ -1,7 +1,6 @@
package com.kanglai.push.ui.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
@ -23,17 +22,14 @@ import androidx.recyclerview.widget.RecyclerView; @@ -23,17 +22,14 @@ import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.CacheDiskUtils;
import com.blankj.utilcode.util.CollectionUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.StringUtils;
import com.bumptech.glide.Glide;
import com.dolphin.core.BuildConfig;
import com.dolphin.core.base.BaseActivity;
import com.dolphin.core.util.ToastUtil;
import com.dolphin.core.widget.DefaultItemDecoration;
import com.kanglai.push.BR;
import com.kanglai.push.R;
import com.kanglai.push.constant.CacheConstant;
import com.kanglai.push.constant.CommonConstant;
import com.kanglai.push.databinding.ActivityFindUsersBinding;
import com.kanglai.push.entity.ConcernFan;
import com.kanglai.push.entity.LinkEntity;
@ -41,15 +37,8 @@ import com.kanglai.push.entity.User; @@ -41,15 +37,8 @@ import com.kanglai.push.entity.User;
import com.kanglai.push.ui.adapter.SearchRecyclerAdapter;
import com.kanglai.push.ui.vm.FindUsersViewModel;
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.MessageDialog;
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 @@ -68,7 +57,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
public RecyclerView mRecyclerView;
public SearchRecyclerAdapter mAdapter;
public View underline;
public RelativeLayout user_search_btn; // 用户名点击搜索按钮
public TextView tv_val_user;
@ -105,7 +93,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi @@ -105,7 +93,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
tv_val_user = findViewById(R.id.tv_val_user);
firm_search_btn = findViewById(R.id.rl_btn_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);
if (user != null) tv_name.setText("当前登录账号:" + user.getNickName());
@ -118,7 +105,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi @@ -118,7 +105,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
mAdapter = searchRecyclerAdapter;
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.addItemDecoration(new DefaultItemDecoration(ContextCompat.getColor(this,R.color.common_divider_color)));
mRecyclerView.setAdapter(mAdapter);
/** 文字搜索框修改事件 */
@ -170,7 +156,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi @@ -170,7 +156,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
@Override
public void onClick(View view) {
/** 用户点击搜索 */
mAdapter.empty(); // 清空数据
mViewModel.filterUser(ed_search.getText());
user_search_btn.setVisibility(View.GONE);
firm_search_btn.setVisibility(View.GONE);
@ -187,12 +172,13 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi @@ -187,12 +172,13 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
});
mDialog = FullScreenDialog.build();
}
/** 通过全屏对话框 来展示目标用户数据 */
@Override
public void onItemViewClicked(LinkEntity item) {
hideSoftKeyboard();
hideKeyboard();
mDialog.show(new OnBindView<FullScreenDialog>(R.layout.item_full_dialog_fans) {
@Override
public void onBind(FullScreenDialog dialog, View v) {
@ -222,7 +208,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi @@ -222,7 +208,6 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
text01.setText(item.getDetailedAddress());
text02.setVisibility(View.GONE);
button01.setVisibility(View.GONE);
// button01.setOnClickListener(view -> mViewModel.attentionFrim(item.getId()));
}else { // 用户
name.setText(item.getNikeName()+"【"+ item.getName() +"】");
text01.setText("所属部门:"+item.getDeptName());
@ -251,16 +236,11 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi @@ -251,16 +236,11 @@ public class FindUsersActivity extends BaseActivity<ActivityFindUsersBinding, Fi
}
}
/**
* 隐藏软键盘
*/
private void hideSoftKeyboard() {
/**隐藏键盘 */
public void hideKeyboard() {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
View currentFocusView = getCurrentFocus();
if (currentFocusView != null) {
imm.hideSoftInputFromWindow(currentFocusView.getWindowToken(), 0);
} else {
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
}
if (currentFocusView != null) imm.hideSoftInputFromWindow(currentFocusView.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; @@ -11,6 +11,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ObjectUtils;
import com.kanglai.push.R;
@ -46,6 +47,7 @@ public class DefaultRecyclerAdapter extends RecyclerView.Adapter<DefaultRecycler @@ -46,6 +47,7 @@ public class DefaultRecyclerAdapter extends RecyclerView.Adapter<DefaultRecycler
public TextView detailLabel;
public TextView secondDetailLabel;
public ImageView disclosureImage;
public View underline;
public ViewHolder(@NonNull View v) {
super(v);
@ -57,6 +59,7 @@ public class DefaultRecyclerAdapter extends RecyclerView.Adapter<DefaultRecycler @@ -57,6 +59,7 @@ public class DefaultRecyclerAdapter extends RecyclerView.Adapter<DefaultRecycler
detailLabel = v.findViewById(R.id.detail_label); // 第二个值
secondDetailLabel = v.findViewById(R.id.second_detail_label); // 第三个值
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 @@ -95,6 +98,7 @@ public class DefaultRecyclerAdapter extends RecyclerView.Adapter<DefaultRecycler
viewHolder.leftBadge.setImageResource(defaultBadge);
}
if (position == getItemCount() - 1) viewHolder.underline.setVisibility(View.GONE);
viewHolder.disclosureImage.setVisibility(hideDisclosure? View.GONE: View.VISIBLE);
viewHolder.layoutLeft .setVisibility(hideLeftImage ? View.GONE: View.VISIBLE);
}

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

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

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

@ -0,0 +1,110 @@ @@ -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 @@ @@ -154,7 +154,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</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
android:id="@+id/rl_btn_firm"

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

@ -34,7 +34,7 @@ @@ -34,7 +34,7 @@
<LinearLayout
android:id="@+id/layout_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="@dimen/dp_44"
android:layout_toRightOf="@+id/layout_left"
android:gravity="center">
<TextView
@ -81,4 +81,12 @@ @@ -81,4 +81,12 @@
android:visibility="visible"
tools:visibility="visible"/>
</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>
Loading…
Cancel
Save