diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index fb7f4a8..61a9130 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 7c7f635..3378229 100755
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/README.md b/README.md
index 587644c..22c27db 100755
--- a/README.md
+++ b/README.md
@@ -18,4 +18,7 @@
> 1 其他人口数据录入时基础信息回显
## 2022-2-16
-> 1 人口信息列表修改 人口新录入时基础信息回显修改
\ No newline at end of file
+> 1 人口信息列表修改 人口新录入时基础信息回显修改
+>
+## 2022-3-29
+> 1 人口基础信息添加条件筛选 ,基础信息录入必填字段修改
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index ca76bce..d6d0299 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -92,4 +92,7 @@ dependencies {
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.1'
testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.1'
+
+
+
}
diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/CensusBaseActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/CensusBaseActivity.java
index 13e4d4a..af6cebc 100644
--- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/CensusBaseActivity.java
+++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/CensusBaseActivity.java
@@ -9,9 +9,13 @@ import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.TextView;
import com.jcodecraeer.xrecyclerview.ProgressStyle;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
+import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
import com.sucstepsoft.cm_utils.utils.ToastUtils;
@@ -19,10 +23,12 @@ import com.sucstepsoft.cm_utils.utils.UIUtil;
import com.sucstepsoft.cm_utils.utils.UserLgUtils;
import com.sucstepsoft.realtimelocation.R;
import com.sucstepsoft.realtimelocation.adapters.CensusPersonAdapter;
+import com.sucstepsoft.realtimelocation.beans.DicBean;
import com.sucstepsoft.realtimelocation.beans.SuccessBean;
import com.sucstepsoft.realtimelocation.beans.person.CensusPersonBean;
import com.sucstepsoft.realtimelocation.net.LocationApiService;
import com.sucstepsoft.realtimelocation.utils.ExceptionHandler;
+import com.sucstepsoft.realtimelocation.widget.ConditionPopup;
import java.util.ArrayList;
import java.util.List;
@@ -48,6 +54,24 @@ public class CensusBaseActivity extends BaseActivity {
Button mBtnSearch;
@BindView(R.id.xlv_content)
XRecyclerView mXlvItems;
+ @BindView(R.id.tv_nation)
+ TextView mTvNation;
+ @BindView(R.id.tv_faith)
+ TextView mTvFaith;
+ @BindView(R.id.tv_political)
+ TextView mTvPolitical;
+ @BindView(R.id.tv_marr)
+ TextView mTvMarr;
+ @BindView(R.id.tv_edu)
+ TextView mTvEdu;
+ @BindView(R.id.ll_empty)
+ LinearLayout mLlEmpty;
+ @BindView(R.id.iv_empty)
+ ImageView mIvAEmpty;
+ @BindView(R.id.pb_loading)
+ ProgressBar mPbALoading;
+ @BindView(R.id.tv_hint)
+ TextView mTvAHint;
private Unbinder mBind;
private String mRows = "20";
private int mCurPage = 1;
@@ -57,6 +81,22 @@ public class CensusBaseActivity extends BaseActivity {
private String mKeywords = "";
+ private List mNations = new ArrayList<>();
+ private DicBean mSelNation;
+
+ private List mFaiths;
+ private DicBean mSelFaith;
+
+ private List mPoliticals;
+ private DicBean mSelPolitical;
+
+ private List mMarrays;
+ private DicBean mSelMarray;
+
+ private List mEdus;
+ private DicBean mSelEdu;
+
+
@Override
protected int setLayoutId() {
return R.layout.activity_census_base;
@@ -68,12 +108,13 @@ public class CensusBaseActivity extends BaseActivity {
mTvBaseTitle.setText("基础信息");
mTvPublish.setVisibility(View.VISIBLE);
mTvPublish.setText("新增");
+ refreshView(STATE_LOAD_SUCCESS);
mTvPublish.setOnClickListener(v -> {
Intent intent = new Intent(mActivity, CensusEnterActivity.class);
intent.putExtra("title", "人员基础信息录入");
startActivity(intent);
});
-
+ mEtSearchContent.setHint("请输入要查询的关键字");
mBtnSearch.setOnClickListener(v -> doSearch());
mIvClear.setOnClickListener(v -> {
mKeywords = "";
@@ -113,6 +154,203 @@ public class CensusBaseActivity extends BaseActivity {
doEditBean(bean, pos);
}
});
+ mTvNation.setOnClickListener(v -> {
+ if (mNations != null && mNations.size() > 0) {
+ onShowNationPopup();
+ } else {
+ getDicListByType(PathConfig.DIC_NATION, 2);
+ }
+ });//民族
+ mTvFaith.setOnClickListener(v -> {
+ if (mFaiths != null && mFaiths.size() > 0) {
+ onShowFaith();
+ } else {
+ getDicListByType(PathConfig.DIC_FAITH, 6);
+ }
+ });//宗教
+ mTvPolitical.setOnClickListener(v -> {
+ if (mPoliticals != null && mPoliticals.size() > 0) {
+ onShowPolitical();
+ } else {
+ getDicListByType(PathConfig.DIC_POLITICS, 4);
+ }
+ });//政治
+ mTvMarr.setOnClickListener(v -> {
+ if (mMarrays != null && mMarrays.size() > 0) {
+ onShowMarray();
+ } else {
+ getDicListByType(PathConfig.DIC_MARRIAGE, 3);
+ }
+ });//婚姻
+ mTvEdu.setOnClickListener(v -> {
+ if (mEdus != null && mEdus.size() > 0) {
+ onShowEdu();
+ } else {
+ getDicListByType(PathConfig.DIC_EDU, 5);
+ }
+ });//学历
+ }
+
+ /**
+ * 名族弹窗
+ */
+ private void onShowNationPopup() {
+ ConditionPopup conditionPopup = new ConditionPopup(mActivity, mNations);
+ conditionPopup.setOnListPopupItemClickListener((bean, isCheck, pos) -> {
+ if (isCheck) {
+ //选中了
+ mSelNation = bean;
+ mTvNation.setText(mSelNation.getDictionaryName());
+ } else {
+ //清除了选项
+ mSelNation = null;
+ mTvNation.setText("民族");
+ }
+ conditionPopup.dismiss();
+ });
+ conditionPopup.showPopupWindow(mTvNation);
+ }
+// private String[] tabs = {"民族", "宗教信仰", "政治面貌", "婚姻情况", "学历"};
+
+ /**
+ * 宗教信仰
+ */
+ private void onShowFaith() {
+ ConditionPopup conditionPopup = new ConditionPopup(mActivity, mFaiths);
+ conditionPopup.setOnListPopupItemClickListener((bean, isCheck, pos) -> {
+ if (isCheck) {
+ //选中了
+ mSelFaith = bean;
+ mTvFaith.setText(mSelFaith.getDictionaryName());
+ } else {
+ //清除了选项
+ mSelFaith = null;
+ mTvFaith.setText("宗教信仰");
+ }
+ conditionPopup.dismiss();
+ });
+ conditionPopup.showPopupWindow(mTvFaith);
+ }
+
+ /**
+ * 政治面貌
+ */
+ private void onShowPolitical() {
+ ConditionPopup conditionPopup = new ConditionPopup(mActivity, mPoliticals);
+ conditionPopup.setOnListPopupItemClickListener((bean, isCheck, pos) -> {
+ if (isCheck) {
+ //选中了
+ mSelPolitical = bean;
+ mTvPolitical.setText(mSelPolitical.getDictionaryName());
+ } else {
+ //清除了选项
+ mSelPolitical = null;
+ mTvPolitical.setText("政治面貌");
+ }
+ conditionPopup.dismiss();
+ });
+ conditionPopup.showPopupWindow(mTvPolitical);
+ }
+
+ /**
+ * 婚姻状况
+ */
+ private void onShowMarray() {
+ ConditionPopup conditionPopup = new ConditionPopup(mActivity, mMarrays);
+ conditionPopup.setOnListPopupItemClickListener((bean, isCheck, pos) -> {
+ if (isCheck) {
+ //选中了
+ mSelMarray = bean;
+ mTvMarr.setText(mSelMarray.getDictionaryName());
+ } else {
+ //清除了选项
+ mSelMarray = null;
+ mTvMarr.setText("婚姻状况");
+ }
+ conditionPopup.dismiss();
+ });
+ conditionPopup.showPopupWindow(mTvMarr);
+ }
+
+ /**
+ * 学历
+ */
+ private void onShowEdu() {
+ ConditionPopup conditionPopup = new ConditionPopup(mActivity, mEdus);
+ conditionPopup.setOnListPopupItemClickListener((bean, isCheck, pos) -> {
+ if (isCheck) {
+ //选中了
+ mSelEdu = bean;
+ mTvEdu.setText(mSelEdu.getDictionaryName());
+ } else {
+ //清除了选项
+ mSelEdu = null;
+ mTvEdu.setText("学历");
+ }
+ conditionPopup.dismiss();
+ });
+ conditionPopup.showPopupWindow(mTvEdu);
+ }
+
+ /**
+ * 字典
+ */
+ private void getDicListByType(String pId, int i) {
+ ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中...");
+ dialog.show();
+ RetrofitManager.getInstance()
+ .create(LocationApiService.class)
+ .getDictListAllByPid(pId, UserLgUtils.getToken())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(@NonNull List typeListBeans) {
+ dialog.dismiss();
+ if (typeListBeans.size() > 0) {
+ switch (i) {
+ case 2://名族
+ mNations = typeListBeans;
+ onShowNationPopup();
+ break;
+ case 3://婚姻状况
+ mMarrays = typeListBeans;
+ onShowMarray();
+ break;
+ case 4://政治面貌
+ mPoliticals = typeListBeans;
+ onShowPolitical();
+ break;
+ case 5://学历
+ mEdus = typeListBeans;
+ onShowEdu();
+ break;
+ case 6://宗教信仰
+ mFaiths = typeListBeans;
+ onShowFaith();
+ break;
+ }
+ } else {
+ ToastUtils.showShort("暂无数据");
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ dialog.dismiss();
+ ExceptionHandler.handleException(e);
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
}
@@ -121,14 +359,10 @@ public class CensusBaseActivity extends BaseActivity {
*/
private void doSearch() {
String searchContent = mEtSearchContent.getText().toString().trim();
- if (!TextUtils.isEmpty(searchContent)) {
- hideSoftKeyboard();
- mKeywords = searchContent;
- mCurPage = 1;
- getUpcomingList(mCurPage);
- } else {
- ToastUtils.showShort("请输入要查询的内容");
- }
+ hideSoftKeyboard();
+ mKeywords = searchContent;
+ mCurPage = 1;
+ getUpcomingList(mCurPage);
}
/**
@@ -140,45 +374,45 @@ public class CensusBaseActivity extends BaseActivity {
private void doDelBean(CensusPersonBean.RowsBean bean, int pos) {
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
builder.setTitle("提示")
- .setMessage("确定要删除该条信息吗?")
- .setPositiveButton("确定", (dialog, which) -> {
- dialog.dismiss();
- ProgressDialog dialog1 = UIUtil.initDialog(mActivity, "删除中...");
- dialog1.show();
- RetrofitManager.getInstance()
- .create(LocationApiService.class)
- .doDelBaseInfo(bean.getBasePopulationInfoId(), UserLgUtils.getToken())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
+ .setMessage("确定要删除该条信息吗?")
+ .setPositiveButton("确定", (dialog, which) -> {
+ dialog.dismiss();
+ ProgressDialog dialog1 = UIUtil.initDialog(mActivity, "删除中...");
+ dialog1.show();
+ RetrofitManager.getInstance()
+ .create(LocationApiService.class)
+ .doDelBaseInfo(bean.getBasePopulationInfoId(), UserLgUtils.getToken())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
- }
+ }
- @Override
- public void onNext(@NonNull SuccessBean successBean) {
- ToastUtils.showShort("删除成功");
- mDatas.remove(bean);
- mAdapter.notifyDataSetChanged();
- dialog1.dismiss();
- }
+ @Override
+ public void onNext(@NonNull SuccessBean successBean) {
+ ToastUtils.showShort("删除成功");
+ mDatas.remove(bean);
+ mAdapter.notifyDataSetChanged();
+ dialog1.dismiss();
+ }
- @Override
- public void onError(@NonNull Throwable e) {
- dialog1.dismiss();
- ExceptionHandler.handleException(e);
- }
+ @Override
+ public void onError(@NonNull Throwable e) {
+ dialog1.dismiss();
+ ExceptionHandler.handleException(e);
+ }
- @Override
- public void onComplete() {
+ @Override
+ public void onComplete() {
- }
- });
- })
- .setNegativeButton("取消", (dialog, which) -> dialog.dismiss())
- .create()
- .show();
+ }
+ });
+ })
+ .setNegativeButton("取消", (dialog, which) -> dialog.dismiss())
+ .create()
+ .show();
}
/**
@@ -220,66 +454,105 @@ public class CensusBaseActivity extends BaseActivity {
*/
private void getUpcomingList(int page) {
mCurPage = page;
+ String nation = mSelNation == null ? "" : mSelNation.getDictionaryId();
+ String faith = mSelFaith == null ? "" : mSelFaith.getDictionaryId();
+ String polition = mSelPolitical == null ? "" : mSelPolitical.getDictionaryId();
+ String marry = mSelMarray == null ? "" : mSelMarray.getDictionaryId();
+ String edu = mSelEdu == null ? "" : mSelEdu.getDictionaryId();
RetrofitManager.getInstance()
- .create(LocationApiService.class)
- .getBaseInfoList(page + "", mKeywords, UserLgUtils.getToken())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
+ .create(LocationApiService.class)
+ .getBaseInfoList(page + "", mKeywords, nation, faith, polition, marry, edu, UserLgUtils.getToken())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
- }
+ }
- @Override
- public void onNext(CensusPersonBean leaveListBean) {
- if (leaveListBean != null && leaveListBean.getRows() != null && leaveListBean.getRows().size() > 0) {
- ++mCurPage;
- if (page == 1) {
- mDatas.clear();
- mDatas.addAll(leaveListBean.getRows());
- } else {
- mDatas.addAll(leaveListBean.getRows());
- }
- refreshView(STATE_LOAD_SUCCESS);
- mAdapter.notifyDataSetChanged();
- mXlvItems.refreshComplete();
- if (mDatas.size() >= leaveListBean.getTotal()) {
- mXlvItems.loadMoreComplete();
- mXlvItems.setNoMore(true);
- } else {
- mXlvItems.loadMoreComplete();
- mXlvItems.setNoMore(false);
- }
+ @Override
+ public void onNext(CensusPersonBean leaveListBean) {
+ if (leaveListBean != null && leaveListBean.getRows() != null && leaveListBean.getRows().size() > 0) {
+ ++mCurPage;
+ if (page == 1) {
+ mDatas.clear();
+ mDatas.addAll(leaveListBean.getRows());
} else {
- if (page > 1) {
- mXlvItems.loadMoreComplete();
- mXlvItems.setNoMore(true);
- refreshView(STATE_LOAD_SUCCESS);
+ mDatas.addAll(leaveListBean.getRows());
+ }
+
+ mAdapter.notifyDataSetChanged();
+ mXlvItems.refreshComplete();
+ if (mDatas.size() >= leaveListBean.getTotal()) {
+ mXlvItems.loadMoreComplete();
+ mXlvItems.setNoMore(true);
+ } else {
+ mXlvItems.loadMoreComplete();
+ mXlvItems.setNoMore(false);
+ }
+ setStateView(STATE_LOAD_SUCCESS);
+ } else {
+ if (page > 1) {
+ mXlvItems.loadMoreComplete();
+ mXlvItems.setNoMore(true);
+ setStateView(STATE_LOAD_SUCCESS);
+ } else {
+ if (TextUtils.isEmpty(mKeywords)) {
+ //无数据
+ setStateView(STATE_LOAD_EMPTY);
} else {
- if (TextUtils.isEmpty(mKeywords)) {
- //无数据
- refreshView(STATE_LOAD_EMPTY);
- } else {
- ToastUtils.showShort("未查询到相关内容");
- }
+ ToastUtils.showShort("未查询到相关内容");
}
}
}
+ }
- @Override
- public void onError(Throwable e) {
- ToastUtils.showShort("数据加载失,请稍后重试");
- refreshView(STATE_LOAD_ERROR);
- }
+ @Override
+ public void onError(Throwable e) {
+ ToastUtils.showShort("数据加载失,请稍后重试");
+ setStateView(STATE_LOAD_ERROR);
+ }
- @Override
- public void onComplete() {
+ @Override
+ public void onComplete() {
- }
- });
+ }
+ });
}
+ private void setStateView(int state) {
+ switch (state) {
+ case STATE_LOAD_LOADING://加载中
+ mPbALoading.setVisibility(View.VISIBLE);
+ mIvAEmpty.setVisibility(View.GONE);
+ mTvAHint.setVisibility(View.VISIBLE);
+ mTvAHint.setText(getResources().getString(com.sucstepsoft.cm_utils.R.string.loading));
+ mXlvItems.setVisibility(View.INVISIBLE);
+ break;
+ case STATE_LOAD_SUCCESS://加载成功
+ mPbALoading.setVisibility(View.GONE);
+ mIvAEmpty.setVisibility(View.GONE);
+ mTvAHint.setVisibility(View.GONE);
+ mXlvItems.setVisibility(View.VISIBLE);
+ break;
+ case STATE_LOAD_EMPTY://空数据
+ mPbALoading.setVisibility(View.GONE);
+ mIvAEmpty.setVisibility(View.VISIBLE);
+ mTvAHint.setVisibility(View.VISIBLE);
+ mTvAHint.setText(getResources().getString(com.sucstepsoft.cm_utils.R.string.empty_data));
+ mXlvItems.setVisibility(View.INVISIBLE);
+ break;
+ case STATE_LOAD_ERROR:
+ mPbALoading.setVisibility(View.GONE);
+ mIvAEmpty.setVisibility(View.VISIBLE);
+ mTvAHint.setVisibility(View.VISIBLE);
+ mTvAHint.setText(getResources().getString(com.sucstepsoft.cm_utils.R.string.loading_error));
+ mXlvItems.setVisibility(View.INVISIBLE);
+ break;
+ }
+ }
+
+
@Override
protected void onDestroy() {
if (mDisposable != null && !mDisposable.isDisposed()) {
diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/CensusEnterActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/CensusEnterActivity.java
index 7f6af0e..109effa 100644
--- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/CensusEnterActivity.java
+++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/CensusEnterActivity.java
@@ -351,6 +351,47 @@ public class CensusEnterActivity extends BaseActivity {
ToastUtils.showShort("请输入姓名");
return false;
}
+ if (mSelNation == null) {
+ ToastUtils.showShort("请选择民族");
+ return false;
+ }
+ String nativeStr = mEtNative.getText().toString().trim();
+ if (TextUtils.isEmpty(nativeStr)) {
+ ToastUtils.showShort("请输入籍贯");
+ return false;
+ }
+ if (mSelMarry == null) {
+ ToastUtils.showShort("请选择婚姻状况");
+ return false;
+ }
+ if (mSelPolitical == null) {
+ ToastUtils.showShort("请选择政治面貌");
+ return false;
+ }
+ if (mSelEdu == null) {
+ ToastUtils.showShort("请选择学历");
+ return false;
+ }
+ if (mSelReligion == null) {
+ ToastUtils.showShort("请选择宗教信仰");
+ return false;
+ }
+ String work = mTvWork.getText().toString().trim();
+ if (TextUtils.isEmpty(work)) {
+ ToastUtils.showShort("请输入职业");
+ return false;
+ }
+ String workSpace = mEtWorkSpace.getText().toString().trim();
+ if (TextUtils.isEmpty(workSpace)) {
+ ToastUtils.showShort("请输入工作单位");
+ return false;
+ }
+ String phone = mEtPhone.getText().toString().trim();
+ if (TextUtils.isEmpty(phone)) {
+ ToastUtils.showShort("请输入联系方式");
+ return false;
+ }
+
String curLoc = mTvCurLoc.getText().toString().trim();
if (TextUtils.isEmpty(curLoc)) {
ToastUtils.showShort("请选择现住地");
diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/ConditionAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/ConditionAdapter.java
new file mode 100644
index 0000000..0ec7fc9
--- /dev/null
+++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/ConditionAdapter.java
@@ -0,0 +1,58 @@
+package com.sucstepsoft.realtimelocation.adapters;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter;
+import com.sucstepsoft.realtimelocation.R;
+import com.sucstepsoft.realtimelocation.adapters.holders.ConditionViewHolder;
+import com.sucstepsoft.realtimelocation.beans.DicBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 作者: adam
+ * 日期: 2022/3/30 - 11:00 上午
+ * 邮箱: itgaojian@163.com
+ * 描述:
+ */
+public class ConditionAdapter extends BaseRecyclerAdapter {
+ public List mSelBeans = new ArrayList<>();
+ public ConditionAdapter(Context ctx, List list) {
+ super(ctx, list);
+ }
+
+ @Override
+ public ConditionViewHolder createHolder(ViewGroup parent, int viewType) {
+ View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_condition_dic, parent, false);
+ return new ConditionViewHolder(itemView);
+ }
+
+ @Override
+ public void bindHolder(ConditionViewHolder holder, int i) {
+ DicBean bean = mData.get(i);
+ holder.mTvName.setText(bean.getDictionaryName());
+ holder.mTvName.setTextColor(bean.isCheck() ? Color.parseColor("#1296db") : Color.BLACK);
+ if (bean.isCheck()) {
+ holder.mIvCheck.setVisibility(View.VISIBLE);
+ holder.mIvCheck.setImageResource(R.drawable.ic_check_blue);
+ } else {
+ holder.mIvCheck.setVisibility(View.INVISIBLE);
+ }
+ holder.itemView.setOnClickListener(v -> mLis.onItemCheckChange(bean, !bean.isCheck(), i));
+ }
+
+ private OnItemCheckChange mLis;
+
+ public void addOnitemCheckChange(OnItemCheckChange lis) {
+ this.mLis = lis;
+ }
+
+ public interface OnItemCheckChange {
+ void onItemCheckChange(DicBean bean, boolean isCheck, int pos);
+ }
+}
diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/ConditionViewHolder.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/ConditionViewHolder.java
new file mode 100644
index 0000000..86bfe6f
--- /dev/null
+++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/ConditionViewHolder.java
@@ -0,0 +1,26 @@
+package com.sucstepsoft.realtimelocation.adapters.holders;
+
+import android.support.annotation.NonNull;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.sucstepsoft.realtimelocation.R;
+
+/**
+ * 作者: adam
+ * 日期: 2022/3/30 - 10:55 上午
+ * 邮箱: itgaojian@163.com
+ * 描述:
+ */
+public class ConditionViewHolder extends RecyclerView.ViewHolder {
+ public TextView mTvName;
+ public ImageView mIvCheck;
+
+ public ConditionViewHolder(@NonNull View itemView) {
+ super(itemView);
+ mTvName = itemView.findViewById(R.id.tv_name);
+ mIvCheck = itemView.findViewById(R.id.iv_icon);
+ }
+}
diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java b/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java
index a343e2f..4d9d311 100755
--- a/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java
+++ b/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java
@@ -1385,7 +1385,14 @@ public interface LocationApiService {
*/
@Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"})
@GET("app/basepopulationinfo/listpagebasepopulationinfo")
- Observable getBaseInfoList(@Query("page") String page, @Query("keywords") String keywords, @Header("token") String token);
+ Observable getBaseInfoList(@Query("page") String page,
+ @Query("keywords") String keywords,
+ @Query("nation") String nation,
+ @Query("religion") String faith,
+ @Query("politicalStatus") String political,
+ @Query("maritalStatus") String marry,
+ @Query("education") String edu,
+ @Header("token") String token);
/*===========================================工作日志===========================================*/
/**
diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/widget/ConditionPopup.java b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/ConditionPopup.java
new file mode 100644
index 0000000..58a3cbb
--- /dev/null
+++ b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/ConditionPopup.java
@@ -0,0 +1,72 @@
+package com.sucstepsoft.realtimelocation.widget;
+
+import android.content.Context;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+import com.sucstepsoft.realtimelocation.R;
+import com.sucstepsoft.realtimelocation.adapters.ConditionAdapter;
+import com.sucstepsoft.realtimelocation.beans.DicBean;
+
+import java.util.List;
+
+import razerdp.basepopup.BasePopupWindow;
+
+/**
+ * 作者: adam
+ * 日期: 2022/3/30 - 10:12 上午
+ * 邮箱: itgaojian@163.com
+ * 描述:
+ */
+public class ConditionPopup extends BasePopupWindow {
+ private List mDatas;
+ private final RecyclerView mRlvConditions;
+ private OnListPopupItemClickListener mOnListPopupItemClickListener;
+
+ public ConditionPopup(Context context, List data) {
+ super(context);
+ this.mDatas = data;
+ mRlvConditions = findViewById(R.id.rlv_conditions);
+ mRlvConditions.setLayoutManager(new LinearLayoutManager(context));
+ ConditionAdapter adapter = new ConditionAdapter(context, mDatas);
+ mRlvConditions.setAdapter(adapter);
+ adapter.addOnitemCheckChange((bean, isCheck, pos) -> {
+ if (isCheck) {
+ adapter.mSelBeans.clear();
+ adapter.mSelBeans.add(bean);
+ } else {
+ adapter.mSelBeans.remove(bean);
+ }
+ bean.setCheck(isCheck);
+ mOnListPopupItemClickListener.onItemClick(bean, isCheck, pos);
+ if (isCheck) {
+ if (true) {
+ for (int i = 0; i < adapter.getData().size(); i++) {
+ if (!adapter.getData().get(i).getDictionaryId().equals(bean.getDictionaryId())) {
+ adapter.getData().get(i).setCheck(false);
+ }
+ }
+ }
+ }
+ adapter.notifyDataSetChanged();
+ });
+ }
+
+ @Override
+ public View onCreateContentView() {
+ return createPopupById(R.layout.popup_condition_layout);
+ }
+
+ public OnListPopupItemClickListener getOnListPopupItemClickListener() {
+ return mOnListPopupItemClickListener;
+ }
+
+ public void setOnListPopupItemClickListener(OnListPopupItemClickListener onListPopupItemClickListener) {
+ mOnListPopupItemClickListener = onListPopupItemClickListener;
+ }
+
+ public interface OnListPopupItemClickListener {
+ void onItemClick(DicBean bean, boolean isCheck, int pos);
+ }
+}
diff --git a/app/src/main/res/drawable-xhdpi/ic_arrow_sort_gray.png b/app/src/main/res/drawable-xhdpi/ic_arrow_sort_gray.png
new file mode 100644
index 0000000..7341043
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_arrow_sort_gray.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_check_blue.png b/app/src/main/res/drawable-xhdpi/ic_check_blue.png
new file mode 100644
index 0000000..64eb4f0
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_check_blue.png differ
diff --git a/app/src/main/res/layout/activity_census_base.xml b/app/src/main/res/layout/activity_census_base.xml
index 6d73dd0..f221944 100644
--- a/app/src/main/res/layout/activity_census_base.xml
+++ b/app/src/main/res/layout/activity_census_base.xml
@@ -1,16 +1,168 @@
-
-
-
+ android:background="@color/white"
+ android:gravity="center_vertical"
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_census_enter.xml b/app/src/main/res/layout/activity_census_enter.xml
index 59c9cc2..90662f7 100644
--- a/app/src/main/res/layout/activity_census_enter.xml
+++ b/app/src/main/res/layout/activity_census_enter.xml
@@ -130,7 +130,7 @@
+ android:visibility="visible" />
+ android:visibility="visible" />
+ android:visibility="visible" />
+ android:visibility="visible" />
+ android:visibility="visible" />
+ android:visibility="visible" />
+ android:visibility="visible" />
+ android:visibility="visible" />
+ android:visibility="visible" />
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/popup_condition_layout.xml b/app/src/main/res/layout/popup_condition_layout.xml
new file mode 100644
index 0000000..1c2aeb6
--- /dev/null
+++ b/app/src/main/res/layout/popup_condition_layout.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java
index 5d60991..77182e3 100755
--- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java
+++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java
@@ -10,15 +10,15 @@ import com.sucstepsoft.cm_utils.constant.PathConfig;
public class BaseUrlApi {
public static final String IP = "http://219.147.99.164:8082/usercenter/"; /*正式统一用户*/
-// public static final String IP = "http://192.168.0.109:7001/usercenter/"; /*测试统一用户*/
+ // public static final String IP = "http://192.168.0.109:7001/usercenter/"; /*测试统一用户*/
public static final String BASE_URL = IP;
public static final String APP_VERSION = BASE_URL + "appCmVersionManagement/getAppVersion";
public static final String PRISON_PLAN = BASE_URL + "appPlan/goPlan";
public static final String FIELD_SAFETY = BASE_URL + "appFieldSafety/goFloorPlan";
public static final int PHOTO_REQUEST = 233;
public static final int CAMERA_REQUEST = 123;
- public static final String BASE_IP_P = "http://219.147.99.164:8082/"; /*正式IP*/
-// public static final String BASE_IP_P = "http://192.168.0.109:8080/"; /*测试IP*/
+ public static final String BASE_IP_P = "http://219.147.99.164:8082/"; /*正式IP*/
+ // public static final String BASE_IP_P = "http://192.168.0.109:8080/"; /*测试IP*/
public static final String BASE_IP = BASE_IP_P + "servicecity/";/*网格系统*/
public static final String BASE_POPULATION_IP = BASE_IP_P + "population/";/*人口系统*/
public static final String BASE_IMG_URL = BASE_IP + "route/file/downloadfile/true/";
diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/DropDownMenu.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/DropDownMenu.java
new file mode 100644
index 0000000..57df229
--- /dev/null
+++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/views/DropDownMenu.java
@@ -0,0 +1,263 @@
+package com.sucstepsoft.cm_utils.core.widget.views;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.support.annotation.NonNull;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.util.DisplayMetrics;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.AnimationUtils;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.sucstepsoft.cm_utils.R;
+import com.sucstepsoft.cm_utils.utils.ScreenUtils;
+
+import java.util.List;
+
+
+/**
+ * Created by dongjunkun on 2015/6/17.
+ */
+public class DropDownMenu extends LinearLayout {
+
+ //顶部菜单布局
+ private LinearLayout tabMenuView;
+ //底部容器,包含popupMenuViews,maskView
+ private FrameLayout containerView;
+ //弹出菜单父布局
+ private FrameLayout popupMenuViews;
+ //遮罩半透明View,点击可关闭DropDownMenu
+ private View maskView;
+ //tabMenuView里面选中的tab位置,-1表示未选中
+ private int current_tab_position = -1;
+
+ //分割线颜色
+ private int dividerColor = 0xffcccccc;
+ //tab选中颜色
+ private int textSelectedColor = 0xff890c85;
+ //tab未选中颜色
+ private int textUnselectedColor = 0xff111111;
+ //遮罩颜色
+ private int maskColor = 0x88888888;
+ //tab字体大小
+ private int menuTextSize = 14;
+
+ //tab选中图标
+ private int menuSelectedIcon;
+ //tab未选中图标
+ private int menuUnselectedIcon;
+
+ private float menuHeighPercent = 0.5f;
+
+
+ public DropDownMenu(Context context) {
+ super(context, null);
+ }
+
+ public DropDownMenu(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public DropDownMenu(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+
+ setOrientation(VERTICAL);
+
+ //为DropDownMenu添加自定义属性
+ int menuBackgroundColor = 0xffffffff;
+ int underlineColor = 0xffcccccc;
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DropDownMenu);
+ underlineColor = a.getColor(R.styleable.DropDownMenu_ddunderlineColor, underlineColor);
+ dividerColor = a.getColor(R.styleable.DropDownMenu_dddividerColor, dividerColor);
+ textSelectedColor = a.getColor(R.styleable.DropDownMenu_ddtextSelectedColor, textSelectedColor);
+ textUnselectedColor = a.getColor(R.styleable.DropDownMenu_ddtextUnselectedColor, textUnselectedColor);
+ menuBackgroundColor = a.getColor(R.styleable.DropDownMenu_ddmenuBackgroundColor, menuBackgroundColor);
+ maskColor = a.getColor(R.styleable.DropDownMenu_ddmaskColor, maskColor);
+ menuTextSize = a.getDimensionPixelSize(R.styleable.DropDownMenu_ddmenuTextSize, menuTextSize);
+ menuSelectedIcon = a.getResourceId(R.styleable.DropDownMenu_ddmenuSelectedIcon, menuSelectedIcon);
+ menuUnselectedIcon = a.getResourceId(R.styleable.DropDownMenu_ddmenuUnselectedIcon, menuUnselectedIcon);
+ menuHeighPercent = a.getFloat(R.styleable.DropDownMenu_ddmenuMenuHeightPercent, menuHeighPercent);
+ a.recycle();
+
+ //初始化tabMenuView并添加到tabMenuView
+ tabMenuView = new LinearLayout(context);
+ LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ tabMenuView.setOrientation(HORIZONTAL);
+ tabMenuView.setBackgroundColor(menuBackgroundColor);
+ tabMenuView.setLayoutParams(params);
+ addView(tabMenuView, 0);
+
+ //为tabMenuView添加下划线
+ View underLine = new View(getContext());
+ underLine.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dpTpPx(1.0f)));
+ underLine.setBackgroundColor(underlineColor);
+ addView(underLine, 1);
+
+ //初始化containerView并将其添加到DropDownMenu
+ containerView = new FrameLayout(context);
+ containerView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
+ addView(containerView, 2);
+
+ }
+
+ /**
+ * 初始化DropDownMenu
+ *
+ * @param tabTexts
+ * @param popupViews
+ * @param contentView
+ */
+ public void setDropDownMenu(@NonNull List tabTexts, @NonNull List popupViews, @NonNull View contentView) {
+ if (tabTexts.size() != popupViews.size()) {
+ throw new IllegalArgumentException("params not match, tabTexts.size() should be equal popupViews.size()");
+ }
+
+ for (int i = 0; i < tabTexts.size(); i++) {
+ addTab(tabTexts, i);
+ }
+ containerView.addView(contentView, 0);
+
+ maskView = new View(getContext());
+ maskView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
+ maskView.setBackgroundColor(maskColor);
+ maskView.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ closeMenu();
+ }
+ });
+ containerView.addView(maskView, 1);
+ maskView.setVisibility(GONE);
+ if (containerView.getChildAt(2) != null) {
+ containerView.removeViewAt(2);
+ }
+
+ popupMenuViews = new FrameLayout(getContext());
+ popupMenuViews.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) (ScreenUtils.getScreenSize(getContext()).y * menuHeighPercent)));
+ popupMenuViews.setVisibility(GONE);
+ containerView.addView(popupMenuViews, 2);
+
+ for (int i = 0; i < popupViews.size(); i++) {
+ popupViews.get(i).setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+ popupMenuViews.addView(popupViews.get(i), i);
+ }
+
+ }
+
+ private void addTab(@NonNull List tabTexts, int i) {
+ final TextView tab = new TextView(getContext());
+ tab.setSingleLine();
+ tab.setEllipsize(TextUtils.TruncateAt.END);
+ tab.setGravity(Gravity.CENTER);
+ tab.setTextSize(TypedValue.COMPLEX_UNIT_PX, menuTextSize);
+ tab.setLayoutParams(new LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f));
+ tab.setTextColor(textUnselectedColor);
+ tab.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(menuUnselectedIcon), null);
+ tab.setText(tabTexts.get(i));
+ tab.setPadding(dpTpPx(5), dpTpPx(12), dpTpPx(5), dpTpPx(12));
+ //添加点击事件
+ tab.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ switchMenu(tab);
+ }
+ });
+ tabMenuView.addView(tab);
+ //添加分割线
+ if (i < tabTexts.size() - 1) {
+ View view = new View(getContext());
+ view.setLayoutParams(new LayoutParams(dpTpPx(0.5f), ViewGroup.LayoutParams.MATCH_PARENT));
+ view.setBackgroundColor(dividerColor);
+ tabMenuView.addView(view);
+ }
+ }
+
+ /**
+ * 改变tab文字
+ *
+ * @param text
+ */
+ public void setTabText(String text) {
+ if (current_tab_position != -1) {
+ ((TextView) tabMenuView.getChildAt(current_tab_position)).setText(text);
+ }
+ }
+
+ public void setTabClickable(boolean clickable) {
+ for (int i = 0; i < tabMenuView.getChildCount(); i = i + 2) {
+ tabMenuView.getChildAt(i).setClickable(clickable);
+ }
+ }
+
+ /**
+ * 关闭菜单
+ */
+ public void closeMenu() {
+ if (current_tab_position != -1) {
+ ((TextView) tabMenuView.getChildAt(current_tab_position)).setTextColor(textUnselectedColor);
+ ((TextView) tabMenuView.getChildAt(current_tab_position)).setCompoundDrawablesWithIntrinsicBounds(null, null,
+ getResources().getDrawable(menuUnselectedIcon), null);
+ popupMenuViews.setVisibility(View.GONE);
+ popupMenuViews.setAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.dd_menu_out));
+ maskView.setVisibility(GONE);
+ maskView.setAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.dd_mask_out));
+ current_tab_position = -1;
+ }
+
+ }
+
+ /**
+ * DropDownMenu是否处于可见状态
+ *
+ * @return
+ */
+ public boolean isShowing() {
+ return current_tab_position != -1;
+ }
+
+ /**
+ * 切换菜单
+ *
+ * @param target
+ */
+ private void switchMenu(View target) {
+ System.out.println(current_tab_position);
+ for (int i = 0; i < tabMenuView.getChildCount(); i = i + 2) {
+ if (target == tabMenuView.getChildAt(i)) {
+ if (current_tab_position == i) {
+ closeMenu();
+ } else {
+ if (current_tab_position == -1) {
+ popupMenuViews.setVisibility(View.VISIBLE);
+ popupMenuViews.setAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.dd_menu_in));
+ maskView.setVisibility(VISIBLE);
+ maskView.setAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.dd_mask_in));
+ popupMenuViews.getChildAt(i / 2).setVisibility(View.VISIBLE);
+ } else {
+ popupMenuViews.getChildAt(i / 2).setVisibility(View.VISIBLE);
+ }
+ current_tab_position = i;
+ ((TextView) tabMenuView.getChildAt(i)).setTextColor(textSelectedColor);
+ ((TextView) tabMenuView.getChildAt(i)).setCompoundDrawablesWithIntrinsicBounds(null, null,
+ getResources().getDrawable(menuSelectedIcon), null);
+ }
+ } else {
+ ((TextView) tabMenuView.getChildAt(i)).setTextColor(textUnselectedColor);
+ ((TextView) tabMenuView.getChildAt(i)).setCompoundDrawablesWithIntrinsicBounds(null, null,
+ getResources().getDrawable(menuUnselectedIcon), null);
+ popupMenuViews.getChildAt(i / 2).setVisibility(View.GONE);
+ }
+ }
+ }
+
+ public int dpTpPx(float value) {
+ DisplayMetrics dm = getResources().getDisplayMetrics();
+ return (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, dm) + 0.5);
+ }
+}
diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/utils/ScreenUtils.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/utils/ScreenUtils.java
index 02b45f4..bb59677 100755
--- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/utils/ScreenUtils.java
+++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/utils/ScreenUtils.java
@@ -13,6 +13,7 @@ import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresPermission;
import android.util.DisplayMetrics;
+import android.view.Display;
import android.view.Surface;
import android.view.View;
import android.view.Window;
@@ -378,4 +379,16 @@ public final class ScreenUtils {
final DisplayMetrics appDm = Utils.getApp().getResources().getDisplayMetrics();
return systemDm.density != appDm.density;
}
+
+ public static Point getScreenSize(Context context){
+ WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+ Display display = windowManager.getDefaultDisplay();
+ if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2){
+ return new Point(display.getWidth(), display.getHeight());
+ }else{
+ Point point = new Point();
+ display.getSize(point);
+ return point;
+ }
+ }
}
diff --git a/cm_utils/src/main/res/anim/dd_mask_in.xml b/cm_utils/src/main/res/anim/dd_mask_in.xml
new file mode 100644
index 0000000..9b1b02d
--- /dev/null
+++ b/cm_utils/src/main/res/anim/dd_mask_in.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/cm_utils/src/main/res/anim/dd_mask_out.xml b/cm_utils/src/main/res/anim/dd_mask_out.xml
new file mode 100644
index 0000000..4512c46
--- /dev/null
+++ b/cm_utils/src/main/res/anim/dd_mask_out.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/cm_utils/src/main/res/anim/dd_menu_in.xml b/cm_utils/src/main/res/anim/dd_menu_in.xml
new file mode 100644
index 0000000..c3b3599
--- /dev/null
+++ b/cm_utils/src/main/res/anim/dd_menu_in.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/cm_utils/src/main/res/anim/dd_menu_out.xml b/cm_utils/src/main/res/anim/dd_menu_out.xml
new file mode 100644
index 0000000..008ede2
--- /dev/null
+++ b/cm_utils/src/main/res/anim/dd_menu_out.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/cm_utils/src/main/res/drawable/shp_rectangle_white_nora.xml b/cm_utils/src/main/res/drawable/shp_rectangle_white_nora.xml
new file mode 100755
index 0000000..8b48a75
--- /dev/null
+++ b/cm_utils/src/main/res/drawable/shp_rectangle_white_nora.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/cm_utils/src/main/res/values/attrs.xml b/cm_utils/src/main/res/values/attrs.xml
index aacf5ab..9fedaa3 100755
--- a/cm_utils/src/main/res/values/attrs.xml
+++ b/cm_utils/src/main/res/values/attrs.xml
@@ -91,4 +91,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/cm_utils/src/main/res/values/colors.xml b/cm_utils/src/main/res/values/colors.xml
index 0f66518..083c818 100755
--- a/cm_utils/src/main/res/values/colors.xml
+++ b/cm_utils/src/main/res/values/colors.xml
@@ -174,4 +174,11 @@
#AA1BAAE2
#AA37B54A
#AA6B6FD2
+
+ #7B1FA2
+ #111111
+
+ #88888888
+ #f2f2f2
+ #9C27B0
\ No newline at end of file