6.7.0 - Alpha12 - Fine tuning
This commit is contained in:
@@ -3,10 +3,8 @@ package androidx.recyclerview.widget;
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.EdgeEffect;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.widget.EdgeEffectCompat;
|
||||
|
||||
import org.autojs.autojs.theme.ThemeColor;
|
||||
import org.autojs.autojs.theme.ThemeColorManager;
|
||||
import org.autojs.autojs.theme.ThemeColorMutable;
|
||||
@@ -15,12 +13,19 @@ import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* Created by Stardust on Aug 14, 2016.
|
||||
* Modified by SuperMonster003 as of Dec 1, 2021.
|
||||
*/
|
||||
public class ThemeColorRecyclerView extends RecyclerView implements ThemeColorMutable {
|
||||
|
||||
private Field mLeftGlowField, mTopGlowField, mRightGlowField, mBottomGlowField;
|
||||
private Field mEdgeEffectField;
|
||||
private int mColorPrimary;
|
||||
|
||||
private Field mLeftGlowField;
|
||||
private Field mTopGlowField;
|
||||
private Field mRightGlowField;
|
||||
private Field mBottomGlowField;
|
||||
|
||||
private Field mEdgeEffectField;
|
||||
|
||||
private boolean hasAppliedThemeColorLeft;
|
||||
private boolean hasAppliedThemeColorTop;
|
||||
private boolean hasAppliedThemeColorRight;
|
||||
@@ -44,8 +49,9 @@ public class ThemeColorRecyclerView extends RecyclerView implements ThemeColorMu
|
||||
private boolean applyThemeColor(Field edgeEffectCompatField) {
|
||||
try {
|
||||
EdgeEffectCompat edgeEffectCompat = (EdgeEffectCompat) edgeEffectCompatField.get(this);
|
||||
if (edgeEffectCompat != null)
|
||||
if (edgeEffectCompat != null) {
|
||||
return setEdgeEffectColor(edgeEffectCompat, mColorPrimary);
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
/* Ignored. */
|
||||
}
|
||||
@@ -67,12 +73,29 @@ public class ThemeColorRecyclerView extends RecyclerView implements ThemeColorMu
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// android:fadeScrollbars="true"
|
||||
// setScrollbarFadingEnabled(true);
|
||||
|
||||
// android:scrollbarDefaultDelayBeforeFade="600"
|
||||
// setScrollBarDefaultDelayBeforeFade(600);
|
||||
|
||||
// android:scrollbarFadeDuration="500"
|
||||
// setScrollBarFadeDuration(500);
|
||||
|
||||
// android:scrollbars="vertical"
|
||||
// setVerticalScrollBarEnabled(true);
|
||||
|
||||
// To ensure scrollbar fading works properly.
|
||||
// setFadingEdgeLength(0);
|
||||
|
||||
ThemeColorManager.add(this);
|
||||
}
|
||||
|
||||
private boolean setEdgeEffectColor(EdgeEffectCompat compat, int color) {
|
||||
if (compat == null)
|
||||
if (compat == null) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
EdgeEffect edgeEffect = (EdgeEffect) mEdgeEffectField.get(compat);
|
||||
if (edgeEffect != null) {
|
||||
@@ -86,40 +109,40 @@ public class ThemeColorRecyclerView extends RecyclerView implements ThemeColorMu
|
||||
|
||||
@Override
|
||||
public void setThemeColor(ThemeColor color) {
|
||||
if (color.colorPrimary == mColorPrimary)
|
||||
if (color.colorPrimary == mColorPrimary) {
|
||||
return;
|
||||
}
|
||||
mColorPrimary = color.colorPrimary;
|
||||
invalidateGlows();
|
||||
}
|
||||
|
||||
void invalidateGlows() {
|
||||
super.invalidateGlows();
|
||||
hasAppliedThemeColorBottom = hasAppliedThemeColorLeft = hasAppliedThemeColorRight = hasAppliedThemeColorTop = false;
|
||||
hasAppliedThemeColorLeft = false;
|
||||
hasAppliedThemeColorTop = false;
|
||||
hasAppliedThemeColorRight = false;
|
||||
hasAppliedThemeColorBottom = false;
|
||||
}
|
||||
|
||||
void ensureLeftGlow() {
|
||||
super.ensureLeftGlow();
|
||||
if (!hasAppliedThemeColorLeft)
|
||||
hasAppliedThemeColorLeft = applyThemeColor(mLeftGlowField);
|
||||
}
|
||||
|
||||
void ensureRightGlow() {
|
||||
super.ensureLeftGlow();
|
||||
if (!hasAppliedThemeColorRight)
|
||||
hasAppliedThemeColorRight = applyThemeColor(mRightGlowField);
|
||||
hasAppliedThemeColorLeft = hasAppliedThemeColorLeft || applyThemeColor(mLeftGlowField);
|
||||
}
|
||||
|
||||
void ensureTopGlow() {
|
||||
super.ensureTopGlow();
|
||||
if (!hasAppliedThemeColorTop)
|
||||
hasAppliedThemeColorTop = applyThemeColor(mTopGlowField);
|
||||
hasAppliedThemeColorTop = hasAppliedThemeColorTop || applyThemeColor(mTopGlowField);
|
||||
|
||||
}
|
||||
|
||||
void ensureRightGlow() {
|
||||
super.ensureLeftGlow();
|
||||
hasAppliedThemeColorRight = hasAppliedThemeColorRight || applyThemeColor(mRightGlowField);
|
||||
}
|
||||
|
||||
void ensureBottomGlow() {
|
||||
super.ensureBottomGlow();
|
||||
if (!hasAppliedThemeColorBottom)
|
||||
hasAppliedThemeColorBottom = applyThemeColor(mBottomGlowField);
|
||||
hasAppliedThemeColorBottom = hasAppliedThemeColorBottom || applyThemeColor(mBottomGlowField);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import org.autojs.autojs.core.ui.inflater.ResourceParser
|
||||
import org.autojs.autojs.core.ui.inflater.util.Dimensions
|
||||
import org.autojs.autojs.runtime.ScriptRuntime
|
||||
import org.autojs.autojs.util.ColorUtils
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar
|
||||
|
||||
/**
|
||||
* Modified by SuperMonster003 as of Jan 21, 2023.
|
||||
@@ -27,7 +27,7 @@ open class FloatingActionButtonAttributes(scriptRuntime: ScriptRuntime, resource
|
||||
registerAttrs(arrayOf("backgroundTint", "bgTint")) { view.backgroundTintList = ColorUtils.toColorStateList(view, it) }
|
||||
registerAttr("ensureMinTouchTargetSize") { view.setEnsureMinTouchTargetSize(it.toBoolean()) }
|
||||
registerAttr("maxImageSize") { view.setMaxImageSize(it.toInt()) }
|
||||
registerAttr("excludeFromNavigationBar") { ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar(view) }
|
||||
registerAttr("excludeFromNavigationBar") { view.excludeFloatingActionButtonFromBottomNavigationBar() }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,6 +16,8 @@ import org.autojs.autojs.model.explorer.Explorers
|
||||
import org.autojs.autojs.ui.edit.EditorView
|
||||
import org.autojs.autojs.ui.explorer.ExplorerView
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludeContentViewFromHorizontalNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs6.R
|
||||
import org.autojs.autojs6.databinding.ActivityTaskerEditBinding
|
||||
import org.json.JSONException
|
||||
@@ -40,8 +42,8 @@ class TaskPrefEditActivity : AbstractAppCompatPluginActivity() {
|
||||
binding.editScript.setOnClickListener { editPreExecuteScript() }
|
||||
|
||||
ViewUtils.setToolbarAsBack(this, R.string.text_please_choose_a_script)
|
||||
ViewUtils.excludeContentViewFromHorizontalNavigationBar(this)
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(binding.scriptList)
|
||||
this.excludeContentViewFromHorizontalNavigationBar()
|
||||
binding.scriptList.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
initScriptListRecyclerView()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
package org.autojs.autojs.network.entity
|
||||
|
||||
class SimpleVersionInfo(val versionName: String?, val versionCode: Int)
|
||||
class SimpleVersionInfo(val versionName: String?, val versionCode: Long)
|
||||
@@ -5,7 +5,7 @@ import org.autojs.autojs.util.StringUtils.str
|
||||
import org.autojs.autojs.util.UpdateUtils.isVersionIgnored
|
||||
import org.autojs.autojs6.BuildConfig
|
||||
import org.autojs.autojs6.R
|
||||
import kotlin.math.roundToInt
|
||||
import kotlin.math.roundToLong
|
||||
|
||||
/**
|
||||
* Created by Stardust on Sep 20, 2017.
|
||||
@@ -16,7 +16,7 @@ class VersionInfo : ExtendedVersionInfo {
|
||||
var versionName: String = ""
|
||||
private set
|
||||
|
||||
var versionCode = 0
|
||||
var versionCode = 0L
|
||||
private set
|
||||
|
||||
val isNewer: Boolean
|
||||
@@ -43,7 +43,7 @@ class VersionInfo : ExtendedVersionInfo {
|
||||
Log.d(TAG, "versionName: $versionName")
|
||||
}
|
||||
if (versionCode <= 0 && line.contains(regexVersionCode)) {
|
||||
versionCode = regexVersionCode.find(line)?.groupValues?.get(1)?.toDouble()?.roundToInt() ?: -1
|
||||
versionCode = regexVersionCode.find(line)?.groupValues?.get(1)?.toDouble()?.roundToLong() ?: -1L
|
||||
Log.d(TAG, "versionCode: $versionCode")
|
||||
}
|
||||
if (versionName.isNotBlank() && versionCode > 0) {
|
||||
@@ -52,7 +52,7 @@ class VersionInfo : ExtendedVersionInfo {
|
||||
}
|
||||
}
|
||||
|
||||
constructor(versionName: String, versionCode: Int) {
|
||||
constructor(versionName: String, versionCode: Long) {
|
||||
this.versionName = versionName
|
||||
this.versionCode = versionCode
|
||||
}
|
||||
@@ -94,13 +94,13 @@ class VersionInfo : ExtendedVersionInfo {
|
||||
val indexForVersionName = 0
|
||||
val indexForVersionCode = 1
|
||||
var versionName: String? = null
|
||||
var versionCode = -1
|
||||
var versionCode = -1L
|
||||
val split = summary.toString().split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
|
||||
for (i in split.indices) {
|
||||
if (i == indexForVersionName) {
|
||||
versionName = split[i]
|
||||
} else if (i == indexForVersionCode) {
|
||||
versionCode = split[i].replace("[()]".toRegex(), "").toInt()
|
||||
versionCode = split[i].replace("[()]".toRegex(), "").toLong()
|
||||
}
|
||||
}
|
||||
return SimpleVersionInfo(versionName, versionCode)
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
package org.autojs.autojs.runtime.api
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Rect
|
||||
import androidx.core.graphics.createBitmap
|
||||
import com.benjaminwan.ocrlibrary.TextBlock
|
||||
import org.autojs.autojs.AutoJs
|
||||
import org.autojs.autojs.core.image.ImageWrapper
|
||||
import java.util.ArrayList
|
||||
import com.benjaminwan.ocrlibrary.OcrResult as RapidOcrResult
|
||||
|
||||
class OcrRapid {
|
||||
@@ -47,7 +46,7 @@ class OcrRapid {
|
||||
return detectRaw(image).textBlocks.map { it.text }
|
||||
}
|
||||
|
||||
private fun OcrRapid.detectRaw(image: ImageWrapper?): RapidOcrResult {
|
||||
private fun detectRaw(image: ImageWrapper?): RapidOcrResult {
|
||||
image ?: return mEmptyOcrResult
|
||||
val bitmap = image.bitmap
|
||||
if (bitmap.isRecycled) {
|
||||
@@ -67,6 +66,6 @@ class OcrRapid {
|
||||
)
|
||||
}
|
||||
|
||||
private fun newEmptyOutputBitmap() = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
|
||||
private fun newEmptyOutputBitmap() = createBitmap(1, 1)
|
||||
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.PresetColorL
|
||||
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.presetColorLibraries
|
||||
import org.autojs.autojs.util.ColorUtils
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.onceGlobalLayout
|
||||
import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByColorLuminance
|
||||
import org.autojs.autojs6.R
|
||||
@@ -91,7 +92,7 @@ class ColorItemsActivity : ColorSelectBaseActivity() {
|
||||
it.adapter = ColorItemAdapter(library.colors).also { mAdapter = it }
|
||||
|
||||
it.addItemDecoration(DividerItemDecoration(this, VERTICAL))
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(it)
|
||||
it.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
|
||||
setUpSelectedPosition(mAdapter)
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ import org.autojs.autojs.extension.ViewExtensions.setOnTitleViewClickListener
|
||||
import org.autojs.autojs.theme.ThemeChangeNotifier
|
||||
import org.autojs.autojs.theme.ThemeColorManager
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByColorLuminance
|
||||
import org.autojs.autojs6.R
|
||||
import org.autojs.autojs6.databinding.MtActivityColorLibrariesBinding
|
||||
@@ -65,7 +66,7 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
|
||||
it.layoutManager = LinearLayoutManager(this)
|
||||
it.adapter = libraryAdapter
|
||||
it.addItemDecoration(DividerItemDecoration(this, VERTICAL))
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(it)
|
||||
it.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs6.R
|
||||
import org.autojs.autojs6.databinding.MtActivityColorSelectBinding
|
||||
|
||||
@@ -45,7 +45,7 @@ class ColorSelectActivity : ColorSelectBaseActivity() {
|
||||
mColorSettingRecyclerView = colorSettingRecyclerView.apply {
|
||||
setUpSelectedPosition(currentColor)
|
||||
setOnItemClickListener(mOnItemClickListener)
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(this)
|
||||
excludePaddingClippableViewFromBottomNavigationBar()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.provider.Settings
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.net.toUri
|
||||
import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor
|
||||
import org.autojs.autojs.ui.common.NotAskAgainDialog
|
||||
@@ -14,14 +15,13 @@ import org.autojs.autojs6.R
|
||||
|
||||
object ExactAlarmPermissionHelper {
|
||||
|
||||
fun isExactAlarmRuntimeGateRequired() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.S)
|
||||
fun canScheduleExactAlarms(context: Context): Boolean {
|
||||
if (!isExactAlarmRuntimeGateRequired()) return true
|
||||
val am = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
||||
return am.canScheduleExactAlarms()
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.S)
|
||||
fun requestExactAlarmPermission(context: Context): Boolean {
|
||||
val intent = Intent()
|
||||
.setAction(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM)
|
||||
@@ -32,6 +32,7 @@ object ExactAlarmPermissionHelper {
|
||||
// Check canScheduleExactAlarms permission and prompt user if needed.
|
||||
// zh-CN: 在此检查 canScheduleExactAlarms 并按需提示用户打开权限.
|
||||
fun checkExactAlarmPermission(context: Context) {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) return
|
||||
if (canScheduleExactAlarms(context)) return
|
||||
NotAskAgainDialog.Builder(context, key(R.string.key_timed_task_backend_alarm))
|
||||
.title(R.string.text_prompt)
|
||||
|
||||
@@ -17,6 +17,7 @@ import org.autojs.autojs.theme.ThemeChangeNotifier
|
||||
import org.autojs.autojs.theme.ThemeColorManager
|
||||
import org.autojs.autojs.util.LocaleUtils
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludeContentViewFromHorizontalNavigationBar
|
||||
import org.autojs.autojs6.R
|
||||
|
||||
/**
|
||||
@@ -38,7 +39,7 @@ abstract class BaseActivity : AppCompatActivity() {
|
||||
ViewUtils.appendSystemUiVisibility(this, SYSTEM_UI_FLAG_LAYOUT_STABLE or SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
|
||||
|
||||
if (handleContentViewFromHorizontalNavigationBarAutomatically) {
|
||||
ViewUtils.excludeContentViewFromHorizontalNavigationBar(this)
|
||||
this.excludeContentViewFromHorizontalNavigationBar()
|
||||
}
|
||||
|
||||
if (handleNavigationBarContrastEnforcedAutomatically) {
|
||||
|
||||
@@ -21,7 +21,8 @@ import org.autojs.autojs.core.pref.Pref
|
||||
import org.autojs.autojs.ui.BaseActivity
|
||||
import org.autojs.autojs.ui.keystore.NewKeyStoreDialog.NewKeyStoreConfigs
|
||||
import org.autojs.autojs.ui.viewmodel.KeyStoreViewModel
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByThemeColorLuminance
|
||||
import org.autojs.autojs6.R
|
||||
import org.autojs.autojs6.databinding.ActivityManageKeyStoreBinding
|
||||
@@ -88,7 +89,7 @@ class ManageKeyStoreActivity : BaseActivity() {
|
||||
setOnClickListener {
|
||||
NewKeyStoreDialog(newKeyStoreDialogCallback).show(supportFragmentManager, null)
|
||||
}
|
||||
ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar(this)
|
||||
excludeFloatingActionButtonFromBottomNavigationBar()
|
||||
}
|
||||
|
||||
keyStoreAdapter = KeyStoreAdaptor(keyStoreAdapterCallback)
|
||||
@@ -96,7 +97,7 @@ class ManageKeyStoreActivity : BaseActivity() {
|
||||
adapter = keyStoreAdapter
|
||||
layoutManager = LinearLayoutManager(this@ManageKeyStoreActivity)
|
||||
itemAnimator = DefaultItemAnimator()
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(this)
|
||||
excludePaddingClippableViewFromBottomNavigationBar()
|
||||
}
|
||||
binding.swipeRefreshLayout.setOnRefreshListener {
|
||||
loadKeyStores()
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.autojs.autojs.AutoJs.Companion.instance
|
||||
import org.autojs.autojs.core.console.GlobalConsole
|
||||
import org.autojs.autojs.runtime.api.Mime
|
||||
import org.autojs.autojs.ui.BaseActivity
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.showToast
|
||||
import org.autojs.autojs6.R
|
||||
import org.autojs.autojs6.databinding.ActivityLogBinding
|
||||
@@ -35,7 +35,7 @@ class LogActivity : BaseActivity() {
|
||||
|
||||
activityLogBinding.fab.apply {
|
||||
setOnClickListener { mConsoleImpl.clear() }
|
||||
ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar(this)
|
||||
excludeFloatingActionButtonFromBottomNavigationBar()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ import org.autojs.autojs.util.IntentUtils
|
||||
import org.autojs.autojs.util.StringUtils.key
|
||||
import org.autojs.autojs.util.UpdateUtils
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.onceGlobalLayout
|
||||
import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByThemeColorLuminance
|
||||
import org.autojs.autojs.util.ViewUtils.setNavigationIconColorByThemeColorLuminance
|
||||
@@ -120,7 +121,7 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity {
|
||||
val drawerLayout = it.drawerLayout
|
||||
setContentView(it.root)
|
||||
mViewPager = it.viewpager
|
||||
mFab = it.fab.apply { ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar(this) }
|
||||
mFab = it.fab.apply { excludeFloatingActionButtonFromBottomNavigationBar() }
|
||||
mTab = it.tab
|
||||
mToolbar = it.toolbar
|
||||
addViewBackground(it.appBar)
|
||||
|
||||
@@ -23,6 +23,8 @@ import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import org.autojs.autojs.ui.BaseActivity
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs6.R
|
||||
import org.autojs.autojs6.databinding.ActivityDisplayScrollableContentBinding
|
||||
|
||||
@@ -58,7 +60,7 @@ abstract class BaseDisplayContentActivity : BaseActivity() {
|
||||
internalFabView = binding.fab.apply {
|
||||
if (internalMenuResource > 0) {
|
||||
setOnClickListener { view -> showPopupMenu(view, internalTextView) }
|
||||
ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar(this)
|
||||
excludeFloatingActionButtonFromBottomNavigationBar()
|
||||
visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
@@ -66,7 +68,7 @@ abstract class BaseDisplayContentActivity : BaseActivity() {
|
||||
val scaleGestureDetector = ViewUtils.TextSizeScaleDetector(this, internalTextView)
|
||||
|
||||
val innerScrollView = binding.innerScrollView.also {
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(it)
|
||||
it.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
it.setOnTouchListener { view, event ->
|
||||
when (event.pointerCount) {
|
||||
2 -> {
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.autojs.autojs.ui.widget.ScrollAwareFABBehavior
|
||||
import org.autojs.autojs.util.IntentUtils
|
||||
import org.autojs.autojs.util.IntentUtils.SnackExceptionHolder
|
||||
import org.autojs.autojs.util.IntentUtils.ToastExceptionHolder
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs6.R
|
||||
import org.autojs.autojs6.databinding.FragmentExplorerBinding
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
@@ -73,7 +73,7 @@ class ExplorerFragment : ViewPagerFragment(0), OnFloatingActionButtonClickListen
|
||||
}
|
||||
}
|
||||
})
|
||||
explorerView.explorerItemListView?.let { ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(it) }
|
||||
explorerView.explorerItemListView?.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
}
|
||||
(activity as? MainActivity)?.apply {
|
||||
val tabLayout: TabLayout = findViewById(R.id.tab)
|
||||
|
||||
@@ -12,7 +12,7 @@ import org.autojs.autojs.ui.fragment.BindingDelegates.viewBinding
|
||||
import org.autojs.autojs.ui.main.ViewPagerFragment
|
||||
import org.autojs.autojs.ui.main.ViewStatesManageable
|
||||
import org.autojs.autojs.ui.widget.SimpleAdapterDataObserver
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs6.databinding.FragmentTaskManagerBinding
|
||||
|
||||
/**
|
||||
@@ -50,7 +50,7 @@ open class TaskManagerFragment : ViewPagerFragment(45), ViewStatesManageable {
|
||||
recyclerView.postDelayed({ refreshLayout.isRefreshing = false }, 800)
|
||||
}
|
||||
}
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(recyclerView)
|
||||
recyclerView.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
}
|
||||
restoreViewStates()
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@ import org.autojs.autojs.ui.BaseActivity
|
||||
import org.autojs.autojs.ui.shortcut.AppsIconSelectActivity
|
||||
import org.autojs.autojs.ui.widget.SimpleTextWatcher
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs6.R
|
||||
import org.autojs.autojs6.databinding.ActivityProjectConfigBinding
|
||||
import java.io.File
|
||||
@@ -92,12 +94,10 @@ class ProjectConfigActivity : BaseActivity() {
|
||||
|
||||
binding.fab.apply {
|
||||
setOnClickListener { commit() }
|
||||
ViewUtils.excludeFloatingActionButtonFromBottomNavigationBar(this)
|
||||
excludeFloatingActionButtonFromBottomNavigationBar()
|
||||
}
|
||||
|
||||
binding.scrollView.apply {
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(this)
|
||||
}
|
||||
binding.scrollView.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
|
||||
mNewProject = intent.getBooleanExtra(EXTRA_NEW_PROJECT, false)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package org.autojs.autojs.ui.settings
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs6.R
|
||||
|
||||
class DeveloperOptionsFragment : PreferenceFragmentCompat() {
|
||||
@@ -14,7 +14,7 @@ class DeveloperOptionsFragment : PreferenceFragmentCompat() {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(listView)
|
||||
listView.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -35,7 +35,7 @@ import org.autojs.autojs.ui.settings.VersionHistoryRepository.Companion.Category
|
||||
import org.autojs.autojs.ui.settings.VersionHistoryRepository.Companion.DEFAULT_FILTER
|
||||
import org.autojs.autojs.ui.settings.VersionHistoryRepository.Companion.DEFAULT_VERSION_NAME
|
||||
import org.autojs.autojs.util.ProcessLogger
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByThemeColorLuminance
|
||||
import org.autojs.autojs.util.ViewUtils.setNavigationIconColorByThemeColorLuminance
|
||||
import org.autojs.autojs6.R
|
||||
@@ -73,7 +73,7 @@ class DisplayVersionHistoriesActivity : BaseActivity() {
|
||||
addDuration = 200
|
||||
supportsChangeAnimations = false
|
||||
}
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(it)
|
||||
it.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
}
|
||||
|
||||
lifecycleScope.launch {
|
||||
|
||||
@@ -123,7 +123,7 @@ class LauncherIconPreference : MaterialListPreference, SharedPreferences.OnShare
|
||||
ViewUtils.showSnack(dialog.view, R.string.text_already_copied_to_clip, false)
|
||||
}
|
||||
}
|
||||
neutralText(R.string.dialog_button_copy)
|
||||
neutralText(R.string.text_copy_all)
|
||||
neutralColorRes(R.color.dialog_button_hint)
|
||||
onNeutral { dialog, _ ->
|
||||
ClipboardUtils.setClip(context, shortcuts.joinToString("\n"))
|
||||
|
||||
@@ -3,7 +3,7 @@ package org.autojs.autojs.ui.settings
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs6.R
|
||||
|
||||
class PreferencesFragment : PreferenceFragmentCompat() {
|
||||
@@ -16,7 +16,7 @@ class PreferencesFragment : PreferenceFragmentCompat() {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
listView.isHorizontalScrollBarEnabled = false
|
||||
listView.isVerticalScrollBarEnabled = false
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(listView)
|
||||
listView.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,11 +1,9 @@
|
||||
package org.autojs.autojs.ui.timing
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.Intent
|
||||
import android.net.ConnectivityManager
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.provider.Settings
|
||||
import android.text.TextUtils
|
||||
import android.util.Log
|
||||
import android.view.Menu
|
||||
@@ -22,7 +20,6 @@ import android.widget.TextView
|
||||
import android.widget.TimePicker
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.graphics.Insets
|
||||
import androidx.core.net.toUri
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.forEach
|
||||
@@ -35,7 +32,8 @@ import org.autojs.autojs.external.receiver.DynamicBroadcastReceivers
|
||||
import org.autojs.autojs.model.script.ScriptFile
|
||||
import org.autojs.autojs.permission.IgnoreBatteryOptimizationsPermission
|
||||
import org.autojs.autojs.theme.ThemeColorHelper
|
||||
import org.autojs.autojs.timing.ExactAlarmPermissionHelper
|
||||
import org.autojs.autojs.timing.ExactAlarmPermissionHelper.canScheduleExactAlarms
|
||||
import org.autojs.autojs.timing.ExactAlarmPermissionHelper.requestExactAlarmPermission
|
||||
import org.autojs.autojs.timing.IntentTask
|
||||
import org.autojs.autojs.timing.TaskReceiver
|
||||
import org.autojs.autojs.timing.TimedTask
|
||||
@@ -47,6 +45,7 @@ import org.autojs.autojs.timing.TimedTaskManager.updateTask
|
||||
import org.autojs.autojs.tool.MapBuilder
|
||||
import org.autojs.autojs.ui.BaseActivity
|
||||
import org.autojs.autojs.util.ViewUtils
|
||||
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
|
||||
import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByThemeColorLuminance
|
||||
import org.autojs.autojs.util.ViewUtils.showToast
|
||||
import org.autojs.autojs6.R
|
||||
@@ -140,7 +139,7 @@ class TimedTaskSettingActivity : BaseActivity() {
|
||||
|
||||
setUpTaskSettings()
|
||||
|
||||
ViewUtils.excludePaddingClippableViewFromBottomNavigationBar(binding.scrollView)
|
||||
binding.scrollView.excludePaddingClippableViewFromBottomNavigationBar()
|
||||
|
||||
ViewCompat.setOnApplyWindowInsetsListener(findViewById(android.R.id.content)) { v, insets ->
|
||||
val sysBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
@@ -353,36 +352,20 @@ class TimedTaskSettingActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
R.id.action_done -> when {
|
||||
!IgnoreBatteryOptimizationsPermission(this).has() -> {
|
||||
try {
|
||||
@SuppressLint("BatteryLife")
|
||||
val intent = Intent()
|
||||
.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
|
||||
.setData("package:$packageName".toUri())
|
||||
@Suppress("DEPRECATION")
|
||||
startActivityForResult(intent, REQUEST_CODE_IGNORE_BATTERY)
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
e.printStackTrace()
|
||||
createOrUpdateTask()
|
||||
R.id.action_done -> run {
|
||||
IgnoreBatteryOptimizationsPermission(this).let {
|
||||
if (!it.has() && it.request()) {
|
||||
return@run true
|
||||
}
|
||||
}
|
||||
!ExactAlarmPermissionHelper.canScheduleExactAlarms(this) -> {
|
||||
try {
|
||||
val intent = Intent()
|
||||
.setAction(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM)
|
||||
.setData("package:$packageName".toUri())
|
||||
@Suppress("DEPRECATION")
|
||||
startActivityForResult(intent, REQUEST_CODE_SCHEDULE_EXACT_ALARM)
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
e.printStackTrace()
|
||||
createOrUpdateTask()
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
if (!canScheduleExactAlarms(this) && requestExactAlarmPermission(this)) {
|
||||
return@run true
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
createOrUpdateTask()
|
||||
}
|
||||
}.let { true }
|
||||
createOrUpdateTask()
|
||||
return@run true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
|
||||
@@ -374,7 +374,8 @@ object ViewUtils {
|
||||
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun excludeFloatingActionButtonFromBottomNavigationBar(fab: FloatingActionButton, extraMarginBottomDp: Float = 16F) {
|
||||
fun FloatingActionButton.excludeFloatingActionButtonFromBottomNavigationBar(extraMarginBottomDp: Float = 16F) {
|
||||
val fab = this
|
||||
ViewCompat.setOnApplyWindowInsetsListener(fab) { view, insets ->
|
||||
val bottomInset = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom
|
||||
view.layoutParams.runCatching {
|
||||
@@ -387,7 +388,8 @@ object ViewUtils {
|
||||
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun excludePaddingClippableViewFromBottomNavigationBar(view: View, extraPaddingBottomDp: Float = 0F, clipToPadding: Boolean = false) {
|
||||
fun View.excludePaddingClippableViewFromBottomNavigationBar(extraPaddingBottomDp: Float = 0F, clipToPadding: Boolean = false) {
|
||||
val view = this
|
||||
ViewCompat.setOnApplyWindowInsetsListener(view) { _, insets ->
|
||||
val bottomInset = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom
|
||||
view.setPadding(0, 0, 0, DisplayUtils.dpToPx(extraPaddingBottomDp).roundToInt() + bottomInset)
|
||||
@@ -397,7 +399,8 @@ object ViewUtils {
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun excludeContentViewFromHorizontalNavigationBar(activity: Activity) {
|
||||
fun Activity.excludeContentViewFromHorizontalNavigationBar() {
|
||||
val activity = this
|
||||
val contentView = activity.findViewById<View?>(android.R.id.content) ?: return
|
||||
ViewCompat.setOnApplyWindowInsetsListener(contentView) { v, insets ->
|
||||
val sysInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
app:itemValues="@array/values_timed_task_backend"
|
||||
app:itemDefaultKey="@string/default_key_timed_task_backend"
|
||||
app:longClickPrompt="@string/description_timed_task_backend"
|
||||
app:longClickPromptMore="@string/description_timed_task_backend_more"/>
|
||||
app:longClickPromptMore="@string/description_timed_task_backend_more" />
|
||||
|
||||
</org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user