diff --git a/app/src/main/java/com/project/survey/App.java b/app/src/main/java/com/project/survey/App.java index 150fdca..a8f3b50 100644 --- a/app/src/main/java/com/project/survey/App.java +++ b/app/src/main/java/com/project/survey/App.java @@ -10,6 +10,7 @@ import com.bingce.data.database.DBQueryConstant; import com.bingce.data.database.KeyValueDb; import com.bingce.data.database.ProjectCoordinateDatabase; import com.bingce.data.database.ProjectDb; +import com.bingce.data.database.RoadJobLineDatabase; import com.bingce.data.database.SurveyRecordDatabase; import com.bingce.data.database.SyncRecordDatabase; import com.bingce.data.surveyor.designdata.project.ProjectConstants; @@ -84,6 +85,7 @@ public class App extends Application { ProjectCoordinateDatabase.openDb(this, null); SurveyRecordDatabase.openDb(this, null); SyncRecordDatabase.openDb(this, null); + RoadJobLineDatabase.openDb(this, null); } public boolean isThemeDark() { diff --git a/app/src/main/java/com/project/survey/model/CodeBean.java b/app/src/main/java/com/project/survey/model/CodeBean.java new file mode 100644 index 0000000..65ad929 --- /dev/null +++ b/app/src/main/java/com/project/survey/model/CodeBean.java @@ -0,0 +1,43 @@ +package com.project.survey.model; + +import androidx.annotation.Keep; + +@Keep +public class CodeBean { + private String codeName; + private String Group; + private String Code; + private String style; + + public String getCodeName() { + return codeName; + } + + public void setCodeName(String codeName) { + this.codeName = codeName; + } + + public String getGroup() { + return Group; + } + + public void setGroup(String group) { + this.Group = group; + } + + public String getCode() { + return Code; + } + + public void setCode(String code) { + this.Code = code; + } + + public String getStyle() { + return style; + } + + public void setStyle(String style) { + this.style = style; + } +} diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeLibraryActivity.java b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeLibraryActivity.java index a3bb3b9..9de5ea4 100644 --- a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeLibraryActivity.java +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeLibraryActivity.java @@ -30,10 +30,12 @@ import com.bingce.data.surveyor.surveydata.code.CodeRecord; import com.bingce.surveyor.util.ConstUtils; import com.bingce.surveyor.util.dialog.CustomDialog; import com.bingce.utils.ThreadPoolUtil; +import com.google.gson.Gson; import com.project.survey.App; import com.project.survey.R; import com.project.survey.databinding.ActivityCodeLibraryBinding; import com.project.survey.ui.base.BaseSurveyNewActivity; +import com.project.survey.ui.instrument.setupstation.LauncherEvent; import com.project.survey.ui.pointmeasure.measure.adapter.CodeLibraryAdapter; import java.util.List; diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeModelLibraryActivity.java b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeModelLibraryActivity.java new file mode 100644 index 0000000..4c6ea63 --- /dev/null +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeModelLibraryActivity.java @@ -0,0 +1,178 @@ +package com.project.survey.ui.pointmeasure.measure; + + +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TYPE_LINE; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TYPE_POINT; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TYPE_SURFACE; + +import android.content.Context; +import android.content.Intent; +import android.view.View; + +import androidx.activity.result.ActivityResultLauncher; +import androidx.lifecycle.Observer; + +import com.bingce.data.database.CodeDb; +import com.bingce.data.database.DBQueryConstant; +import com.bingce.data.surveyor.surveydata.code.CodeConstants; +import com.bingce.data.surveyor.surveydata.code.CodeRecord; +import com.bingce.utils.IdUtils; +import com.bingce.utils.ThreadPoolUtil; +import com.project.survey.R; +import com.project.survey.databinding.ActivityCodeModelLibraryBinding; +import com.project.survey.model.CodeBean; +import com.project.survey.ui.base.BaseSurveyNewActivity; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import blankj.utilcode.util.ToastUtils; + +public class CodeModelLibraryActivity extends BaseSurveyNewActivity { + + private ActivityCodeModelLibraryBinding binding; + private Map mapDb; + private List codeBeans; + + @Override + public View getContentView() { + binding = ActivityCodeModelLibraryBinding.inflate(getLayoutInflater()); + return binding.getRoot(); + } + + @Override + protected void initView() { + setTitle(getString(R.string.code_model_library)); + CodeDb.getInstance() + .rawQueryListLiveData(DBQueryConstant.findListByJob(CodeConstants.DB_NAME, "")) + .observe(this, new Observer>() { + @Override + public void onChanged(List codeList) { + mapDb = new HashMap(); + for (int i = codeList.size() - 1; i >= 0; i--) { + mapDb.put(codeList.get(i).codeName, codeList.get(i).code); + } + } + }); + } + + @Override + protected void initData() { + + binding.codeMoldLibBtnConfirm.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + try { + codeBeans = dom2xml(getAssets().open("CASS.xml")); + ThreadPoolUtil.execute(new Runnable() { + @Override + public void run() { + for (int i = codeBeans.size() - 1; i >= 0; i--) { + if (!mapDb.containsKey(codeBeans.get(i).getCodeName()) || !mapDb.containsValue(codeBeans.get(i).getCode())) { + CodeRecord codeRecord = new CodeRecord(); + codeRecord.id = IdUtils.getUUID(); + switch (codeBeans.get(i).getGroup()) { + case "point": + codeRecord.codeGroupType = 0; + break; + case "line": + codeRecord.codeGroupType = 1; + break; + case "surface": + codeRecord.codeGroupType = 2; + break; + } + codeRecord.codeName = codeBeans.get(i).getCodeName(); + codeRecord.code = codeBeans.get(i).getCode(); + codeRecord.colorShape = getResources().getColor(R.color.theme_green); + codeRecord.codeSizeShape = 0; + switch (codeRecord.codeGroupType) { + case SHAPE_TYPE_POINT: + codeRecord.codeFeatureShape = 0; + codeRecord.codeColorContour = getResources().getColor(R.color.theme_green);//点线时候轮廓线默认为colorShape + break; + case SHAPE_TYPE_LINE: + codeRecord.codeFeatureShape = 0; + codeRecord.codeColorContour = getResources().getColor(R.color.theme_green);//点线时候轮廓线默认为colorShape + break; + case SHAPE_TYPE_SURFACE: + codeRecord.codeFeatureShape = 0; + codeRecord.codeColorContour = getResources().getColor(R.color.theme_green);//面的时候使用 + break; + } + CodeDb.getInstance().save(codeRecord); + } + } + runOnUiThread(new Runnable() { + @Override + public void run() { + ToastUtils.showShort(getString(R.string.import_successful) + "!"); + finish(); + } + }); + } + }); + } catch (Exception e) { + ToastUtils.showShort(e.getMessage().toString()); + e.printStackTrace(); + } + } + }); + } + + public List dom2xml(InputStream is) throws Exception { + //一系列的初始化 + List list = new ArrayList<>(); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + //获得Document对象 + Document document = builder.parse(is); + //获得code的List + NodeList codeList = document.getElementsByTagName("CodeItem"); + //遍历code标签 + for (int i = 0; i < codeList.getLength(); i++) { + //获得code标签 + Node node_code = codeList.item(i); + //获得code标签里面的标签 + NodeList codeNodes = node_code.getChildNodes(); + //新建code对象 + CodeBean codeBean = new CodeBean(); + //遍历code标签里面的标签 + for (int j = 0; j < codeNodes.getLength(); j++) { + //获得标签 + Node codeNode = codeNodes.item(j); + //判断是标签 + if ("Name".equals(codeNode.getNodeName())) { + String name = codeNode.getTextContent(); + codeBean.setCodeName(name); + } else if ("Code".equals(codeNode.getNodeName())) { + String code = codeNode.getTextContent(); + codeBean.setCode(code); + } else if ("Group".equals(codeNode.getNodeName())) { + String group = codeNode.getTextContent(); + codeBean.setGroup(group); + } else if ("Style".equals(codeNode.getNodeName())) { + String style = codeNode.getTextContent(); + codeBean.setStyle(style); + } + } + //加到List中 + list.add(codeBean); + } + return list; + } + + public static void start(ActivityResultLauncher launcher, Context context) { + launcher.launch(new Intent(context, CodeModelLibraryActivity.class)); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeStylePointLineActivity.java b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeStylePointLineActivity.java index d3a771c..565b0b9 100644 --- a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeStylePointLineActivity.java +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeStylePointLineActivity.java @@ -2,6 +2,22 @@ package com.project.survey.ui.pointmeasure.measure; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_CENTER_CIRCLE; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_CIRCLE_EMPTY; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_CIRCLE_FULL; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_RHOMBUS_EMPTY; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_RHOMBUS_FULL; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_ROUNDED_FIVE_STAR; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_SQUARE_EMPTY; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_SQUARE_FULL; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_STRAIGHT_FIVE_STAR; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TRIANGLE_DOWN_EMPTY; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TRIANGLE_DOWN_FULL; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TRIANGLE_UP_EMPTY; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TRIANGLE_UP_FULL; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TYPE_LINE; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TYPE_POINT; + import android.content.Context; import android.content.Intent; import android.view.View; @@ -14,7 +30,11 @@ import com.bingce.surveyor.util.ConstUtils; import com.bingce.surveyor.util.dialog.CustomRecycleDialog; import com.bingce.utils.IntentUtil; +import com.project.survey.R; +import com.project.survey.databinding.ActivityCodeStylePointLineBinding; import com.project.survey.ui.base.BaseSurveyNewActivity; +import com.project.survey.ui.instrument.setupstation.LauncherEvent; +import com.project.survey.ui.pointmeasure.measure.adapter.CodeStyleAdapter; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeStyleSurfaceActivity.java b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeStyleSurfaceActivity.java new file mode 100644 index 0000000..e1f8855 --- /dev/null +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/CodeStyleSurfaceActivity.java @@ -0,0 +1,177 @@ +package com.project.survey.ui.pointmeasure.measure; + + +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TYPE_LINE; + +import android.content.Context; +import android.content.Intent; +import android.graphics.drawable.GradientDrawable; +import android.view.View; + +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; + + +import com.bingce.surveyor.util.ConstUtils; + +import com.bingce.utils.IntentUtil; +import com.project.survey.R; +import com.project.survey.databinding.ActivityCodeStyleSurfaceBinding; +import com.project.survey.ui.base.BaseSurveyNewActivity; +import com.project.survey.ui.instrument.setupstation.LauncherEvent; +import com.project.survey.util.CommonUtils; +import com.project.survey.util.DrawableUtils; + + +public class CodeStyleSurfaceActivity extends BaseSurveyNewActivity { + + private ActivityCodeStyleSurfaceBinding binding; + private int contourColor,fillColor; + private int codeShapeSizeIndex = 0; + private int codeStyleIndexLine = 0; + private boolean isEditFillColor; + + @Override + public View getContentView() { + binding = ActivityCodeStyleSurfaceBinding.inflate(getLayoutInflater()); + return binding.getRoot(); + } + + @Override + protected void initView() { + setTitle(getString(R.string.style)); + } + + @Override + protected void initData() { + + contourColor = IntentUtil.intExtra(getIntent(),KEY_CONTOUR_COLOR); + + fillColor = IntentUtil.intExtra(getIntent(),KEY_FILL_COLOR); + + codeShapeSizeIndex = IntentUtil.intExtra(getIntent(),KEY_CODE_SHAPE_SIZE_INDEX); + + codeStyleIndexLine = IntentUtil.intExtra(getIntent(),KEY_CODE_STYLE_INDEX_LINE); + + setCodeStyle(); + + binding.ivContourColorPalette.setImageDrawable(DrawableUtils.tintModifyColorDrawable(getDrawable(R.drawable.icon_code_color_palette), contourColor)); + + binding.ivFillColorPalette.setBackgroundColor(fillColor); + + previewStyle(); + + binding.rlContourStyle.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + CodeStylePointLineActivity.start(launcher, CodeStyleSurfaceActivity.this, SHAPE_TYPE_LINE, contourColor, codeShapeSizeIndex, 0,codeStyleIndexLine); + } + }); + + binding.rlContourColor.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + isEditFillColor = false; + PickerColorActivity.start(launcher, CodeStyleSurfaceActivity.this, contourColor); + } + }); + + binding.rlFillColor.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + isEditFillColor = true; + PickerColorActivity.start(launcher, CodeStyleSurfaceActivity.this, fillColor); + } + }); + + binding.styleCodeBtnConfirm.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(); + intent.putExtra(ConstUtils.intentConst.keyCodeStyleIndexLine, codeStyleIndexLine); + intent.putExtra(ConstUtils.intentConst.keyCodeShapeSize, codeShapeSizeIndex); + intent.putExtra(ConstUtils.intentConst.keyCodeShapeContourColor, contourColor); + intent.putExtra(ConstUtils.intentConst.keyCodeShapeFillColor, fillColor); + setResult(LauncherEvent.launcher_code_shape_surface,intent); + finish(); + } + }); + } + + /** + * 样式 + */ + private void setCodeStyle() { + GradientDrawable gradientDrawable = (GradientDrawable)binding.contourStyle.getBackground(); + int lineWidth = 0; + switch (codeShapeSizeIndex){ + case 0: + lineWidth = CommonUtils.dip2px(0.8f); + break; + case 1: + lineWidth = CommonUtils.dip2px(1.3f); + break; + case 2: + lineWidth = CommonUtils.dip2px(1.8f); + break; + } + gradientDrawable.setStroke(lineWidth, contourColor,CommonUtils.dip2px(codeStyleIndexLine + codeStyleIndexLine * 2),CommonUtils.dip2px(codeStyleIndexLine + codeStyleIndexLine * 2)); + gradientDrawable.setColor(getColor(R.color.white)); + } + private static String KEY_FILL_COLOR = "keyFillColor"; + private static String KEY_CONTOUR_COLOR = "keyContourColor"; + private static String KEY_CODE_SHAPE_SIZE_INDEX = "keyCodeShapeSizeIndex"; + private static String KEY_CODE_STYLE_INDEX_LINE = "keyCodeStyleIndexLine"; + + public static void start(ActivityResultLauncher launcher,Context context,int codeShapeColor,int contourColor,int codeShapeSizeIndex,int codeStyleIndexLine){ + Intent intent = new Intent(context, CodeStyleSurfaceActivity.class); + intent.putExtra(KEY_FILL_COLOR,codeShapeColor); + intent.putExtra(KEY_CONTOUR_COLOR,contourColor); + intent.putExtra(KEY_CODE_SHAPE_SIZE_INDEX,codeShapeSizeIndex); + intent.putExtra(KEY_CODE_STYLE_INDEX_LINE,codeStyleIndexLine); + launcher.launch(intent); + } + + public final ActivityResultLauncher launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + if (result != null) { + switch (result.getResultCode()){ + case LauncherEvent.launcher_add_code_color: + int color = result.getData().getIntExtra(ConstUtils.intentConst.keyAddCodeColor, -1); + if (!isEditFillColor){ + contourColor = color; + setCodeStyle(); + binding.ivContourColorPalette.setImageDrawable(DrawableUtils.tintModifyColorDrawable(getDrawable(R.drawable.icon_code_color_palette),color)); + }else { + fillColor = color; + binding.ivFillColorPalette.setBackgroundColor(color); + } + previewStyle(); + break; + case LauncherEvent.launcher_code_style: + codeStyleIndexLine = result.getData().getIntExtra(ConstUtils.intentConst.keyCodeStyleIndexLine,0); + codeShapeSizeIndex = result.getData().getIntExtra(ConstUtils.intentConst.keyCodeShapeSize,0); + setCodeStyle(); + previewStyle(); + break; + } + } + }); + + private void previewStyle(){ + GradientDrawable gradientDrawable = (GradientDrawable)binding.tvPreviewStyle.getBackground(); + int lineWidth = 0; + switch (codeShapeSizeIndex){ + case 0: + lineWidth = CommonUtils.dip2px(0.8f); + break; + case 1: + lineWidth = CommonUtils.dip2px(1.3f); + break; + case 2: + lineWidth = CommonUtils.dip2px(1.8f); + break; + } + gradientDrawable.setStroke(lineWidth, contourColor,CommonUtils.dip2px(codeStyleIndexLine + codeStyleIndexLine * 2),CommonUtils.dip2px(codeStyleIndexLine + codeStyleIndexLine * 2)); + gradientDrawable.setColor(fillColor); + } +} diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/PickerColorActivity.java b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/PickerColorActivity.java index b2a0691..e522224 100644 --- a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/PickerColorActivity.java +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/PickerColorActivity.java @@ -33,14 +33,11 @@ public class PickerColorActivity extends BaseSurveyNewActivity { protected void initView() { setTitle(getString(R.string.picker_color)); - binding.pickerCodeBtnConfirm.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(); - intent.putExtra(ConstUtils.intentConst.keyAddCodeColor, selectColor); - setResult(LauncherEvent.launcher_add_code_color,intent); - finish(); - } + binding.pickerCodeBtnConfirm.setOnClickListener(v -> { + Intent intent = new Intent(); + intent.putExtra(ConstUtils.intentConst.keyAddCodeColor, selectColor); + setResult(LauncherEvent.launcher_add_code_color,intent); + finish(); }); int defultColor = IntentUtil.intExtra(getIntent(), DEFULT_COLOR); diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/adapter/CodeStyleAdapter.java b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/adapter/CodeStyleAdapter.java new file mode 100644 index 0000000..3c45fa1 --- /dev/null +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/adapter/CodeStyleAdapter.java @@ -0,0 +1,158 @@ +package com.project.survey.ui.pointmeasure.measure.adapter; + + +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TYPE_LINE; +import static com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils.SHAPE_TYPE_POINT; + +import android.content.Context; +import android.graphics.drawable.GradientDrawable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + + +import com.project.survey.R; +import com.project.survey.ui.pointmeasure.measure.util.CodeConsUtils; +import com.project.survey.util.CommonUtils; +import com.project.survey.util.DrawableUtils; + +import java.util.List; + + +public class CodeStyleAdapter extends RecyclerView.Adapter { + + private Context context; + private List list; + private int codeShapeType; + private int codeShapeColor; + private int codeShapeSize; + private int selectPosition; + private OnItemClickListener mOnItemClickListener; + + public CodeStyleAdapter(Context context, int selectPosition, List list , int codeShapeType, int codeShapeColor, int codeShapeSize) { + this.context = context; + this.selectPosition = selectPosition; + this.list = list; + this.codeShapeType = codeShapeType; + this.codeShapeColor = codeShapeColor; + this.codeShapeSize = codeShapeSize; + } + + @NonNull + @Override + public SimpleHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(context).inflate(R.layout.layout_code_style_item, parent, false); + return new SimpleHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull SimpleHolder holder, int position) { + + if (codeShapeType == SHAPE_TYPE_POINT){ + + holder.pointView.setVisibility(View.VISIBLE); + holder.lineView.setVisibility(View.GONE); + + //点列表 + ViewGroup.LayoutParams params = holder.pointView.getLayoutParams(); + switch (codeShapeSize){ + case 0: + params.width = CommonUtils.dip2px(5); + params.height = CommonUtils.dip2px(5); + break; + case 1: + params.width = CommonUtils.dip2px(10); + params.height = CommonUtils.dip2px(10); + break; + case 2: + params.width = CommonUtils.dip2px(15); + params.height = CommonUtils.dip2px(15); + break; + } + holder.pointView.setLayoutParams(params); + + if (selectPosition == position){ + holder.pointView.setImageDrawable(DrawableUtils.tintModifyColorDrawable(context.getDrawable(CodeConsUtils.showPointIcon(position)),context.getColor(R.color.white))); + holder.llBg.setBackgroundColor(codeShapeColor); + }else { + holder.pointView.setImageDrawable(DrawableUtils.tintModifyColorDrawable(context.getDrawable(CodeConsUtils.showPointIcon(position)), codeShapeColor)); + holder.llBg.setBackgroundColor(context.getColor(R.color.white)); + } + + }else if (codeShapeType == SHAPE_TYPE_LINE){ + //线列表 + holder.pointView.setVisibility(View.GONE); + holder.lineView.setVisibility(View.VISIBLE); + + GradientDrawable gradientDrawable = (GradientDrawable)holder.lineView.getBackground(); + + int lineWidth = 0; + switch (codeShapeSize){ + case 0: + lineWidth = CommonUtils.dip2px(0.8f); + break; + case 1: + lineWidth = CommonUtils.dip2px(1.3f); + break; + case 2: + lineWidth = CommonUtils.dip2px(1.8f); + break; + } + + if (selectPosition == position){ + gradientDrawable.setStroke(lineWidth,context.getColor(R.color.white),CommonUtils.dip2px(position + position * 2),CommonUtils.dip2px(position + position * 2)); + holder.llBg.setBackgroundColor(codeShapeColor); + }else { + gradientDrawable.setStroke(lineWidth,codeShapeColor,CommonUtils.dip2px(position + position * 2),CommonUtils.dip2px(position + position * 2)); + holder.llBg.setBackgroundColor(context.getColor(R.color.white)); + } + } + + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mOnItemClickListener.onItemClickListener(holder.getAdapterPosition()); + } + }); + } + + @Override + public int getItemCount() { + return list == null ? 0:list.size(); + } + + public void setSelectedPosition(int selectPosition) { + this.selectPosition = selectPosition; + notifyDataSetChanged(); + } + + public void setShapeSize(List list,int shapeSize) { + this.list = list; + this.codeShapeSize = shapeSize; + notifyDataSetChanged(); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.mOnItemClickListener = onItemClickListener; + } + public interface OnItemClickListener { + void onItemClickListener(int position); + } + + public class SimpleHolder extends RecyclerView.ViewHolder{ + private ImageView pointView; + private View lineView; + private LinearLayout llBg; + public SimpleHolder(@NonNull View itemView) { + super(itemView); + pointView = itemView.findViewById(R.id.pointView); + lineView = itemView.findViewById(R.id.lineView); + llBg = itemView.findViewById(R.id.ll_bg); + } + } +} diff --git a/app/src/main/res/layout/activity_code_model_library.xml b/app/src/main/res/layout/activity_code_model_library.xml new file mode 100644 index 0000000..e47bcc7 --- /dev/null +++ b/app/src/main/res/layout/activity_code_model_library.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +