未验证 提交 cb5c9799 编写于 作者: 糕冷羊's avatar 糕冷羊 提交者: GitHub

Merge pull request #162 from azhon/master

添加查看当前栈顶Activity的信息
......@@ -29,6 +29,7 @@ import com.didichuxing.doraemonkit.kit.parameter.ram.Ram;
import com.didichuxing.doraemonkit.kit.sysinfo.SysInfo;
import com.didichuxing.doraemonkit.kit.temporaryclose.TemporaryClose;
import com.didichuxing.doraemonkit.kit.timecounter.TimeCounterKit;
import com.didichuxing.doraemonkit.kit.topactivity.TopActivity;
import com.didichuxing.doraemonkit.kit.viewcheck.ViewChecker;
import com.didichuxing.doraemonkit.kit.webdoor.WebDoor;
import com.didichuxing.doraemonkit.kit.webdoor.WebDoorManager;
......@@ -161,6 +162,7 @@ public class DoraemonKit {
tool.add(new Crash());
tool.add(new LogInfo());
tool.add(new DataClean());
tool.add(new TopActivity());
performance.add(new FrameInfo());
performance.add(new Cpu());
......
package com.didichuxing.doraemonkit.config;
import android.content.Context;
import com.didichuxing.doraemonkit.constant.SharedPrefsKey;
import com.didichuxing.doraemonkit.util.SharedPrefsUtil;
/**
* 项目名: Android
* 包名 com.didichuxing.doraemonkit.config
* 文件名: TopActivityConfig
* 创建时间: 2019-04-29 on 12:27
*
* @author 阿钟
*/
public class TopActivityConfig {
public static boolean isTopActivityOpen(Context context) {
return SharedPrefsUtil.getBoolean(context, SharedPrefsKey.TOP_ACTIVITY_OPEN, false);
}
public static void setTopActivityOpen(Context context, boolean open) {
SharedPrefsUtil.putBoolean(context, SharedPrefsKey.TOP_ACTIVITY_OPEN, open);
}
}
......@@ -23,4 +23,5 @@ public interface FragmentIndex {
int FRAGMENT_TIME_COUNTER= 17;
int FRAGMENT_WEB_DOOR_DEFAULT = 18;
int FRAGMENT_CUSTOM = 19;
int FRAGMENT_TOP_ACTIVITY = 20;
}
......@@ -19,4 +19,5 @@ public interface SharedPrefsKey {
String VIEW_CHECK_OPEN = "view_check_open";
String LAYOUT_BORDER_OPEN = "layout_border_open";
String LAYOUT_LEVEL_OPEN = "layout_level_open";
String TOP_ACTIVITY_OPEN = "top_activity_open";
}
package com.didichuxing.doraemonkit.kit.topactivity;
import android.content.Context;
import android.content.Intent;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.constant.BundleKey;
import com.didichuxing.doraemonkit.constant.FragmentIndex;
import com.didichuxing.doraemonkit.kit.Category;
import com.didichuxing.doraemonkit.kit.IKit;
import com.didichuxing.doraemonkit.ui.UniversalActivity;
/**
* 项目名: Android
* 包名 com.didichuxing.doraemonkit.kit.topactivity
* 文件名: TopActivity
* 创建时间: 2019-04-29 on 12:13
* 描述: 当前栈顶的Activity信息
*
* @author 阿钟
*/
public class TopActivity implements IKit {
@Override
public int getCategory() {
return Category.TOOLS;
}
@Override
public int getName() {
return R.string.dk_kit_top_activity;
}
@Override
public int getIcon() {
return R.drawable.dk_view_check;
}
@Override
public void onClick(Context context) {
Intent intent = new Intent(context, UniversalActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(BundleKey.FRAGMENT_INDEX, FragmentIndex.FRAGMENT_TOP_ACTIVITY);
context.startActivity(intent);
}
@Override
public void onAppInit(Context context) {
}
}
package com.didichuxing.doraemonkit.kit.topactivity;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.TextView;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.config.TopActivityConfig;
import com.didichuxing.doraemonkit.ui.base.BaseFloatPage;
import com.didichuxing.doraemonkit.ui.base.FloatPageManager;
import com.didichuxing.doraemonkit.ui.base.TouchProxy;
/**
* 项目名: Android
* 包名 com.didichuxing.doraemonkit.kit.topactivity
* 文件名: TopActivityFloatPage
* 创建时间: 2019-04-29 on 13:38
* 描述:
*
* @author 阿钟
*/
public class TopActivityFloatPage extends BaseFloatPage implements TouchProxy.OnTouchEventListener,
Application.ActivityLifecycleCallbacks {
private TouchProxy touchProxy = new TouchProxy(this);
private WindowManager windowManager;
private TextView className;
private TextView pkgName;
private TextView pathName;
private Application app;
@Override
protected void onCreate(Context context) {
super.onCreate(context);
app = (Application) context.getApplicationContext();
app.registerActivityLifecycleCallbacks(this);
windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
}
@Override
protected View onCreateView(Context context, ViewGroup view) {
return LayoutInflater.from(context).inflate(R.layout.dk_float_view_top_activity, null);
}
@Override
protected void onViewCreated(View view) {
super.onViewCreated(view);
getRootView().setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return touchProxy.onTouchEvent(v, event);
}
});
findViewById(R.id.close).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TopActivityConfig.setTopActivityOpen(getContext(), false);
FloatPageManager.getInstance().removeAll(TopActivityFloatPage.class);
}
});
pkgName = findViewById(R.id.pkg_name);
className = findViewById(R.id.class_name);
pathName = findViewById(R.id.path_name);
}
@Override
protected void onLayoutParamsCreated(WindowManager.LayoutParams params) {
params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.x = 0;
params.y = 0;
}
@Override
public void onEnterForeground() {
super.onEnterForeground();
getRootView().setVisibility(View.VISIBLE);
}
@Override
public void onEnterBackground() {
super.onEnterBackground();
getRootView().setVisibility(View.GONE);
}
@Override
public void onMove(int x, int y, int dx, int dy) {
getLayoutParams().x += dx;
getLayoutParams().y += dy;
windowManager.updateViewLayout(getRootView(), getLayoutParams());
}
@Override
public void onActivityResumed(Activity activity) {
pkgName.setText(activity.getPackageName());
className.setText(activity.getClass().getSimpleName());
pathName.setText(activity.getClass().getName());
}
@Override
public void onUp(int x, int y) {
}
@Override
public void onDown(int x, int y) {
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
@Override
protected void onDestroy() {
super.onDestroy();
app.unregisterActivityLifecycleCallbacks(this);
}
}
package com.didichuxing.doraemonkit.kit.topactivity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.config.TopActivityConfig;
import com.didichuxing.doraemonkit.ui.base.BaseFragment;
import com.didichuxing.doraemonkit.ui.base.FloatPageManager;
import com.didichuxing.doraemonkit.ui.base.PageIntent;
import com.didichuxing.doraemonkit.ui.setting.SettingItem;
import com.didichuxing.doraemonkit.ui.setting.SettingItemAdapter;
import com.didichuxing.doraemonkit.ui.widget.titlebar.HomeTitleBar;
/**
* 项目名: Android
* 包名 com.didichuxing.doraemonkit.kit.topactivity
* 文件名: TopActivityFragment
* 创建时间: 2019-04-29 on 12:16
* 描述:
*
* @author 阿钟
*/
public class TopActivityFragment extends BaseFragment {
@Override
protected int onRequestLayout() {
return R.layout.dk_fragment_top_activity;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initView();
}
private void initView() {
HomeTitleBar titleBar = findViewById(R.id.title_bar);
titleBar.setListener(new HomeTitleBar.OnTitleBarClickListener() {
@Override
public void onRightClick() {
getActivity().finish();
}
});
RecyclerView topActivityList = findViewById(R.id.top_activity_list);
topActivityList.setLayoutManager(new LinearLayoutManager(getContext()));
SettingItemAdapter topActivityAdapter = new SettingItemAdapter(getContext());
topActivityAdapter.append(new SettingItem(R.string.dk_kit_top_activity, TopActivityConfig.isTopActivityOpen(getContext())));
topActivityAdapter.setOnSettingItemSwitchListener(new SettingItemAdapter.OnSettingItemSwitchListener() {
@Override
public void onSettingItemSwitch(View view, SettingItem data, boolean on) {
if (data.desc == R.string.dk_kit_top_activity) {
if (on) {
PageIntent intent = new PageIntent(TopActivityFloatPage.class);
FloatPageManager.getInstance().add(intent);
getActivity().finish();
} else {
FloatPageManager.getInstance().removeAll(TopActivityFloatPage.class);
}
TopActivityConfig.setTopActivityOpen(getContext(), on);
}
}
});
topActivityList.setAdapter(topActivityAdapter);
}
}
......@@ -11,7 +11,6 @@ import com.didichuxing.doraemonkit.kit.blockmonitor.BlockMonitorFragment;
import com.didichuxing.doraemonkit.kit.colorpick.ColorPickerSettingFragment;
import com.didichuxing.doraemonkit.kit.crash.CrashCaptureMainFragment;
import com.didichuxing.doraemonkit.kit.custom.MonitorDataUploadFragment;
import com.didichuxing.doraemonkit.kit.custom.UploadMonitorInfoBean;
import com.didichuxing.doraemonkit.kit.dataclean.DataCleanFragment;
import com.didichuxing.doraemonkit.kit.fileexplorer.FileExplorerFragment;
import com.didichuxing.doraemonkit.kit.gpsmock.GpsMockFragment;
......@@ -22,6 +21,7 @@ import com.didichuxing.doraemonkit.kit.parameter.frameInfo.FrameInfoFragment;
import com.didichuxing.doraemonkit.kit.parameter.ram.RamMainPageFragment;
import com.didichuxing.doraemonkit.kit.sysinfo.SysInfoFragment;
import com.didichuxing.doraemonkit.kit.timecounter.TimeCounterFragment;
import com.didichuxing.doraemonkit.kit.topactivity.TopActivityFragment;
import com.didichuxing.doraemonkit.kit.viewcheck.ViewCheckFragment;
import com.didichuxing.doraemonkit.kit.webdoor.WebDoorDefaultFragment;
import com.didichuxing.doraemonkit.kit.webdoor.WebDoorFragment;
......@@ -103,6 +103,9 @@ public class UniversalActivity extends BaseActivity {
case FragmentIndex.FRAGMENT_CUSTOM:
fragmentClass = MonitorDataUploadFragment.class;
break;
case FragmentIndex.FRAGMENT_TOP_ACTIVITY:
fragmentClass = TopActivityFragment.class;
break;
default:
break;
}
......
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/dk_info_background">
<LinearLayout
android:id="@+id/ll_class_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"
app:layout_constraintBottom_toTopOf="@+id/ll_pkg_name"
app:layout_constraintEnd_toStartOf="@+id/close"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
style="@style/DK.Text.Darker"
android:text="@string/dk_kit_class_name" />
<TextView
android:id="@+id/class_name"
style="@style/DK.Text.Darker"
android:gravity="left" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_pkg_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="10dp"
android:layout_marginBottom="5dp"
app:layout_constraintBottom_toTopOf="@+id/ll_path_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ll_class_name">
<TextView
style="@style/DK.Text.Darker"
android:text="@string/dk_kit_pkg_name" />
<TextView
android:id="@+id/pkg_name"
style="@style/DK.Text.Darker"
android:gravity="left" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_path_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="10dp"
android:layout_marginBottom="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ll_pkg_name">
<TextView
style="@style/DK.Text.Darker"
android:text="@string/dk_kit_path_name" />
<TextView
android:id="@+id/path_name"
style="@style/DK.Text.Darker"
android:gravity="left" />
</LinearLayout>
<ImageView
android:id="@+id/close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginRight="12dp"
android:src="@drawable/dk_close_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.didichuxing.doraemonkit.ui.widget.titlebar.HomeTitleBar
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="89dp"
app:dkIcon="@drawable/dk_close_icon_big"
app:dkTitle="@string/dk_kit_top_activity" />
<android.support.v7.widget.RecyclerView
android:id="@+id/top_activity_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
\ No newline at end of file
......@@ -22,6 +22,10 @@
<string name="dk_kit_time_counter">Time Counter</string>
<string name="dk_kit_exit">Exit</string>
<string name="dk_kit_db_detail">Data Base</string>
<string name="dk_kit_top_activity">Top Activity</string>
<string name="dk_kit_pkg_name">Package Name:</string>
<string name="dk_kit_class_name">Class Name:</string>
<string name="dk_kit_path_name">Class Path:</string>
<string name="dk_sysinfo_device_info">Mobile Info</string>
<string name="dk_sysinfo_app_info">App Info</string>
......
......@@ -23,6 +23,10 @@
<string name="dk_kit_time_counter">耗时</string>
<string name="dk_kit_exit">退出</string>
<string name="dk_kit_db_detail">数据库查看</string>
<string name="dk_kit_top_activity">当前Activity</string>
<string name="dk_kit_pkg_name">包名:</string>
<string name="dk_kit_class_name">类名:</string>
<string name="dk_kit_path_name">路径:</string>
<string name="dk_sysinfo_device_info">手机信息</string>
<string name="dk_sysinfo_app_info">App信息</string>
......
......@@ -23,6 +23,10 @@
<string name="dk_kit_time_counter">耗時</string>
<string name="dk_kit_exit">退出 Doraemonkit</string>
<string name="dk_kit_db_detail">資料庫查看</string>
<string name="dk_kit_top_activity">當前Activity</string>
<string name="dk_kit_pkg_name">包名:</string>
<string name="dk_kit_class_name">類名:</string>
<string name="dk_kit_path_name">路徑:</string>
<string name="dk_sysinfo_device_info">手機資訊</string>
<string name="dk_sysinfo_app_info">App 資訊</string>
......
......@@ -22,6 +22,10 @@
<string name="dk_kit_net_monitor">流量监控</string>
<string name="dk_kit_time_counter">耗时</string>
<string name="dk_kit_db_detail">数据库查看</string>
<string name="dk_kit_top_activity">当前Activity</string>
<string name="dk_kit_pkg_name">包名:</string>
<string name="dk_kit_class_name">类名:</string>
<string name="dk_kit_path_name">路径:</string>
<string name="dk_kit_exit">退出</string>
<string name="dk_kit_layout_border">布局边框</string>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册