mirror of
https://github.com/TonyJiangWJ/Auto.js.git
synced 2026-06-21 21:01:43 +08:00
change to java 7 and min sdk version 19
This commit is contained in:
parent
fd64e2b95d
commit
e6453a57ba
@ -37,7 +37,7 @@
|
||||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
||||
@ -5,16 +5,13 @@ android {
|
||||
buildToolsVersion "25.0.2"
|
||||
defaultConfig {
|
||||
applicationId "com.stardust.scriptdroid"
|
||||
minSdkVersion 24
|
||||
minSdkVersion 19
|
||||
//由于不知道在API24以上如何调起其他文件编辑器应用编辑文件,只能改到API23。FileProvider貌似只能查看编辑后不能保存?
|
||||
//参照ScriptFileOperation.Edit
|
||||
targetSdkVersion 23
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
jackOptions {
|
||||
enabled true
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
@ -23,10 +20,19 @@ android {
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
sourceCompatibility JavaVersion.VERSION_1_7
|
||||
targetCompatibility JavaVersion.VERSION_1_7
|
||||
encoding = 'utf-8'
|
||||
}
|
||||
dataBinding {
|
||||
enabled = true
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
flatDir {
|
||||
dirs 'libs'
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@ -46,4 +52,21 @@ dependencies {
|
||||
|
||||
compile files('libs/JSTransformer.jar')
|
||||
|
||||
compile 'com.afollestad.material-dialogs:commons:0.9.2.3'
|
||||
compile 'com.makeramen:roundedimageview:2.2.1'
|
||||
compile 'com.rengwuxian.materialedittext:library:2.0.3'
|
||||
compile(name:'920-common-release', ext:'aar'){
|
||||
transitive = true
|
||||
}
|
||||
compile(name:'920-styles-debug', ext:'aar'){
|
||||
transitive = true
|
||||
}
|
||||
compile(name:'920-file_explorer-release', ext:'aar'){
|
||||
transitive = true
|
||||
}
|
||||
compile(name:'920-app-debug', ext:'aar'){
|
||||
transitive = true
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
BIN
app/libs/920-app-debug.aar
Normal file
BIN
app/libs/920-app-debug.aar
Normal file
Binary file not shown.
BIN
app/libs/920-common-release.aar
Normal file
BIN
app/libs/920-common-release.aar
Normal file
Binary file not shown.
BIN
app/libs/920-file_explorer-release.aar
Normal file
BIN
app/libs/920-file_explorer-release.aar
Normal file
Binary file not shown.
BIN
app/libs/920-styles-debug.aar
Normal file
BIN
app/libs/920-styles-debug.aar
Normal file
Binary file not shown.
@ -72,6 +72,7 @@
|
||||
android:resource="@xml/provider_paths"/>
|
||||
</provider>
|
||||
|
||||
<activity android:name=".TestActivity"/>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@ -4,6 +4,8 @@ import android.os.Build;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.View;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static android.content.pm.PackageManager.PERMISSION_DENIED;
|
||||
@ -22,11 +24,20 @@ public class BaseActivity extends AppCompatActivity {
|
||||
|
||||
protected void checkPermission(String... permissions) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
String[] requestPermissions = Stream.of(permissions).filter(permission -> checkSelfPermission(permission) == PERMISSION_DENIED).toArray(String[]::new);
|
||||
|
||||
String[] requestPermissions = getRequestPermissions(permissions);
|
||||
if (requestPermissions.length > 0)
|
||||
requestPermissions(requestPermissions, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private String[] getRequestPermissions(String[] permissions) {
|
||||
List<String> list = new ArrayList<>();
|
||||
for (String permission : permissions) {
|
||||
if (checkSelfPermission(permission) == PERMISSION_DENIED) {
|
||||
list.add(permission);
|
||||
}
|
||||
}
|
||||
return list.toArray(new String[list.size()]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
package com.stardust.scriptdroid;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.text.InputType;
|
||||
@ -10,7 +12,9 @@ import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
import com.afollestad.materialdialogs.DialogAction;
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.jecelyin.editor.v2.core.widget.JecEditText;
|
||||
import com.stardust.scriptdroid.droid.runtime.action.ActionPerformService;
|
||||
import com.stardust.scriptdroid.droid.script.file.ScriptFile;
|
||||
import com.stardust.scriptdroid.droid.script.file.ScriptFileList;
|
||||
@ -23,8 +27,8 @@ import com.stardust.scriptdroid.ui.SlidingUpPanel;
|
||||
import com.stardust.util.MapEntries;
|
||||
import com.stardust.view.accessibility.AccessibilityServiceUtils;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
public class MainActivity extends BaseActivity {
|
||||
@ -54,6 +58,7 @@ public class MainActivity extends BaseActivity {
|
||||
private void checkPermissions() {
|
||||
checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
goToAccessibilityPermissionSettingIfDisabled();
|
||||
JecEditText jecEditText = new JecEditText(this);
|
||||
}
|
||||
|
||||
private void goToAccessibilityPermissionSettingIfDisabled() {
|
||||
@ -62,19 +67,37 @@ public class MainActivity extends BaseActivity {
|
||||
.content(R.string.explain_accessibility_permission)
|
||||
.positiveText(R.string.text_go_to_setting)
|
||||
.negativeText(R.string.text_cancel)
|
||||
.onPositive((dialog, which) -> AccessibilityServiceUtils.goToPermissionSetting(this)).show();
|
||||
.onPositive(new MaterialDialog.SingleButtonCallback() {
|
||||
@Override
|
||||
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
|
||||
AccessibilityServiceUtils.goToPermissionSetting(MainActivity.this);
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpFileChooser() {
|
||||
mFileChooser = new FileChooser(this);
|
||||
mFileChooser.setOnFileChoseListener(inputStream -> Optional.ofNullable(FileUtils.getPath(inputStream)).ifPresent(this::addScriptFile));
|
||||
mFileChooser.setOnFileChoseListener(new FileChooser.OnFileChoseListener() {
|
||||
@Override
|
||||
public void onFileChose(InputStream inputStream) {
|
||||
String path = FileUtils.getPath(inputStream);
|
||||
if (path != null) {
|
||||
MainActivity.this.addScriptFile(path);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void addScriptFile(final String path) {
|
||||
new MaterialDialog.Builder(this).title(R.string.text_name)
|
||||
.inputType(InputType.TYPE_CLASS_TEXT)
|
||||
.input(getString(R.string.text_please_input_name), "", (dialog, input) -> addScriptFile(input.toString(), path)).show();
|
||||
.input(getString(R.string.text_please_input_name), "", new MaterialDialog.InputCallback() {
|
||||
@Override
|
||||
public void onInput(@NonNull MaterialDialog dialog, CharSequence input) {
|
||||
MainActivity.this.addScriptFile(input.toString(), path);
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
private void addScriptFile(String name, String path) {
|
||||
@ -107,17 +130,35 @@ public class MainActivity extends BaseActivity {
|
||||
}
|
||||
|
||||
private void setUpListener() {
|
||||
$(R.id.fab).setOnClickListener(view -> mSlidingUpPanel.show());
|
||||
$(R.id.import_from_file).setOnClickListener(v -> showFileChooser());
|
||||
$(R.id.create_new_file).setOnClickListener(v -> createScriptFile());
|
||||
$(R.id.fab).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
mSlidingUpPanel.show();
|
||||
}
|
||||
});
|
||||
$(R.id.import_from_file).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MainActivity.this.showFileChooser();
|
||||
}
|
||||
});
|
||||
$(R.id.create_new_file).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MainActivity.this.createScriptFile();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void createScriptFile() {
|
||||
new MaterialDialog.Builder(this).title(R.string.text_name)
|
||||
.inputType(InputType.TYPE_CLASS_TEXT)
|
||||
.input(getString(R.string.text_please_input_name), "", (dialog, input) -> {
|
||||
String path = ScriptFile.DEFAULT_FOLDER + input + ".js";
|
||||
createScriptFile(input.toString(), path);
|
||||
.input(getString(R.string.text_please_input_name), "", new MaterialDialog.InputCallback() {
|
||||
@Override
|
||||
public void onInput(@NonNull MaterialDialog dialog, CharSequence input) {
|
||||
String path = ScriptFile.DEFAULT_FOLDER + input + ".js";
|
||||
MainActivity.this.createScriptFile(input.toString(), path);
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
@ -131,9 +172,12 @@ public class MainActivity extends BaseActivity {
|
||||
}
|
||||
|
||||
private void showFileChooser() {
|
||||
mFileChooser.startFileManagerToChoose("*/*", (exception, mimeType) -> {
|
||||
exception.printStackTrace();
|
||||
Snackbar.make(mView, R.string.text_file_manager_not_found, Snackbar.LENGTH_SHORT).show();
|
||||
mFileChooser.startFileManagerToChoose("*/*", new FileChooser.FileManagerNotFoundHandler() {
|
||||
@Override
|
||||
public void handle(ActivityNotFoundException exception, String mimeType) {
|
||||
exception.printStackTrace();
|
||||
Snackbar.make(mView, R.string.text_file_manager_not_found, Snackbar.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -145,8 +189,24 @@ public class MainActivity extends BaseActivity {
|
||||
|
||||
|
||||
private final Map<Integer, Runnable> mOptionActionMap = new MapEntries<Integer, Runnable>()
|
||||
.entry(R.id.action_exit, this::finish)
|
||||
.entry(R.id.action_disable_service, this::disableAccessibilityService)
|
||||
.entry(R.id.action_exit, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MainActivity.this.finish();
|
||||
}
|
||||
})
|
||||
.entry(R.id.action_disable_service, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MainActivity.this.disableAccessibilityService();
|
||||
}
|
||||
})
|
||||
.entry(R.id.action_test, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
startActivity(new Intent(MainActivity.this, TestActivity.class));
|
||||
}
|
||||
})
|
||||
.map();
|
||||
|
||||
|
||||
@ -156,7 +216,9 @@ public class MainActivity extends BaseActivity {
|
||||
}
|
||||
|
||||
private void disableAccessibilityService() {
|
||||
Optional.ofNullable(ActionPerformService.getInstance()).ifPresent(ActionPerformService::disableSelf);
|
||||
if (ActionPerformService.getInstance() != null) {
|
||||
ActionPerformService.getInstance().disableSelf();
|
||||
}
|
||||
Snackbar.make(mView, R.string.text_service_disabled, Snackbar.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
|
||||
@ -22,19 +22,51 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
*/
|
||||
public class ShortcutActivity extends Activity {
|
||||
|
||||
interface BooleanSupplier {
|
||||
boolean getAsBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
final String path = getIntent().getStringExtra("path");
|
||||
if (!ensure(() -> !TextUtils.isEmpty(path), R.string.text_path_is_empty))
|
||||
if (!ensure(new BooleanSupplier() {
|
||||
@Override
|
||||
public boolean getAsBoolean() {
|
||||
return !TextUtils.isEmpty(path);
|
||||
}
|
||||
}, R.string.text_path_is_empty))
|
||||
return;
|
||||
final File scriptFile = new File(path);
|
||||
new Domino()
|
||||
.then(() -> ensure(scriptFile::exists, R.string.text_file_not_exists))
|
||||
.then(() -> ensure(this::hasStorageReadPermission, R.string.text_no_file_rw_permission))
|
||||
.then(() -> {
|
||||
runScriptFile(path);
|
||||
return true;
|
||||
.then(new Tile() {
|
||||
@Override
|
||||
public boolean fall() {
|
||||
return ShortcutActivity.this.ensure(new BooleanSupplier() {
|
||||
@Override
|
||||
public boolean getAsBoolean() {
|
||||
return scriptFile.exists();
|
||||
}
|
||||
}, R.string.text_file_not_exists);
|
||||
}
|
||||
})
|
||||
.then(new Tile() {
|
||||
@Override
|
||||
public boolean fall() {
|
||||
return ShortcutActivity.this.ensure(new BooleanSupplier() {
|
||||
@Override
|
||||
public boolean getAsBoolean() {
|
||||
return ShortcutActivity.this.hasStorageReadPermission();
|
||||
}
|
||||
}, R.string.text_no_file_rw_permission);
|
||||
}
|
||||
})
|
||||
.then(new Tile() {
|
||||
@Override
|
||||
public boolean fall() {
|
||||
ShortcutActivity.this.runScriptFile(path);
|
||||
return true;
|
||||
}
|
||||
})
|
||||
.fall();
|
||||
}
|
||||
@ -70,7 +102,6 @@ public class ShortcutActivity extends Activity {
|
||||
checkSelfPermission(READ_EXTERNAL_STORAGE) == PERMISSION_GRANTED;
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
interface Tile {
|
||||
boolean fall();
|
||||
}
|
||||
|
||||
61
app/src/main/java/com/stardust/scriptdroid/TestActivity.java
Normal file
61
app/src/main/java/com/stardust/scriptdroid/TestActivity.java
Normal file
@ -0,0 +1,61 @@
|
||||
package com.stardust.scriptdroid;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.jecelyin.editor.v2.Pref;
|
||||
import com.jecelyin.editor.v2.common.Command;
|
||||
import com.jecelyin.editor.v2.ui.EditorDelegate;
|
||||
import com.jecelyin.editor.v2.ui.IActivity;
|
||||
import com.jecelyin.editor.v2.ui.TabManager;
|
||||
import com.jecelyin.editor.v2.view.EditorView;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/1/29.
|
||||
*/
|
||||
|
||||
public class TestActivity extends BaseActivity implements IActivity{
|
||||
|
||||
public void onCreate(Bundle b) {
|
||||
super.onCreate(b);
|
||||
Pref.getInstance(this).setTheme(0);
|
||||
setContentView(R.layout.edit_layout);
|
||||
EditorDelegate editorDelegate = new EditorDelegate(0, "Hello 920 Editor", "Hello 920");
|
||||
EditorView editorView = $(R.id.editor);
|
||||
editorDelegate.setEditorView(editorView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startPickPathActivity(String s, String s1) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doNextCommand() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public TabManager getTabManager() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMenuStatus(int i, int i1) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDocumentChanged(int i) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doCommand(Command command) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openFile(String s, String s1, int i) {
|
||||
|
||||
}
|
||||
}
|
||||
@ -35,12 +35,15 @@ public class Droid {
|
||||
runScriptFile(new File(path));
|
||||
}
|
||||
|
||||
public void runScript(String script) {
|
||||
new Thread(() -> {
|
||||
try {
|
||||
JAVA_SCRIPT_ENGINE.execute(script);
|
||||
} catch (Exception e) {
|
||||
RUNTIME.toast("错误" + e.getMessage());
|
||||
public void runScript(final String script) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
JAVA_SCRIPT_ENGINE.execute(script);
|
||||
} catch (Exception e) {
|
||||
RUNTIME.toast("错误" + e.getMessage());
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
@ -148,8 +148,13 @@ public class DroidRuntime implements IDroidRuntime {
|
||||
|
||||
|
||||
@Override
|
||||
public void toast(String text) {
|
||||
mUIHandler.post(() -> Toast.makeText(App.getApp(), text, Toast.LENGTH_SHORT).show());
|
||||
public void toast(final String text) {
|
||||
mUIHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Toast.makeText(App.getApp(), text, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -13,11 +13,36 @@ import com.stardust.util.SparseArrayEntries;
|
||||
public interface Able {
|
||||
|
||||
SparseArray<Able> ABLE_MAP = new SparseArrayEntries<Able>()
|
||||
.entry(AccessibilityNodeInfo.ACTION_CLICK, AccessibilityNodeInfo::isClickable)
|
||||
.entry(AccessibilityNodeInfo.ACTION_LONG_CLICK, AccessibilityNodeInfo::isLongClickable)
|
||||
.entry(AccessibilityNodeInfo.ACTION_FOCUS, AccessibilityNodeInfo::isFocusable)
|
||||
.entry(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD, AccessibilityNodeInfo::isScrollable)
|
||||
.entry(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD, AccessibilityNodeInfo::isScrollable)
|
||||
.entry(AccessibilityNodeInfo.ACTION_CLICK, new Able() {
|
||||
@Override
|
||||
public boolean isAble(AccessibilityNodeInfo nodeInfo) {
|
||||
return nodeInfo.isClickable();
|
||||
}
|
||||
})
|
||||
.entry(AccessibilityNodeInfo.ACTION_LONG_CLICK, new Able() {
|
||||
@Override
|
||||
public boolean isAble(AccessibilityNodeInfo nodeInfo) {
|
||||
return nodeInfo.isLongClickable();
|
||||
}
|
||||
})
|
||||
.entry(AccessibilityNodeInfo.ACTION_FOCUS, new Able() {
|
||||
@Override
|
||||
public boolean isAble(AccessibilityNodeInfo nodeInfo) {
|
||||
return nodeInfo.isFocusable();
|
||||
}
|
||||
})
|
||||
.entry(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD, new Able() {
|
||||
@Override
|
||||
public boolean isAble(AccessibilityNodeInfo nodeInfo) {
|
||||
return nodeInfo.isScrollable();
|
||||
}
|
||||
})
|
||||
.entry(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD, new Able() {
|
||||
@Override
|
||||
public boolean isAble(AccessibilityNodeInfo nodeInfo) {
|
||||
return nodeInfo.isScrollable();
|
||||
}
|
||||
})
|
||||
.sparseArray();
|
||||
|
||||
boolean isAble(AccessibilityNodeInfo node);
|
||||
|
||||
@ -3,6 +3,7 @@ package com.stardust.scriptdroid.ui;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.design.widget.Snackbar;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
@ -91,9 +92,12 @@ public abstract class ScriptFileOperation {
|
||||
public void operate(final ScriptListRecyclerView recyclerView, final ScriptFileList scriptFileList, final int position) {
|
||||
String oldName = scriptFileList.get(position).name;
|
||||
new MaterialDialog.Builder(recyclerView.getContext()).title("重命名")
|
||||
.input("输入新名称", oldName, (dialog, input) -> {
|
||||
scriptFileList.rename(position, input.toString());
|
||||
recyclerView.getAdapter().notifyItemChanged(position);
|
||||
.input("输入新名称", oldName, new MaterialDialog.InputCallback() {
|
||||
@Override
|
||||
public void onInput(@NonNull MaterialDialog dialog, CharSequence input) {
|
||||
scriptFileList.rename(position, input.toString());
|
||||
recyclerView.getAdapter().notifyItemChanged(position);
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,9 +86,12 @@ public class ScriptListRecyclerView extends RecyclerView {
|
||||
|
||||
private void initScriptFileOperationPopupMenu() {
|
||||
mScriptFileOperationPopupMenu = new ScriptFileOperationPopupMenu(getContext());
|
||||
mScriptFileOperationPopupMenu.setOnItemClickListener((view, position) -> {
|
||||
ScriptFileOperation.getOperation(position).operate(ScriptListRecyclerView.this, mScriptFileList, mOperateFileIndex);
|
||||
mScriptFileOperationPopupMenu.dismiss();
|
||||
mScriptFileOperationPopupMenu.setOnItemClickListener(new ScriptFileOperationPopupMenu.OnItemClickListener() {
|
||||
@Override
|
||||
public void onClick(View view, int position) {
|
||||
ScriptFileOperation.getOperation(position).operate(ScriptListRecyclerView.this, mScriptFileList, mOperateFileIndex);
|
||||
mScriptFileOperationPopupMenu.dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -99,7 +102,12 @@ public class ScriptListRecyclerView extends RecyclerView {
|
||||
|
||||
private void showOperationDialog(final int position) {
|
||||
new MaterialDialog.Builder(getContext()).items(ScriptFileOperation.getOperationNames())
|
||||
.itemsCallback((dialog, itemView, operation, text) -> ScriptFileOperation.getOperation(operation).operate(ScriptListRecyclerView.this, mScriptFileList, position)).show();
|
||||
.itemsCallback(new MaterialDialog.ListCallback() {
|
||||
@Override
|
||||
public void onSelection(MaterialDialog dialog, View itemView, int operation, CharSequence text) {
|
||||
ScriptFileOperation.getOperation(operation).operate(ScriptListRecyclerView.this, mScriptFileList, position);
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
private void showOrDismissOperationPopupMenu(View v) {
|
||||
|
||||
@ -56,7 +56,12 @@ public class SlidingUpPanel extends FrameLayout {
|
||||
|
||||
public void dismiss() {
|
||||
mContentContainer.startAnimation(mSlideDownAnimation);
|
||||
postDelayed(() -> setVisibility(GONE), mSlideDownAnimation.getDuration());
|
||||
postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SlidingUpPanel.this.setVisibility(GONE);
|
||||
}
|
||||
}, mSlideDownAnimation.getDuration());
|
||||
mShowing = false;
|
||||
}
|
||||
|
||||
@ -85,7 +90,12 @@ public class SlidingUpPanel extends FrameLayout {
|
||||
|
||||
private void initShadow() {
|
||||
mShadow = findViewById(R.id.shadow);
|
||||
mShadow.setOnClickListener(v -> dismiss());
|
||||
mShadow.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
SlidingUpPanel.this.dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -12,7 +12,7 @@ public class MapEntries<K, V> {
|
||||
private Map<K, V> mMap;
|
||||
|
||||
public MapEntries() {
|
||||
this(new TreeMap<>());
|
||||
this(new TreeMap<K, V>());
|
||||
}
|
||||
|
||||
public MapEntries(Map<K, V> map) {
|
||||
|
||||
5
app/src/main/res/drawable/divider.xml
Normal file
5
app/src/main/res/drawable/divider.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<size android:height="0.5dp"/>
|
||||
<solid android:color="#10000000"/>
|
||||
</shape>
|
||||
23
app/src/main/res/drawable/divider_drak.xml
Normal file
23
app/src/main/res/drawable/divider_drak.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2016 Jecelyin Peng <jecelyin@gmail.com>
|
||||
~
|
||||
~ This file is part of 920 Text Editor.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<size android:height="0.5dp"/>
|
||||
<solid android:color="@color/darkDividerColor"/>
|
||||
</shape>
|
||||
39
app/src/main/res/layout/edit_layout.xml
Normal file
39
app/src/main/res/layout/edit_layout.xml
Normal file
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#ffffffff"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.jecelyin.editor.v2.view.EditorView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/editor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.jecelyin.editor.v2.core.widget.JecEditText
|
||||
android:id="@+id/edit_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#ffffffff"
|
||||
android:enabled="true"
|
||||
android:gravity="start|top"
|
||||
android:inputType="textMultiLine"
|
||||
android:padding="5dp"
|
||||
android:scrollbarAlwaysDrawVerticalTrack="false"
|
||||
android:scrollbarThumbVertical="@android:color/transparent"
|
||||
android:scrollbarTrackVertical="@null"
|
||||
android:scrollbars="vertical"/>
|
||||
|
||||
<me.zhanghai.android.materialprogressbar.MaterialProgressBar
|
||||
android:id="@+id/progress_view"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="90dp"
|
||||
android:indeterminate="true"
|
||||
android:visibility="gone"/>
|
||||
|
||||
</com.jecelyin.editor.v2.view.EditorView>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
@ -15,8 +15,14 @@
|
||||
app:showAsAction="never"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/action_exit"
|
||||
android:id="@+id/action_test"
|
||||
android:orderInCategory="300"
|
||||
android:title="@string/action_test"
|
||||
app:showAsAction="never"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/action_exit"
|
||||
android:orderInCategory="400"
|
||||
android:title="@string/action_exit"
|
||||
app:showAsAction="never"/>
|
||||
</menu>
|
||||
|
||||
@ -1,3 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<declare-styleable name="MaterialEditText"><attr format="color" name="met_baseColor"/><attr format="color" name="met_primaryColor"/><attr name="met_floatingLabel"><enum name="none" value="0"/><enum name="normal" value="1"/><enum name="highlight" value="2"/></attr><attr format="color" name="met_errorColor"/><attr format="integer" name="met_minCharacters"/><attr format="integer" name="met_maxCharacters"/><attr format="boolean" name="met_singleLineEllipsis"/><attr format="integer" name="met_minBottomTextLines"/><attr format="string" name="met_helperText"/><attr format="color" name="met_helperTextColor"/><attr format="string" name="met_accentTypeface"/><attr format="string" name="met_typeface"/><attr format="string" name="met_floatingLabelText"/><attr format="dimension" name="met_floatingLabelPadding"/><attr format="boolean" name="met_hideUnderline"/><attr format="color" name="met_underlineColor"/><attr format="boolean" name="met_autoValidate"/><attr format="reference" name="met_iconLeft"/><attr format="reference" name="met_iconRight"/><attr format="dimension" name="met_iconPadding"/><attr format="boolean" name="met_clearButton"/><attr format="dimension" name="met_floatingLabelTextSize"/><attr format="color" name="met_floatingLabelTextColor"/><attr format="dimension" name="met_bottomTextSize"/><attr format="boolean" name="met_floatingLabelAlwaysShown"/><attr format="boolean" name="met_helperTextAlwaysShown"/><attr format="boolean" name="met_floatingLabelAnimating"/><attr format="color" name="met_textColor"/><attr format="color" name="met_textColorHint"/></declare-styleable>
|
||||
<!-- From: file:/Users/rengwuxian/projects/MaterialEditText/library/src/main/res/values/dimens.xml -->
|
||||
<eat-comment/>
|
||||
<dimen name="bottom_ellipsis_height">4dp</dimen>
|
||||
<dimen name="bottom_text_size">12sp</dimen>
|
||||
<dimen name="default_padding_bottom">8dp</dimen>
|
||||
<dimen name="default_padding_top">8dp</dimen>
|
||||
<dimen name="floating_label_text_size">12sp</dimen>
|
||||
<dimen name="inner_components_spacing">8dp</dimen>
|
||||
<dimen name="inner_padding_left">0dp</dimen>
|
||||
<dimen name="inner_padding_right">0dp</dimen>
|
||||
|
||||
<declare-styleable name="RoundedImageView"><attr format="dimension" name="riv_corner_radius"/><attr format="dimension" name="riv_corner_radius_top_left"/><attr format="dimension" name="riv_corner_radius_top_right"/><attr format="dimension" name="riv_corner_radius_bottom_left"/><attr format="dimension" name="riv_corner_radius_bottom_right"/><attr format="dimension" name="riv_border_width"/><attr format="color" name="riv_border_color"/><attr format="boolean" name="riv_mutate_background"/><attr format="boolean" name="riv_oval"/><attr name="android:scaleType"/><attr name="riv_tile_mode"><enum name="clamp" value="0"/><enum name="repeat" value="1"/><enum name="mirror" value="2"/></attr><attr name="riv_tile_mode_x"><enum name="clamp" value="0"/><enum name="repeat" value="1"/><enum name="mirror" value="2"/></attr><attr name="riv_tile_mode_y"><enum name="clamp" value="0"/><enum name="repeat" value="1"/><enum name="mirror" value="2"/></attr></declare-styleable>
|
||||
<!-- From: file:/Users/vince/Documents/vinc3m1/RoundedImageView/roundedimageview/src/main/res/values/about_libraries_def.xml -->
|
||||
<eat-comment/>
|
||||
<string name="define_roundedimageview"/>
|
||||
<string name="library_roundedimageview_author">Vince Mi</string>
|
||||
<string name="library_roundedimageview_authorWebsite">https://github.com/vinc3m1</string>
|
||||
<string name="library_roundedimageview_isOpenSource">true</string>
|
||||
<string name="library_roundedimageview_libraryDescription">A fast ImageView (and Drawable) that supports rounded corners (and ovals or circles) based on the original example from Romain Guy.</string>
|
||||
<string name="library_roundedimageview_libraryName">RoundedImageView</string>
|
||||
<string name="library_roundedimageview_libraryVersion">1.3.0</string>
|
||||
<string name="library_roundedimageview_libraryWebsite">https://github.com/vinc3m1/RoundedImageView</string>
|
||||
<string name="library_roundedimageview_licenseId">apache_2_0</string>
|
||||
<string name="library_roundedimageview_repositoryLink">https://github.com/vinc3m1/RoundedImageView.git</string>
|
||||
</resources>
|
||||
@ -17,4 +17,5 @@
|
||||
<string name="text_path_is_empty">路径为空</string>
|
||||
<string name="text_file_not_exists">文件不存在</string>
|
||||
<string name="text_no_file_rw_permission">无文件读写权限</string>
|
||||
<string name="action_test">内嵌920测试</string>
|
||||
</resources>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user