update 封装base库;集成flowwindow库;悬浮窗功能;赞助和分享;集成企微sdk;界面更新;添加待办修复;滚动手势优化;建群达到上限检查;兼容减号和括号搜索;应用保活;其他已知缺陷修复

This commit is contained in:
gallonyin
2022-12-09 16:15:49 +08:00
parent b4b5746f5c
commit 3636ffdc2f
89 changed files with 3908 additions and 272 deletions

View File

@@ -0,0 +1,2 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="base" />

View File

@@ -0,0 +1,95 @@
package base.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
/**
* Created by gallon on 2019/7/26.
*/
public abstract class RvSimpleAdapter<T> extends RecyclerView.Adapter<RvViewHolder> {
protected LayoutInflater mInflater;
public List<T> mData;
public int mHeaderCount = 0;
public Context mContext;
protected int mLayoutId;
public static abstract class OnItemClickListener {
public abstract void onItemClick(View view, int position, RvViewHolder holder);
public void onItemLongClick(View view, int position, RvViewHolder holder) {
}
}
private OnItemClickListener onItemClickListener;
public void setOnItemClickListener(OnItemClickListener listener) {
this.onItemClickListener = listener;
}
public RvSimpleAdapter(Context context, List<T> data, int layoutId) {
this.mContext = context;
this.mData = data;
this.mLayoutId = layoutId;
mInflater = LayoutInflater.from(context);
}
@Override
public int getItemCount() {
return null == mData ? 0 : mData.size();
}
@Override
public void onBindViewHolder(final RvViewHolder holder, final int position) {
convert(holder, mData.get(holder.getLayoutPosition() - mHeaderCount), position);
setUpItemEvent(holder);
}
public abstract void convert(RvViewHolder holder, T bean, int position);
public void setUpItemEvent(final RvViewHolder holder) {
if (onItemClickListener != null) {
holder.itemView.setOnClickListener(v -> {
//这个获取位置的方法,防止添加删除导致位置不变
int layoutPosition = holder.getAdapterPosition() - mHeaderCount;
onItemClickListener.onItemClick(holder.itemView, layoutPosition, holder);
});
holder.itemView.setOnLongClickListener(v -> {
int layoutPosition = holder.getAdapterPosition() - mHeaderCount;
onItemClickListener.onItemLongClick(holder.itemView, layoutPosition, holder);
return false;
});
}
}
@Override
public RvViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RvViewHolder viewHolder = onCreateDefViewHolder(parent, viewType);
return viewHolder;
}
protected RvViewHolder onCreateDefViewHolder(ViewGroup parent, int viewType) {
return new RvViewHolder(mInflater.inflate(mLayoutId, parent, false));
}
public void addData(T datas) {
mData.add(mData.size(), datas);
notifyItemInserted(mData.size());
}
public void addData(int pos, T datas) {
mData.add(pos, datas);
notifyItemInserted(pos);
}
public void deleteData(int pos) {
mData.remove(pos);
notifyItemRemoved(pos);
}
}

View File

@@ -0,0 +1,59 @@
package base.adapter;
import android.graphics.Bitmap;
import android.util.SparseArray;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
/**
* Created by gallon on 2019/7/26.
*/
public class RvViewHolder extends RecyclerView.ViewHolder {
private SparseArray<View> mViews;
public RvViewHolder(View itemView) {
super(itemView);
mViews = new SparseArray<View>();
}
//通过viewId获取控件
public <T extends View> T getView(int viewId) {
View view = mViews.get(viewId);
if (view == null) {
view = itemView.findViewById(viewId);
mViews.put(viewId, view);
}
return (T) view;
}
/**
* 设置TextView的值
*/
public RvViewHolder setText(int viewId, String text) {
TextView tv = getView(viewId);
tv.setText(text);
return this;
}
public RvViewHolder setImageResource(int viewId, int resId) {
ImageView view = getView(viewId);
view.setImageResource(resId);
return this;
}
public RvViewHolder setImageBitamp(int viewId, Bitmap bitmap) {
ImageView view = getView(viewId);
view.setImageBitmap(bitmap);
return this;
}
public RvViewHolder setImageURI(int viewId, String uri) {
ImageView view = getView(viewId);
// Imageloader.getInstance().loadImg(view,uri);
return this;
}
}

View File

@@ -0,0 +1,2 @@
<resources>
</resources>

View File

@@ -0,0 +1,2 @@
<resources>
</resources>