add: new ui for drawer

This commit is contained in:
hyb1996
2017-08-25 13:10:52 +08:00
parent 16d48bd6b5
commit 5d6e66d5d5
27 changed files with 419 additions and 328 deletions

View File

@@ -36,6 +36,7 @@ import com.stardust.scriptdroid.script.StorageFileProvider;
import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.scriptdroid.ui.main.community.CommunityFragment;
import com.stardust.scriptdroid.ui.main.doc.OnlineDocsFragment_;
import com.stardust.scriptdroid.ui.main.drawer.DrawerFragment;
import com.stardust.scriptdroid.ui.main.script_list.MyScriptListFragment_;
import com.stardust.scriptdroid.ui.main.task.TaskManagerFragment_;
import com.stardust.util.DeveloperUtils;
@@ -61,8 +62,6 @@ import org.greenrobot.eventbus.Subscribe;
@EActivity(R.layout.activity_main)
public class MainActivity extends BaseActivity implements OnActivityResultDelegate.DelegateHost {
public static final String MESSAGE_CLEAR_BACKGROUND_SETTINGS = "MESSAGE_CLEAR_BACKGROUND_SETTINGS";
private static final String LOG_TAG = "MainActivity";
@ViewById(R.id.drawer_layout)
@@ -76,7 +75,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
private FragmentPagerAdapterBuilder.StoredFragmentPagerAdapter mPagerAdapter;
private OnActivityResultDelegate.Mediator mActivityResultMediator = new OnActivityResultDelegate.Mediator();
private DrawableSaver mDrawerHeaderBackgroundSaver;
private VersionGuard mVersionGuard;
@@ -84,20 +82,14 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkPermissions();
EventBus.getDefault().register(this);
mVersionGuard = new VersionGuard(this);
showAnnunciationIfNeeded();
//Stop download service of ad sdk
// FIXME: 2017/8/1 Service not stopped!
stopService(new Intent(this, DownloadService.class));
}
@AfterViews
void setUpViews() {
setUpToolbar();
setUpTabViewPager();
setUpDrawerHeader();
setUpFragment();
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
registerBackPressHandlers();
}
@@ -152,17 +144,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
}
}
private void setUpFragment() {
SideMenuFragment.setFragment(this, R.id.fragment_slide_menu);
}
@SuppressLint("SetTextI18n")
private void setUpDrawerHeader() {
TextView version = $(R.id.version);
version.setText("Version " + BuildConfig.VERSION_NAME);
mDrawerHeaderBackgroundSaver = new DrawableSaver.ImageSaver(this, "drawer_header_background", (ImageView) $(R.id.drawer_header_img));
}
private void setUpToolbar() {
Toolbar toolbar = $(R.id.toolbar);
setSupportActionBar(toolbar);
@@ -251,11 +232,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
finish();
}
@Click(R.id.drawer_header_img)
public void selectHeaderImage() {
mDrawerHeaderBackgroundSaver.select(this, mActivityResultMediator);
}
@Override
protected void onPause() {
super.onPause();
@@ -268,13 +244,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
mVersionGuard.checkDeprecateAndUpdate();
}
@Subscribe
public void onMessageEvent(MessageEvent event) {
if (event.message.equals(MESSAGE_CLEAR_BACKGROUND_SETTINGS)) {
mDrawerHeaderBackgroundSaver.reset();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mActivityResultMediator.onActivityResult(requestCode, resultCode, data);
@@ -294,11 +263,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
}
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@NonNull
@Override

View File

@@ -1,22 +1,19 @@
package com.stardust.scriptdroid.ui.main;
package com.stardust.scriptdroid.ui.main.drawer;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.SwitchCompat;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.CompoundButton;
import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.qq.e.comm.DownloadService;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floatingwindow.HoverMenuManger;
import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.scriptdroid.ui.common.ProgressDialog;
@@ -25,8 +22,6 @@ import com.stardust.scriptdroid.sublime.SublimePluginClient;
import com.stardust.scriptdroid.sublime.SublimePluginService;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
import com.stardust.scriptdroid.tool.WifiTool;
import com.stardust.scriptdroid.ui.console.LogActivity_;
import com.stardust.scriptdroid.ui.help.HelpCatalogueActivity;
import com.stardust.util.IntentUtil;
import com.stardust.util.UnderuseExecutors;
@@ -44,19 +39,11 @@ import java.util.concurrent.Executor;
/**
* Created by Stardust on 2017/1/30.
*/
@EFragment(R.layout.fragment_side_menu)
public class SideMenuFragment extends android.support.v4.app.Fragment {
@EFragment(R.layout.fragment_drawer)
public class DrawerFragment extends android.support.v4.app.Fragment {
public static void setFragment(FragmentActivity activity, int viewId) {
SideMenuFragment fragment = new SideMenuFragment_();
activity.getSupportFragmentManager().beginTransaction().replace(viewId, fragment).commit();
}
@ViewById(R.id.sw_accessibility_service)
SwitchCompat mAccessibilityServiceSwitch;
@ViewById(R.id.sw_floating_window)
SwitchCompat mFloatingWindowSwitch;
@ViewById(R.id.sw_debug)
SwitchCompat mDebugSwitch;
private Executor mExecutor = UnderuseExecutors.getExecutor();
@@ -69,7 +56,7 @@ public class SideMenuFragment extends android.support.v4.app.Fragment {
@Override
public void onStart() {
super.onStart();
syncSwitchState();
//syncSwitchState();
}
@@ -100,23 +87,6 @@ public class SideMenuFragment extends android.support.v4.app.Fragment {
mFloatingWindowSwitch.setChecked(HoverMenuManger.isHoverMenuShowing());
}
@Click(R.id.console)
void startConsoleActivity() {
startActivity(new Intent(getActivity(), LogActivity_.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
@Click(R.id.syntax_and_api)
void startSyntaxHelpActivity() {
HelpCatalogueActivity.showMainCatalogue(getActivity());
}
@Click(R.id.auto_operate_service)
void clickAutoOperateServiceSwitch() {
mAccessibilityServiceSwitch.toggle();
}
@CheckedChange(R.id.sw_accessibility_service)
void setAutoOperateServiceEnable(CompoundButton button, boolean enable) {
boolean isAccessibilityServiceEnabled = AccessibilityServiceTool.isAccessibilityServiceEnabled(App.getApp());
if (enable && !isAccessibilityServiceEnabled) {
@@ -157,7 +127,6 @@ public class SideMenuFragment extends android.support.v4.app.Fragment {
});
}
@CheckedChange(R.id.sw_floating_window)
void setFloatingWindowEnable(CompoundButton button, boolean enable) {
if (enable && !HoverMenuManger.isHoverMenuShowing()) {
HoverMenuManger.showHoverMenu();
@@ -169,17 +138,6 @@ public class SideMenuFragment extends android.support.v4.app.Fragment {
}
}
@Click(R.id.floating_window)
void toggleAssistServiceSwitch() {
mFloatingWindowSwitch.toggle();
}
@Click(R.id.debug)
void toggleDebugSwitch() {
mDebugSwitch.toggle();
}
@CheckedChange(R.id.sw_debug)
void setDebugEnabled(CompoundButton button, boolean enabled) {
if (enabled && !SublimePluginService.isConnected()) {
new MaterialDialog.Builder(getActivity())
@@ -208,15 +166,6 @@ public class SideMenuFragment extends android.support.v4.app.Fragment {
return Pref.getServerAddressOrDefault(WifiTool.getWifiAddress(getActivity()));
}
@Click(R.id.stop_all_running_scripts)
void stopAllRunningScripts() {
int n = AutoJs.getInstance().getScriptEngineService().stopAll();
if (n > 0)
Snackbar.make(getView(), String.format(getString(R.string.text_already_stop_n_scripts), n), Snackbar.LENGTH_SHORT).show();
else
Snackbar.make(getView(), R.string.text_no_running_script, Snackbar.LENGTH_SHORT).show();
}
@Override
public void onDestroy() {
super.onDestroy();

View File

@@ -0,0 +1,65 @@
package com.stardust.scriptdroid.ui.main.drawer;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.stardust.scriptdroid.R;
import static android.util.TypedValue.COMPLEX_UNIT_DIP;
/**
* Created by Stardust on 2017/8/25.
*/
public class DrawerMenuGroup extends LinearLayout {
private TextView mTitle;
public DrawerMenuGroup(Context context) {
super(context);
init(null);
}
public DrawerMenuGroup(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
public DrawerMenuGroup(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(attrs);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public DrawerMenuGroup(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(attrs);
}
private void init(AttributeSet attrs) {
setOrientation(VERTICAL);
addTitleView();
if (attrs == null) {
return;
}
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.DrawerMenuItem);
mTitle.setText(a.getString(R.styleable.DrawerMenuItem_title));
a.recycle();
}
private void addTitleView() {
mTitle = new TextView(getContext());
int padding = (int) TypedValue.applyDimension(COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics());
mTitle.setPadding(padding, padding, padding, padding);
mTitle.setTextColor(0xff999999);
mTitle.setTextSize(12);
addView(mTitle, 0);
}
}

View File

@@ -0,0 +1,73 @@
package com.stardust.scriptdroid.ui.main.drawer;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v7.widget.SwitchCompat;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.stardust.scriptdroid.R;
/**
* Created by Stardust on 2017/8/25.
*/
public class DrawerMenuItem extends FrameLayout {
private SwitchCompat mSwitchCompat;
public DrawerMenuItem(Context context) {
super(context);
init(null);
}
public DrawerMenuItem(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
public DrawerMenuItem(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(attrs);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public DrawerMenuItem(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(attrs);
}
private void init(AttributeSet attrs) {
inflate(getContext(), R.layout.drawer_menu_item, this);
ImageView icon = (ImageView) findViewById(R.id.icon);
TextView title = (TextView) findViewById(R.id.title);
mSwitchCompat = (SwitchCompat) findViewById(R.id.sw);
if (attrs == null)
return;
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.DrawerMenuItem);
icon.setImageResource(a.getResourceId(R.styleable.DrawerMenuItem_icon, 0));
title.setText(a.getString(R.styleable.DrawerMenuItem_title));
if (a.getBoolean(R.styleable.DrawerMenuItem_with_switch, false)) {
mSwitchCompat.setVisibility(VISIBLE);
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mSwitchCompat.toggle();
}
});
}
a.recycle();
}
public SwitchCompat getSwitchCompat() {
return mSwitchCompat;
}
}

View File

@@ -5,16 +5,12 @@ import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.support.annotation.Nullable;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Toast;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.tool.UpdateChecker;
import com.stardust.scriptdroid.ui.BaseActivity;
import com.stardust.scriptdroid.ui.error.IssueReporterActivity;
import com.stardust.scriptdroid.ui.main.MainActivity;
import com.stardust.scriptdroid.ui.splash.SplashActivity;
import com.stardust.scriptdroid.ui.splash.SplashActivity_;
import com.stardust.scriptdroid.ui.update.UpdateCheckDialog;
@@ -23,11 +19,9 @@ import com.stardust.util.MapEntries;
import com.stardust.scriptdroid.R;
import com.stardust.theme.app.ColorSelectActivity;
import com.stardust.theme.util.ListBuilder;
import com.stardust.util.MessageEvent;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
import java.util.Map;
@@ -112,7 +106,7 @@ public class SettingsActivity extends BaseActivity {
.entry(getString(R.string.text_reset_background), new Runnable() {
@Override
public void run() {
EventBus.getDefault().post(new MessageEvent(MainActivity.MESSAGE_CLEAR_BACKGROUND_SETTINGS));
// EventBus.getDefault().post(new MessageEvent(MainActivity.MESSAGE_CLEAR_BACKGROUND_SETTINGS));
Toast.makeText(getActivity(), R.string.text_already_reset, Toast.LENGTH_SHORT).show();
}
})
@@ -125,7 +119,7 @@ public class SettingsActivity extends BaseActivity {
.start();
}
})
.entry(getString(R.string.text_check_update), new Runnable() {
.entry(getString(R.string.text_check_for_updates), new Runnable() {
@Override
public void run() {
new UpdateCheckDialog(getActivity()).show();