Move ToolApp root during edge back drag
This commit is contained in:
@@ -571,6 +571,10 @@ FloatBallAppWM.prototype.clearToolAppBackPreview = function(resetCurrent) {
|
||||
this.state.toolAppBackPreviewView = null;
|
||||
this.state.toolAppBackPreviewRoute = null;
|
||||
this.state.toolAppBackPreviewReady = false;
|
||||
if (resetCurrent && root) {
|
||||
try { root.animate().cancel(); } catch (eCancelRoot) {}
|
||||
try { root.setTranslationX(0); root.setAlpha(1); root.setScaleX(1); root.setScaleY(1); } catch (eRoot) {}
|
||||
}
|
||||
var body = this.state.toolAppBody;
|
||||
if (resetCurrent && body) {
|
||||
try { body.animate().cancel(); } catch (eCancel) {}
|
||||
@@ -872,23 +876,51 @@ FloatBallAppWM.prototype.applyToolAppBackPreviewProgress = function(edge, progre
|
||||
}
|
||||
} catch(eLog) {}
|
||||
|
||||
var root = this.state.toolAppRoot;
|
||||
var rootMove = dir * w * eased * 0.42;
|
||||
try {
|
||||
if (dragPx !== undefined && dragPx !== null) {
|
||||
var rawDrag = Number(dragPx || 0);
|
||||
if (isNaN(rawDrag)) rawDrag = 0;
|
||||
if (rawDrag < 0) rawDrag = -rawDrag;
|
||||
rootMove = dir * Math.min(rawDrag, Math.floor(w * 0.45));
|
||||
}
|
||||
} catch(eRootMove) {}
|
||||
|
||||
try {
|
||||
if (root) {
|
||||
try { root.animate().cancel(); } catch(eCancelRoot) {}
|
||||
root.setTranslationX(rootMove);
|
||||
}
|
||||
} catch(eRootSet) {
|
||||
safeLog(this.L, 'w', 'set tool app root translation fail: ' + String(eRootSet));
|
||||
}
|
||||
|
||||
if (body) {
|
||||
var bodyMove = dir * w * eased * 0.42;
|
||||
try {
|
||||
if (dragPx !== undefined && dragPx !== null) {
|
||||
var rawDrag = Number(dragPx || 0);
|
||||
if (isNaN(rawDrag)) rawDrag = 0;
|
||||
if (rawDrag < 0) rawDrag = -rawDrag;
|
||||
bodyMove = dir * Math.min(rawDrag, Math.floor(w * 0.45));
|
||||
}
|
||||
} catch(eBodyMove) {}
|
||||
try { body.animate().cancel(); } catch(eCancelBody) {}
|
||||
body.setTranslationX(bodyMove);
|
||||
body.setTranslationX(0);
|
||||
body.setAlpha(1.0 - 0.10 * eased);
|
||||
var s = 1.0 - 0.015 * eased;
|
||||
body.setScaleX(s);
|
||||
body.setScaleY(s);
|
||||
}
|
||||
|
||||
try {
|
||||
var rootTx = root ? root.getTranslationX() : 0;
|
||||
var bodyTx = body ? body.getTranslationX() : 0;
|
||||
var lpX = (this.state.viewerPanelLp ? this.state.viewerPanelLp.x : 0);
|
||||
var nowLog2 = Date.now();
|
||||
if (!this.state._lastBackMoveLog || nowLog2 - this.state._lastBackMoveLog > 300) {
|
||||
safeLog(this.L, 'd',
|
||||
'back move apply edge=' + String(edge) +
|
||||
' rootMove=' + String(rootMove) +
|
||||
' rootTx=' + String(rootTx) +
|
||||
' bodyTx=' + String(bodyTx) +
|
||||
' lpX=' + String(lpX)
|
||||
);
|
||||
this.state._lastBackMoveLog = nowLog2;
|
||||
}
|
||||
} catch(eMoveLog) {}
|
||||
if (prev) {
|
||||
prev.setAlpha(0.88 + 0.12 * eased);
|
||||
prev.setTranslationX(-dir * this.dp(24) * (1.0 - eased));
|
||||
@@ -904,11 +936,12 @@ FloatBallAppWM.prototype.applyToolAppBackPreviewProgress = function(edge, progre
|
||||
FloatBallAppWM.prototype.finishToolAppBackPreview = function(edge, complete) {
|
||||
try {
|
||||
var self = this;
|
||||
var root = this.state.toolAppRoot;
|
||||
var body = this.state.toolAppBody;
|
||||
var prev = this.state.toolAppBackPreviewView;
|
||||
var dir = Number(edge) === 1 ? -1 : 1;
|
||||
var decel = new android.view.animation.DecelerateInterpolator();
|
||||
if (complete && body) {
|
||||
if (complete && root) {
|
||||
var w = 0;
|
||||
try { w = Number((this.state.viewerPanelLp && this.state.viewerPanelLp.width) || 0); } catch (eW0) {}
|
||||
if (!w || w < this.dp(120)) {
|
||||
@@ -916,29 +949,60 @@ FloatBallAppWM.prototype.finishToolAppBackPreview = function(edge, complete) {
|
||||
}
|
||||
if (!w || w < this.dp(120)) w = this.dp(320);
|
||||
try { if (prev) prev.animate().translationX(0).alpha(1).scaleX(1).scaleY(1).setDuration(180).setInterpolator(decel).start(); } catch(ePrev) {}
|
||||
body.animate().translationX(dir * w).alpha(0.90).scaleX(0.985).scaleY(0.985).setDuration(180).setInterpolator(decel).withEndAction(new java.lang.Runnable({
|
||||
root.animate().translationX(dir * w).setDuration(180).setInterpolator(decel).withEndAction(new java.lang.Runnable({
|
||||
run: function() {
|
||||
try { self.resetToolAppBackWindowFollow(); } catch(eResetFollow) {}
|
||||
try {
|
||||
if (self.state.toolAppRoot) self.state.toolAppRoot.setTranslationX(0);
|
||||
if (self.state.toolAppBody) {
|
||||
self.state.toolAppBody.setTranslationX(0);
|
||||
self.state.toolAppBody.setAlpha(1);
|
||||
self.state.toolAppBody.setScaleX(1);
|
||||
self.state.toolAppBody.setScaleY(1);
|
||||
}
|
||||
} catch(eResetView) {}
|
||||
try { self.clearToolAppBackPreview(true); } catch (eClear) {}
|
||||
try { self.popToolAppPage("edge_swipe_back"); } catch (ePop) {}
|
||||
}
|
||||
})).start();
|
||||
return;
|
||||
}
|
||||
if (body) {
|
||||
if (root) {
|
||||
var cancelInterp = new android.view.animation.AccelerateDecelerateInterpolator();
|
||||
try { if (prev) prev.animate().translationX(-dir * self.dp(24)).alpha(0.88).scaleX(0.975).scaleY(0.975).setDuration(200).setInterpolator(cancelInterp).start(); } catch(ePrev2) {}
|
||||
body.animate().translationX(0).alpha(1).scaleX(1).scaleY(1).setDuration(200).setInterpolator(cancelInterp).withEndAction(new java.lang.Runnable({
|
||||
root.animate().translationX(0).setDuration(200).setInterpolator(cancelInterp).withEndAction(new java.lang.Runnable({
|
||||
run: function() {
|
||||
try { self.resetToolAppBackWindowFollow(); } catch(eResetFollow2) {}
|
||||
try {
|
||||
if (self.state.toolAppRoot) self.state.toolAppRoot.setTranslationX(0);
|
||||
if (self.state.toolAppBody) {
|
||||
self.state.toolAppBody.setTranslationX(0);
|
||||
self.state.toolAppBody.setAlpha(1);
|
||||
self.state.toolAppBody.setScaleX(1);
|
||||
self.state.toolAppBody.setScaleY(1);
|
||||
}
|
||||
} catch(eResetView2) {}
|
||||
try { self.clearToolAppBackPreview(true); } catch (eClear2) {}
|
||||
}
|
||||
})).start();
|
||||
return;
|
||||
}
|
||||
if (body) {
|
||||
var cancelInterp2 = new android.view.animation.AccelerateDecelerateInterpolator();
|
||||
try { if (prev) prev.animate().translationX(-dir * self.dp(24)).alpha(0.88).scaleX(0.975).scaleY(0.975).setDuration(200).setInterpolator(cancelInterp2).start(); } catch(ePrev3) {}
|
||||
body.animate().translationX(0).alpha(1).scaleX(1).scaleY(1).setDuration(200).setInterpolator(cancelInterp2).withEndAction(new java.lang.Runnable({
|
||||
run: function() {
|
||||
try { self.resetToolAppBackWindowFollow(); } catch(eResetFollow4) {}
|
||||
try { self.clearToolAppBackPreview(true); } catch (eClear3) {}
|
||||
}
|
||||
})).start();
|
||||
} else {
|
||||
this.clearToolAppBackPreview(true);
|
||||
}
|
||||
} catch (e) {
|
||||
try { this.resetToolAppBackWindowFollow(); } catch(eResetFollow3) {}
|
||||
try { if (this.state.toolAppRoot) this.state.toolAppRoot.setTranslationX(0); } catch(eRootCatch) {}
|
||||
try { if (this.state.toolAppBody) this.state.toolAppBody.setTranslationX(0); } catch(eBodyCatch) {}
|
||||
this.clearToolAppBackPreview(true);
|
||||
safeLog(this.L, 'w', "finish tool app back preview fail: " + String(e));
|
||||
}
|
||||
|
||||
@@ -58,8 +58,8 @@
|
||||
"size": 304993
|
||||
},
|
||||
"th_15_extra.js": {
|
||||
"sha256": "b955573f6715af3da1ffe2302fdc5ebd54967a067f0e8a7503d1eebfbf4e1106",
|
||||
"size": 109900
|
||||
"sha256": "f2742e0ded86437429e21c392e976882e1f7fc35c2fabee73476d5c67c32d5bd",
|
||||
"size": 112672
|
||||
},
|
||||
"th_16_entry.js": {
|
||||
"sha256": "6c59d9891cd010647f84c3db93f1cf95c7bbfb758470ea21044bf72eb8ff73d1",
|
||||
@@ -68,5 +68,5 @@
|
||||
},
|
||||
"keyId": "toolhub-targets-2026-rsa3072",
|
||||
"schema": 2,
|
||||
"version": 20260521222249
|
||||
"version": 20260521222946
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
PCoh/AnzuyTevPckTCsSIQKxoIla7IzTNtruxi0f4gJghuP/mlrKCH4RzTVf1teHSoYQanG5fWGWIGSh396MerQdCXG/g5VMlZirrOZ6ew3gooxZ3lLg6Y3hBH3oI47KhJF5PX+z/sqeH5AOMZ7d2OrWlYNgGmRvqoyulHK2dSHhHN3OjVxVYI4x72COMhf//6IFxWxL6sp31eS+HEL43+CRGJLxYzuNBlwq6EMO0IX22NBtU2Fs3fheyIiGZVFHnHNyHs4IKXWC5EVLYrD697DnxhkGvRcNOBM0QkcDtLQBahZFpt7qeHxl5pCYyTKubUYXk9noNxR92P9ocvGAD6KARtCoHiWmkp79d0siAKJ+DjzSgIF0Ye5qAGfyMjUb7ZVPPlcYtYZj97/GEYYjxmFeuyVLnxgI7XLOJy5fgQAhiMkwGhoMG4WGK41ym3kQXvQTumnG/i8+9OPfRd58EzbqVHUS4oJgbGLdmTrfV8l2k1NCcGlZP04yNYCailnu
|
||||
VVMSoSK+a/PGnXpr654GjtvS68rk1MxWEDVULHMDOgIj1BZ1tKTBRTKRmG9hu06csT8QtRZHKtzfHwbGzUhbEC7WOmRelGOvBCCsBS8t10i7sS1Jg8TE7ESrY7p4/8q6uhqTvaE0JjlbuNMX5ImYYi0at91PkqWL3YybUTr7wDRnfGRWeLa054vf7v4gnkkfd+EttFAfQbXkC2EKk6wHVi1NMOVs18j50HdXw1mNrel9kH/LqnbjWj4g1zDnkpRwgOW6IY8qU/mQA6OGUgShbpn71rEFuMo+7O7ZiB4Lmel8i1WBXWORn2mrGRhJC79F6nH8zQzhc8lYWayNRW9YVD/Z4rxSxU/+S+TMzyG+IHz7crwF68F3nBwdnhwMXTCmoSjakOgkNyOoUHoSqRTRBDpiWOXjA4skV6NVpnT91wcakoNBgq2faRX7UgCcqR6fVxtcaX1HuLH8+9riWXbJBpRbk8iNdnwkkGZxndYEQVXfBgnn0DKQgDZSxnx+I4xy
|
||||
|
||||
Reference in New Issue
Block a user