日常备份,接入广点通开屏、Banner

数据改成掉落日志和战斗日志(战斗日志咕了)
This commit is contained in:
2019-04-28 01:25:23 +08:00
parent 7a1c4f4351
commit 1bd45d7b92
172 changed files with 103664 additions and 1297 deletions

View File

@@ -0,0 +1,138 @@
package cn.lemon.view.adapter;
import android.content.Context;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 对应 ViewTypeManager
* <p>
* Created by linlongxin on 2017/9/20.
*/
public class CustomMultiTypeAdapter extends RecyclerAdapter {
private final String TAG = "CustomMultiTypeAdapter";
private List<Object> mViewsData;
private ViewTypeManager mViewHolderManager;
public CustomMultiTypeAdapter(Context context) {
super(context);
mViewsData = new ArrayList<>();
mViewHolderManager = new ViewTypeManager();
}
public void setViewHolderFactory(IViewHolderFactory factory) {
if (factory == null) {
return;
}
mViewHolderManager.setViewHolderFactory(factory);
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == STATUS_TYPE) {
return new BaseViewHolder<>(mStatusView);
} else {
return mViewHolderManager.getViewHolder(parent, viewType);
}
}
// 弃用
@Override
public BaseViewHolder onCreateBaseViewHolder(ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(BaseViewHolder holder, int position) {
// 显示加载更多
if (!mIsNoMoring && mLoadMoreEnable && !mIsLoadMoring && isValidLoadMore(position)) {
mIsLoadMoring = true;
setViewVisible(mLoadMoreLayout, true);
setViewVisible(mLoadMoreView, true);
setViewVisible(mLoadMoreError, false);
setViewVisible(mNoMoreView, false);
if (mLoadMoreAction != null) {
log("load more");
mLoadMoreAction.onAction();
}
} else {
if (position < mViewsData.size()) {
holder.setData(mViewsData.get(position));
}
}
}
@Override
public int getItemViewType(int position) {
if (hasEndStatusView() && position == mViewCount - 1) {
return STATUS_TYPE;
}
return mViewHolderManager.getViewType(position);
}
public void add(int viewType) {
add(new Object(), viewType);
}
public <T> void add(T data, int viewType) {
if (mIsNoMoring || data == null) {
return;
}
mIsLoadMoring = false;
mViewsData.add(data);
int positionStart;
if (hasEndStatusView()) {
positionStart = mViewCount - 1;
} else {
positionStart = mViewCount;
}
mViewHolderManager.putViewType(positionStart, viewType);
mViewCount++;
notifyItemRangeInserted(positionStart, 1);
}
public <T> void addAll(T[] data, int viewType) {
addAll(Arrays.asList(data), viewType);
}
public <T> void addAll(List<T> data, int viewType) {
if (mIsNoMoring || data == null || data.size() == 0) {
return;
}
mIsLoadMoring = false;
int size = data.size();
mViewsData.addAll(data);
int positionStart;
if (hasEndStatusView()) {
positionStart = mViewCount - 1;
} else {
positionStart = mViewCount;
}
for (int i = 0; i < size; i++) {
mViewHolderManager.putViewType(positionStart + i, viewType);
}
mViewCount += size;
notifyItemRangeInserted(positionStart, size);
}
@Override
public void clear() {
if (mViewsData == null) {
return;
}
mViewsData.clear();
mViewCount = hasEndStatusView() ? 1 : 0;
mIsNoMoring = false;
mIsLoadMoring = false;
setViewVisible(mLoadMoreLayout, false);
setViewVisible(mNoMoreView, false);
notifyDataSetChanged();
}
}

View File

@@ -0,0 +1,11 @@
package cn.lemon.view.adapter;
import android.os.Message;
/**
* Created by linlongxin on 2018/3/29
*/
public interface IHandler {
void handMsg(Message message);
}

View File

@@ -0,0 +1,14 @@
package cn.lemon.view.adapter;
import android.view.ViewGroup;
/**
* 为避免反射ViewType 交给开发者自己管理
*
* Created by linlongxin on 2017/9/20.
*/
public interface IViewHolderFactory {
<V extends BaseViewHolder> V getViewHolder(ViewGroup parent, int viewType);
}

View File

@@ -0,0 +1,43 @@
package cn.lemon.view.adapter;
import android.util.SparseIntArray;
import android.view.ViewGroup;
/**
* 为避免反射ViewType 交给开发者自己管理(IViewTypeFactory)
*
* Created by linlongxin on 2017/9/20.
*/
public class ViewTypeManager {
private final String TAG = "ViewTypeManager";
// position to Type
private SparseIntArray mPositionToTypeMap;
private IViewHolderFactory mViewHolderFactory;
public ViewTypeManager() {
mPositionToTypeMap = new SparseIntArray();
}
protected int getViewType(int position) {
return mPositionToTypeMap.get(position);
}
protected void putViewType(int position, int viewType) {
mPositionToTypeMap.put(position, viewType);
}
public void setViewHolderFactory(IViewHolderFactory factory){
mViewHolderFactory = factory;
}
protected <T extends BaseViewHolder> T getViewHolder(ViewGroup parent, int viewType){
if (mViewHolderFactory != null) {
return mViewHolderFactory.getViewHolder(parent, viewType);
} else {
return null;
}
}
}

View File

@@ -0,0 +1,26 @@
package cn.lemon.view.adapter;
import android.os.Handler;
import android.os.Message;
import java.lang.ref.WeakReference;
/**
* Created by linlongxin on 2018/3/29
*/
public class WeakHandler extends Handler {
private WeakReference<IHandler> mHandler;
public WeakHandler(IHandler handler) {
this.mHandler = new WeakReference<>(handler);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
IHandler handler = mHandler.get();
if (handler != null) {
handler.handMsg(msg);
}
}
}

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="#BBBBBB"/>
</shape>
</item>
</selector>