package com.hdl.photovoltaic.ui.test; import android.os.Bundle; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; import android.view.View; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.databinding.ActivityTestLogBinding; import com.hdl.photovoltaic.other.HdlFileLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.widget.ConfirmationCancelDialog; import com.hdl.photovoltaic.widget.ListStaticDialog; import java.util.IdentityHashMap; import java.util.Map; public class TestLogActivity extends CustomBaseActivity { private ActivityTestLogBinding viewBinding; @Override public Object getContentView() { viewBinding = ActivityTestLogBinding.inflate(getLayoutInflater()); return viewBinding.getRoot(); } @Override public void onBindView(Bundle savedInstanceState) { initView(); initEvent(); } /** * 监听器初始化 */ private void initEvent() { viewBinding.topBackBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); //清除日志 viewBinding.topClearLl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ListStaticDialog listDialog = new ListStaticDialog(_mActivity); listDialog.setLineContent1("清除【当前住宅】的本地日志"); listDialog.setLineContent2("清除【所有住宅】的本地日志"); listDialog.show(); listDialog.setOnHDLChinaOnListener(new ListStaticDialog.onHDLChinaListener() { @Override public void HDLChina() { getDialog(1, listDialog); } }); listDialog.setOnHDLBahrainListener(new ListStaticDialog.onHDLBahrainListener() { @Override public void HDLBahrain() { getDialog(2, listDialog); } }); } }); //上传日志到云端上 viewBinding.uploadingLogTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //todo 需要调云端的接口 HdlThreadLogic.toast(_mActivity, "还没有支持上传日志."); } }); } /** * 清除住宅日志提示框 * * @param value 大于1表示清除所有住宅日志 */ private void getDialog(int value, ListStaticDialog listDialog) { ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(_mActivity); dialog.setTitle("提示"); if (value > 1) { dialog.setContent("是否要清空【所有住宅】本地日志?"); } else { dialog.setContent("是否要清空【当前住宅】本地日志?"); } dialog.show(); dialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() { @Override public void Cancel() { dialog.dismiss(); } }); dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { @Override public void Confirm() { listDialog.dismiss(); dialog.dismiss(); if (value > 1) { HdlFileLogic.getInstance().deleteDirectory(HdlFileLogic.getInstance().getCurrentUserRootPath()); } else { HdlFileLogic.getInstance().deleteFile(HdlFileLogic.getInstance().getLogFileNamePath()); } viewBinding.replyContentTv.setText(""); } }); } /** * 初始化界面 */ private void initView() { HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { String homeId = "测试住宅ID=" + UserConfigManage.getInstance().getHomeId(); String homeName = "测试住宅名称=" + UserConfigManage.getInstance().getHomeName(); viewBinding.homeIdTv.setText(homeId); viewBinding.homeNameTv.setText(homeName); HdlFileLogic.getInstance().delFileLien(HdlFileLogic.getInstance().getLogFileNamePath(), 2); String content = HdlLogLogic.readLog(); int startIndex = 0; int endIndex; Map map = new IdentityHashMap<>(); String[] s = content.split("\r\n"); for (int i = 0; i < s.length; i++) { if (i == 0) { endIndex = s[i].indexOf("s%"); } else { startIndex = 2 + startIndex + s[i - 1].length();//2换行符长度 endIndex = 2 + startIndex + s[i].indexOf("s%");//2换行符长度 } map.put(startIndex, endIndex); } SpannableStringBuilder spannable = new SpannableStringBuilder(content.replace("s%", " "));//注意s%是两个字符,所以占两位 for (Map.Entry entry : map.entrySet()) { int start = entry.getKey(); int end = entry.getValue(); //设置时间体验是另一种颜色 spannable.setSpan(new ForegroundColorSpan(getColor(R.color.text_245EC3)), start, end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); } viewBinding.replyContentTv.setText(spannable); } }, null, null); } }