提交 892cb6dd 编写于 作者: J jackjintai

modify:

1、优化日志输出和GPS H5地图定位功能
上级 f019e7d2
......@@ -3,15 +3,12 @@ package com.didichuxing.doraemonkit.weex.log;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.didichuxing.doraemonkit.kit.logInfo.LogInfoDokitView;
import com.didichuxing.doraemonkit.kit.logInfo.LogLine;
import com.didichuxing.doraemonkit.kit.loginfo.LogInfoDokitView;
import com.didichuxing.doraemonkit.kit.loginfo.LogInfoManager;
import com.didichuxing.doraemonkit.kit.loginfo.LogLine;
import com.didichuxing.doraemonkit.ui.widget.titlebar.HomeTitleBar;
import com.didichuxing.doraemonkit.ui.widget.titlebar.TitleBar;
import com.didichuxing.doraemonkit.weex.R;
import java.util.ArrayList;
......@@ -41,6 +38,10 @@ public class WeexLogInfoDokitView extends LogInfoDokitView {
((HomeTitleBar) mHomeTitleBar).setListener(new HomeTitleBar.OnTitleBarClickListener() {
@Override
public void onRightClick() {
//关闭日志服务
LogInfoManager.getInstance().stop();
//清空回调
LogInfoManager.getInstance().removeListener();
detach();
}
});
......
......@@ -4,6 +4,7 @@ import android.content.Context;
import com.didichuxing.doraemonkit.kit.AbstractKit;
import com.didichuxing.doraemonkit.kit.Category;
import com.didichuxing.doraemonkit.kit.loginfo.LogInfoManager;
import com.didichuxing.doraemonkit.ui.base.DokitIntent;
import com.didichuxing.doraemonkit.ui.base.DokitViewManager;
import com.didichuxing.doraemonkit.weex.R;
......@@ -34,6 +35,8 @@ public class WeexLogKit extends AbstractKit {
DokitIntent intent = new DokitIntent(WeexLogInfoDokitView.class);
intent.mode = DokitIntent.MODE_SINGLE_INSTANCE;
DokitViewManager.getInstance().attach(intent);
//开启日志服务
LogInfoManager.getInstance().start();
}
@Override
......
......@@ -94,8 +94,13 @@
android:orientation="horizontal">
<Button
android:id="@+id/btn_top"
android:id="@+id/btn_clean"
style="@style/DK.RadioButton.Left"
android:text="清空日志" />
<Button
android:id="@+id/btn_top"
style="@style/DK.RadioButton.middle"
android:text="回到顶部" />
<Button
......
......@@ -43,6 +43,8 @@
center: center,
zoom: 13
});
//赋值给window对象
window['map'] = map;
//移动地图中心位置
map.panBy(120, 180);
......@@ -51,6 +53,9 @@
position: center,
map: map
});
window['marker'] = marker;
//设置Marker的动画属性为从落下
marker.setAnimation(qq.maps.MarkerAnimation.DOWN);
marker.setDraggable(true);
......@@ -65,6 +70,23 @@
window.location = "doraemon://invokeNative/sendLocation?lat=" + center.getLat().toFixed(6) + "&lng=" + center.getLng().toFixed(6);
}
var updateLocation = function(lat,lng){
var center = new qq.maps.LatLng(lat, lng);
if(window['map']){
var map = window['map'];
map.setCenter(center);
//移动地图中心位置
map.panBy(120, 180);
}
if(window['marker']){
var marker = window['marker'];
marker.setPosition(center);
//设置Marker的动画属性为从落下
marker.setAnimation(qq.maps.MarkerAnimation.DOWN);
}
}
</script>
</head>
<!--onload="init(0, 0)"-->
......
......@@ -37,7 +37,7 @@ import com.didichuxing.doraemonkit.kit.health.HealthKit;
import com.didichuxing.doraemonkit.kit.health.model.AppHealthInfo;
import com.didichuxing.doraemonkit.kit.largepicture.LargePictureKit;
import com.didichuxing.doraemonkit.kit.layoutborder.LayoutBorderKit;
import com.didichuxing.doraemonkit.kit.logInfo.LogInfoKit;
import com.didichuxing.doraemonkit.kit.loginfo.LogInfoKit;
import com.didichuxing.doraemonkit.kit.methodtrace.MethodCostKit;
import com.didichuxing.doraemonkit.kit.mode.FloatModeKit;
import com.didichuxing.doraemonkit.kit.network.MockKit;
......@@ -70,7 +70,6 @@ import com.sjtu.yifei.AbridgeCallBack;
import com.sjtu.yifei.IBridge;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
......@@ -259,15 +258,15 @@ class DoraemonKitReal {
try {
AbstractKit weexLogKit = (AbstractKit) Class.forName("com.didichuxing.doraemonkit.weex.log.WeexLogKit").newInstance();
weex.add(weexLogKit);
AbstractKit storageKit = (AbstractKit) Class.forName("com.didichuxing.doraemonkit.weex.storage.StorageKit").newInstance();
AbstractKit storageKit = (AbstractKit) Class.forName("com.didichuxing.doraemonkit.weex.storage.WeexStorageKit").newInstance();
weex.add(storageKit);
AbstractKit weexInfoKit = (AbstractKit) Class.forName("com.didichuxing.doraemonkit.weex.info.WeexInfoKit").newInstance();
weex.add(weexInfoKit);
AbstractKit devToolKit = (AbstractKit) Class.forName("com.didichuxing.doraemonkit.weex.devtool.DevToolKit").newInstance();
AbstractKit devToolKit = (AbstractKit) Class.forName("com.didichuxing.doraemonkit.weex.devtool.WeexDevToolKit").newInstance();
weex.add(devToolKit);
DokitConstant.KIT_MAPS.put(Category.WEEX, weex);
} catch (Exception e) {
//LogHelper.e(TAG, "e====>" + e.getMessage());
}
DokitConstant.KIT_MAPS.put(Category.PERFORMANCE, performance);
......
......@@ -110,7 +110,7 @@ public class DataPickManager {
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
LogHelper.e(TAG, "success===>" + response.body());
//LogHelper.e(TAG, "success===>" + response.body());
if (from == jsonFromFile) {
FileUtils.delete(filePath);
}
......
......@@ -10,6 +10,7 @@ import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.webkit.WebView;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
......@@ -124,6 +125,10 @@ public class GpsMockFragment extends BaseFragment implements SettingItemAdapter.
double longitude = Double.valueOf(mLongitude.getText().toString());
GpsMockManager.getInstance().mockLocation(latitude, longitude);
GpsMockConfig.saveMockLocation(getContext(), new LatLng(latitude, longitude));
//刷新地图
String url = String.format("javascript:updateLocation(%s,%s)", latitude, longitude);
mWebView.loadUrl(url);
//WebUtil.webViewLoadLocalHtml(mWebView, "html/map.html");
Toast.makeText(getContext(), getString(R.string.dk_gps_location_change_toast, mLatitude.getText(), mLongitude.getText()), Toast.LENGTH_SHORT).show();
}
});
......
package com.didichuxing.doraemonkit.kit.logInfo;
package com.didichuxing.doraemonkit.kit.loginfo;
import android.content.Context;
import android.support.v7.widget.LinearLayoutManager;
......@@ -23,7 +23,6 @@ import com.didichuxing.doraemonkit.ui.base.AbsDokitView;
import com.didichuxing.doraemonkit.ui.base.DokitViewLayoutParams;
import com.didichuxing.doraemonkit.ui.loginfo.LogItemAdapter;
import com.didichuxing.doraemonkit.ui.widget.titlebar.TitleBar;
import com.didichuxing.doraemonkit.util.LogHelper;
import java.util.List;
......@@ -35,17 +34,15 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
private static final int MAX_LOG_LINE_NUM = 10000;
private RecyclerView mLogList;
private RecyclerView mLogRv;
private LogItemAdapter mLogItemAdapter;
private EditText mLogFilter;
private RadioGroup mRadioGroup;
private FrameLayout mTitleBar;
/**
* 单行的log
*/
private TextView mLogHint;
private RelativeLayout mLogPage;
private Button mTop;
private Button mBottom;
private RelativeLayout mLogRvWrap;
private boolean mIsLoaded;
......@@ -53,15 +50,8 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
@Override
public void onCreate(Context context) {
LogInfoManager.getInstance().registerListener(this);
LogInfoManager.getInstance().start();
}
@Override
public void onDestroy() {
super.onDestroy();
LogInfoManager.getInstance().stop();
LogInfoManager.getInstance().removeListener();
}
@Override
public View onCreateView(Context context, FrameLayout view) {
......@@ -75,11 +65,11 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
public void initView() {
mLogHint = findViewById(R.id.log_hint);
mLogPage = findViewById(R.id.log_page);
mLogList = findViewById(R.id.log_list);
mLogList.setLayoutManager(new LinearLayoutManager(getContext()));
mLogRvWrap = findViewById(R.id.log_page);
mLogRv = findViewById(R.id.log_list);
mLogRv.setLayoutManager(new LinearLayoutManager(getContext()));
mLogItemAdapter = new LogItemAdapter(getContext());
mLogList.setAdapter(mLogItemAdapter);
mLogRv.setAdapter(mLogItemAdapter);
mLogFilter = findViewById(R.id.log_filter);
mLogFilter.addTextChangedListener(new TextWatcher() {
@Override
......@@ -97,7 +87,7 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
mLogItemAdapter.getFilter().filter(s);
}
});
mTitleBar = findViewById(R.id.dokit_title_bar);
FrameLayout mTitleBar = findViewById(R.id.dokit_title_bar);
if (mTitleBar instanceof TitleBar) {
((TitleBar) mTitleBar).setOnTitleBarClickListener(new TitleBar.OnTitleBarClickListener() {
@Override
......@@ -136,7 +126,7 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
mLogItemAdapter.getFilter().filter(mLogFilter.getText());
}
});
mLogList.addOnScrollListener(new RecyclerView.OnScrollListener() {
mLogRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
......@@ -149,29 +139,41 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
final LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
// if the bottom of the list isn't visible anymore, then stop autoscrolling
mAutoscrollToBottom = (layoutManager.findLastCompletelyVisibleItemPosition() == recyclerView.getAdapter().getItemCount() - 1);
mAutoScrollToBottom = (layoutManager.findLastCompletelyVisibleItemPosition() == recyclerView.getAdapter().getItemCount() - 1);
}
});
mRadioGroup.check(R.id.verbose);
mTop = findViewById(R.id.btn_top);
mBottom = findViewById(R.id.btn_bottom);
mTop.setOnClickListener(new View.OnClickListener() {
Button mBtnTop = findViewById(R.id.btn_top);
Button mBtnBottom = findViewById(R.id.btn_bottom);
Button mBtnClean = findViewById(R.id.btn_clean);
mBtnTop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mLogItemAdapter == null || mLogItemAdapter.getItemCount() == 0) {
return;
}
mLogRv.smoothScrollToPosition(0);
}
});
mBtnBottom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mLogItemAdapter == null || mLogItemAdapter.getItemCount() == 0) {
return;
}
mLogList.smoothScrollToPosition(0);
mLogRv.smoothScrollToPosition(mLogItemAdapter.getItemCount() - 1);
}
});
mBottom.setOnClickListener(new View.OnClickListener() {
mBtnClean.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mLogItemAdapter == null || mLogItemAdapter.getItemCount() == 0) {
return;
}
mLogList.smoothScrollToPosition(mLogItemAdapter.getItemCount() - 1);
counter = 0;
mLogItemAdapter.clearLog();
}
});
}
......@@ -181,22 +183,22 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
public void initDokitViewLayoutParams(DokitViewLayoutParams params) {
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
params.width = DokitViewLayoutParams.MATCH_PARENT;
params.height = DokitViewLayoutParams.WRAP_CONTENT;
params.height = DokitViewLayoutParams.MATCH_PARENT;
}
private int counter = 0;
private static final int UPDATE_CHECK_INTERVAL = 200;
private boolean mAutoscrollToBottom = true;
private boolean mAutoScrollToBottom = true;
@Override
public void onLogCatch(List<LogLine> logLines) {
if (mLogList == null || mLogItemAdapter == null) {
if (mLogRv == null || mLogItemAdapter == null) {
return;
}
if (!mIsLoaded) {
mIsLoaded = true;
findViewById(R.id.ll_loading).setVisibility(View.GONE);
mLogList.setVisibility(View.VISIBLE);
mLogRv.setVisibility(View.VISIBLE);
}
if (logLines.size() == 1) {
mLogItemAdapter.addWithFilter(logLines.get(0), mLogFilter.getText(), true);
......@@ -216,13 +218,13 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
mLogItemAdapter.removeFirst(numItemsToRemove);
//LogHelper.d(TAG, "truncating %d lines from log list to avoid out of memory errors:" + numItemsToRemove);
}
if (mAutoscrollToBottom) {
if (mAutoScrollToBottom) {
scrollToBottom();
}
}
private void scrollToBottom() {
mLogList.scrollToPosition(mLogItemAdapter.getItemCount() - 1);
mLogRv.scrollToPosition(mLogItemAdapter.getItemCount() - 1);
}
private int getSelectLogLevel() {
......@@ -249,15 +251,27 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
isMaximize = false;
if (isNormalMode()) {
mLogHint.setVisibility(View.VISIBLE);
mLogPage.setVisibility(View.GONE);
mLogRvWrap.setVisibility(View.GONE);
FrameLayout.LayoutParams layoutParams = getNormalLayoutParams();
if (layoutParams == null) {
return;
}
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.gravity = Gravity.START | Gravity.TOP;
getRootView().setLayoutParams(layoutParams);
} else {
final WindowManager.LayoutParams layoutParams = getSystemLayoutParams();
mLogHint.setVisibility(View.VISIBLE);
mLogRvWrap.setVisibility(View.GONE);
WindowManager.LayoutParams layoutParams = getSystemLayoutParams();
if (layoutParams == null) {
return;
}
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.gravity = Gravity.START | Gravity.TOP;
mLogHint.setVisibility(View.VISIBLE);
mLogPage.setVisibility(View.GONE);
mWindowManager.updateViewLayout(getRootView(), layoutParams);
}
......@@ -272,15 +286,26 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
isMaximize = true;
if (isNormalMode()) {
mLogHint.setVisibility(View.GONE);
mLogPage.setVisibility(View.VISIBLE);
mLogRvWrap.setVisibility(View.VISIBLE);
FrameLayout.LayoutParams layoutParams = getNormalLayoutParams();
if (layoutParams == null) {
return;
}
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.gravity = Gravity.START | Gravity.TOP;
getRootView().setLayoutParams(layoutParams);
} else {
final WindowManager.LayoutParams layoutParams = getSystemLayoutParams();
mLogHint.setVisibility(View.GONE);
mLogRvWrap.setVisibility(View.VISIBLE);
WindowManager.LayoutParams layoutParams = getSystemLayoutParams();
if (layoutParams == null) {
return;
}
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.gravity = Gravity.START | Gravity.TOP;
mLogHint.setVisibility(View.GONE);
mLogPage.setVisibility(View.VISIBLE);
mWindowManager.updateViewLayout(getRootView(), layoutParams);
}
......@@ -302,6 +327,7 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
if (getActivity() != null && !getActivity().getClass().getSimpleName().equals(UniversalActivity.class.getSimpleName())) {
minimize();
}
LogInfoManager.getInstance().registerListener(this);
}
@Override
......@@ -309,4 +335,8 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
return true;
}
@Override
public boolean canDrag() {
return false;
}
}
\ No newline at end of file
package com.didichuxing.doraemonkit.kit.logInfo;
package com.didichuxing.doraemonkit.kit.loginfo;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import com.didichuxing.doraemonkit.kit.logInfo.reader.LogcatReader;
import com.didichuxing.doraemonkit.kit.logInfo.reader.LogcatReaderLoader;
import com.didichuxing.doraemonkit.kit.loginfo.reader.LogcatReader;
import com.didichuxing.doraemonkit.kit.loginfo.reader.LogcatReaderLoader;
import com.didichuxing.doraemonkit.util.ExecutorUtil;
import com.didichuxing.doraemonkit.util.LogHelper;
......@@ -25,7 +25,7 @@ public class LogInfoManager {
private OnLogCatchListener mListener;
private LogCatchRunnable mTask;
private LogCatchRunnable mLogCatchTask;
private static class Holder {
private static LogInfoManager INSTANCE = new LogInfoManager();
......@@ -39,20 +39,25 @@ public class LogInfoManager {
}
public void start() {
if (mTask != null) {
mTask.stop();
if (mLogCatchTask != null) {
mLogCatchTask.stop();
}
mTask = new LogCatchRunnable();
ExecutorUtil.execute(mTask);
mLogCatchTask = new LogCatchRunnable();
ExecutorUtil.execute(mLogCatchTask);
}
public void stop() {
if (mTask != null) {
mTask.stop();
if (mLogCatchTask != null) {
mLogCatchTask.stop();
}
}
public interface OnLogCatchListener {
/**
* 新增日志回调
*
* @param logLine
*/
void onLogCatch(List<LogLine> logLine);
}
......@@ -64,6 +69,9 @@ public class LogInfoManager {
mListener = null;
}
/**
* 接收log 的内部Handler
*/
private static class InternalHandler extends Handler {
public InternalHandler(Looper looper) {
super(looper);
......@@ -72,12 +80,13 @@ public class LogInfoManager {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_PUBLISH_LOG: {
case MESSAGE_PUBLISH_LOG:
if (LogInfoManager.getInstance().mListener != null) {
LogInfoManager.getInstance().mListener.onLogCatch((List<LogLine>) msg.obj);
}
}
break;
break;
default:
break;
}
......@@ -85,6 +94,9 @@ public class LogInfoManager {
}
/**
* 获取日志的内部线程
*/
private static class LogCatchRunnable implements Runnable {
private boolean isRunning = true;
private Handler internalHandler;
......
package com.didichuxing.doraemonkit.kit.logInfo;
package com.didichuxing.doraemonkit.kit.loginfo;
import android.os.Bundle;
import android.support.annotation.NonNull;
......@@ -51,8 +51,14 @@ public class LogInfoSettingFragment extends BaseFragment {
DokitIntent intent = new DokitIntent(LogInfoDokitView.class);
intent.mode = DokitIntent.MODE_SINGLE_INSTANCE;
DokitViewManager.getInstance().attach(intent);
//开启日志服务
LogInfoManager.getInstance().start();
} else {
DokitViewManager.getInstance().detach(LogInfoDokitView.class);
//关闭日志服务
LogInfoManager.getInstance().stop();
//清空回调
LogInfoManager.getInstance().removeListener();
}
LogInfoConfig.setLogInfoOpen(getContext(), on);
}
......
package com.didichuxing.doraemonkit.kit.logInfo;
package com.didichuxing.doraemonkit.kit.loginfo;
import android.text.TextUtils;
import android.util.Log;
import com.didichuxing.doraemonkit.kit.logInfo.reader.ScrubberUtils;
import com.didichuxing.doraemonkit.kit.loginfo.reader.ScrubberUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
......
package com.didichuxing.doraemonkit.kit.logInfo.helper;
package com.didichuxing.doraemonkit.kit.loginfo.helper;
import com.didichuxing.doraemonkit.util.LogHelper;
......@@ -58,7 +58,7 @@ public class LogcatHelper {
} finally {
if (dumpLogcatProcess != null) {
RuntimeHelper.destroy(dumpLogcatProcess);
LogHelper.d(TAG,"destroyed 1 dump logcat process");
// LogHelper.d(TAG,"destroyed 1 dump logcat process");
}
}
......
package com.didichuxing.doraemonkit.kit.logInfo.helper;
package com.didichuxing.doraemonkit.kit.loginfo.helper;
import com.didichuxing.doraemonkit.kit.logInfo.util.ArrayUtil;
import com.didichuxing.doraemonkit.kit.loginfo.util.ArrayUtil;
import java.io.IOException;
import java.util.List;
......
package com.didichuxing.doraemonkit.kit.logInfo.reader;
package com.didichuxing.doraemonkit.kit.loginfo.reader;
public abstract class AbsLogcatReader implements LogcatReader {
......
package com.didichuxing.doraemonkit.kit.logInfo.reader;
package com.didichuxing.doraemonkit.kit.loginfo.reader;
import java.io.IOException;
import java.util.List;
......
package com.didichuxing.doraemonkit.kit.logInfo.reader;
package com.didichuxing.doraemonkit.kit.loginfo.reader;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import com.didichuxing.doraemonkit.kit.logInfo.helper.LogcatHelper;
import com.didichuxing.doraemonkit.kit.loginfo.helper.LogcatHelper;
import java.io.IOException;
import java.util.ArrayList;
......
......@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.didichuxing.doraemonkit.kit.logInfo.reader;
package com.didichuxing.doraemonkit.kit.loginfo.reader;
import java.util.regex.Pattern;
......
package com.didichuxing.doraemonkit.kit.logInfo.reader;
package com.didichuxing.doraemonkit.kit.loginfo.reader;
import android.text.TextUtils;
import com.didichuxing.doraemonkit.kit.logInfo.helper.LogcatHelper;
import com.didichuxing.doraemonkit.kit.logInfo.helper.RuntimeHelper;
import com.didichuxing.doraemonkit.kit.loginfo.helper.LogcatHelper;
import com.didichuxing.doraemonkit.kit.loginfo.helper.RuntimeHelper;
import java.io.BufferedReader;
import java.io.IOException;
......
package com.didichuxing.doraemonkit.kit.logInfo.util;
package com.didichuxing.doraemonkit.kit.loginfo.util;
import java.lang.reflect.Array;
import java.util.List;
......
package com.didichuxing.doraemonkit.kit.logInfo.util;
package com.didichuxing.doraemonkit.kit.loginfo.util;
import android.text.TextUtils;
import com.didichuxing.doraemonkit.kit.logInfo.LogLine;
import com.didichuxing.doraemonkit.kit.loginfo.LogLine;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
......
package com.didichuxing.doraemonkit.kit.logInfo.util;
package com.didichuxing.doraemonkit.kit.loginfo.util;
import android.text.TextUtils;
......
package com.didichuxing.doraemonkit.kit.logInfo.util;
package com.didichuxing.doraemonkit.kit.loginfo.util;
import android.content.Context;
import android.support.v4.content.ContextCompat;
......
......@@ -43,7 +43,7 @@ public class NetworkManager {
/**
* ########业务埋点的网络接口#########
*/
public static final String APP_DATA_PICK_URL = "http://dokit-test.intra.xiaojukeji.com/pointData/addPointData";
public static final String APP_DATA_PICK_URL = "https://www.dokit.cn/pointData/addPointData";
/**
* 慢函数操作文档
*/
......
......@@ -16,7 +16,7 @@ import com.didichuxing.doraemonkit.kit.fileexplorer.FileExplorerFragment;
import com.didichuxing.doraemonkit.kit.gpsmock.GpsMockFragment;
import com.didichuxing.doraemonkit.kit.health.HealthFragment;
import com.didichuxing.doraemonkit.kit.largepicture.LargePictureFragment;
import com.didichuxing.doraemonkit.kit.logInfo.LogInfoSettingFragment;
import com.didichuxing.doraemonkit.kit.loginfo.LogInfoSettingFragment;
import com.didichuxing.doraemonkit.kit.methodtrace.MethodCostFragment;
import com.didichuxing.doraemonkit.kit.network.ui.MockTemplatePreviewFragment;
import com.didichuxing.doraemonkit.kit.network.ui.NetWorkMockFragment;
......
......@@ -13,9 +13,9 @@ import android.widget.Filterable;
import android.widget.TextView;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.kit.logInfo.LogLine;
import com.didichuxing.doraemonkit.kit.logInfo.util.SearchCriteria;
import com.didichuxing.doraemonkit.kit.logInfo.util.TagColorUtil;
import com.didichuxing.doraemonkit.kit.loginfo.LogLine;
import com.didichuxing.doraemonkit.kit.loginfo.util.SearchCriteria;
import com.didichuxing.doraemonkit.kit.loginfo.util.TagColorUtil;
import com.didichuxing.doraemonkit.ui.toast.AppToast;
import com.didichuxing.doraemonkit.ui.widget.recyclerview.AbsRecyclerAdapter;
import com.didichuxing.doraemonkit.ui.widget.recyclerview.AbsViewBinder;
......@@ -38,11 +38,23 @@ public class LogItemAdapter extends AbsRecyclerAdapter<AbsViewBinder<LogLine>, L
mClipboard = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE);
}
private ArrayList<LogLine> mOriginalValues = new ArrayList<>();
private ArrayFilter mFilter = new ArrayFilter();
private int logLevelLimit = Log.VERBOSE;
private ClipboardManager mClipboard;
/**
* 清空log
*/
public void clearLog() {
if (mOriginalValues != null && mOriginalValues.size() > 0) {
mOriginalValues.clear();
}
clear();
notifyDataSetChanged();
}
@Override
protected AbsViewBinder<LogLine> createViewHolder(View view, int viewType) {
return new LogInfoViewHolder(view);
......@@ -169,22 +181,29 @@ public class LogItemAdapter extends AbsRecyclerAdapter<AbsViewBinder<LogLine>, L
}
}
public void addWithFilter(LogLine object, CharSequence text, boolean notify) {
/**
* 添加日志到adapter中
*
* @param logObj
* @param text
* @param notify
*/
public void addWithFilter(LogLine logObj, CharSequence text, boolean notify) {
if (mOriginalValues != null) {
List<LogLine> inputList = Collections.singletonList(object);
List<LogLine> inputList = Collections.singletonList(logObj);
List<LogLine> filteredObjects = mFilter.performFilteringOnList(inputList, text);
mOriginalValues.add(object);
mOriginalValues.add(logObj);
mList.addAll(filteredObjects);
if (notify) {
notifyItemRangeInserted(mList.size() - filteredObjects.size(), filteredObjects.size());
}
} else {
mList.add(object);
mList.add(logObj);
if (notify) {
notifyItemInserted(mList.size());
}
......@@ -213,7 +232,7 @@ public class LogItemAdapter extends AbsRecyclerAdapter<AbsViewBinder<LogLine>, L
ArrayList<LogLine> allValues = new ArrayList<>();
ArrayList<LogLine> logLines = new ArrayList<>(inputList);
;
for (LogLine logLine : logLines) {
if (logLine != null && logLine.getLogLevel() >= logLevelLimit) {
......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/dk_radio_button_checked_background_middle" android:state_checked="true" />
<item android:drawable="@drawable/dk_radio_button_normal_background_middle" android:state_checked="false" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/dk_color_337CC4" />
<stroke
android:width="1px"
android:color="@color/dk_color_337CC4" />
<padding
android:bottom="1px"
android:left="1px"
android:right="1px"
android:top="1px" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke
android:width="1px"
android:color="@color/dk_color_337CC4" />
<padding
android:bottom="1px"
android:left="1px"
android:right="1px"
android:top="1px" />
</shape>
\ No newline at end of file
......@@ -93,8 +93,13 @@
android:orientation="horizontal">
<Button
android:id="@+id/btn_top"
android:id="@+id/btn_clean"
style="@style/DK.RadioButton.Left"
android:text="清空日志" />
<Button
android:id="@+id/btn_top"
style="@style/DK.RadioButton.middle"
android:text="回到顶部" />
<Button
......
......@@ -12,6 +12,7 @@
app:dkIcon="@drawable/dk_close_icon_big"
app:dkTitle="@string/dk_kit_gps_mock" />
<android.support.v7.widget.RecyclerView
android:id="@+id/setting_list"
android:layout_width="match_parent"
......@@ -32,7 +33,7 @@
android:layout_marginLeft="40dp"
android:layout_marginTop="25dp"
android:layout_marginRight="40dp"
android:background="@color/dk_color_7FFFFFFF"
android:background="@color/dk_color_EFFFFFFF"
android:padding="5dp">
<TextView
......
......@@ -37,7 +37,7 @@
<color name="dk_color_3300BFFF">#3300BFFF</color>
<color name="dk_color_33434352">#33434352</color>
<color name="dk_color_79DE79">#79DE79</color>
<color name="dk_color_7FFFFFFF">#7FFFFFFF</color>
<color name="dk_color_EFFFFFFF">#EFFFFFFF</color>
<color name="dk_color_3f3f46">#3f3f46</color>
<color name="dk_color_333339">#333339</color>
<color name="dk_color_4c00C9F4">#4c00C9F4</color>
......
......@@ -141,6 +141,17 @@
<item name="android:background">@drawable/dk_radio_button_background_left</item>
</style>
<style name="DK.RadioButton.middle">
<item name="android:gravity">center</item>
<item name="android:textSize">@dimen/dk_font_size_14</item>
<item name="android:textColor">@color/dk_radio_button_text_color</item>
<item name="android:layout_height">34dp</item>
<item name="android:layout_width">70dp</item>
<item name="android:button">@null</item>
<item name="android:background">@drawable/dk_radio_button_background_middle</item>
</style>
<style name="DK.RadioButton.Right">
<item name="android:gravity">center</item>
<item name="android:textSize">@dimen/dk_font_size_14</item>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册