Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit 633529f

Browse files
authored
Spinner Update (#3108)
* Updated spinner animation and graph colors * Fix permission request not being executed after data collection dialog
1 parent 0337684 commit 633529f

File tree

6 files changed

+388
-182
lines changed

6 files changed

+388
-182
lines changed

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/UISurfaceTextureRenderer.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@ public class UISurfaceTextureRenderer {
2020
private SurfaceTexture mSurfaceTexture;
2121
private Surface mSurface;
2222
private Canvas mSurfaceCanvas;
23-
private static boolean sUseHarwareAcceleration;
23+
private boolean mIsHardwareAccelerationEnabled;
24+
private static boolean sUseHardwareAcceleration;
2425
private static boolean sRenderActive = true;
2526

2627
public static void setUseHardwareAcceleration(boolean aEnabled) {
27-
sUseHarwareAcceleration = aEnabled;
28+
sUseHardwareAcceleration = aEnabled;
2829
}
2930

3031
public static void setRenderActive(boolean aActive) {
@@ -37,6 +38,7 @@ public static void setRenderActive(boolean aActive) {
3738
mSurfaceTexture = aTexture;
3839
mSurfaceTexture.setDefaultBufferSize(aWidth, aHeight);
3940
mSurface = new Surface(mSurfaceTexture);
41+
mIsHardwareAccelerationEnabled = sUseHardwareAcceleration;
4042
}
4143

4244
UISurfaceTextureRenderer(Surface aSurface, int aWidth, int aHeight) {
@@ -78,7 +80,7 @@ Canvas drawBegin() {
7880
}
7981
if (mSurface != null) {
8082
try {
81-
if (sUseHarwareAcceleration) {
83+
if (sUseHardwareAcceleration && mIsHardwareAccelerationEnabled) {
8284
mSurfaceCanvas = mSurface.lockHardwareCanvas();
8385
} else {
8486
mSurfaceCanvas = mSurface.lockCanvas(null);
@@ -112,4 +114,12 @@ int height() {
112114
return mTextureHeight;
113115
}
114116

117+
/**
118+
* Override global hardware acceleration per view.
119+
* @param aEnabled Enable/Disable Hardware acceleration for this view.
120+
*/
121+
public void setIsHardwareAccelerationEnabled(boolean aEnabled) {
122+
mIsHardwareAccelerationEnabled = aEnabled;
123+
}
124+
115125
}

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/UIWidget.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public interface Delegate {
5252
private Runnable mFirstDrawCallback;
5353
protected boolean mResizing = false;
5454
protected boolean mReleased = false;
55+
private Boolean mIsHardwareAccelerationEnabled;
5556

5657
public UIWidget(Context aContext) {
5758
super(aContext);
@@ -132,6 +133,9 @@ public void setSurfaceTexture(SurfaceTexture aTexture, final int aWidth, final i
132133
}
133134
if (aTexture != null) {
134135
mRenderer = new UISurfaceTextureRenderer(aTexture, aWidth, aHeight);
136+
if (mIsHardwareAccelerationEnabled != null) {
137+
mRenderer.setIsHardwareAccelerationEnabled(mIsHardwareAccelerationEnabled);
138+
}
135139
}
136140
setWillNotDraw(mRenderer == null);
137141
}
@@ -145,6 +149,9 @@ public void setSurface(Surface aSurface, final int aWidth, final int aHeight, Ru
145149
}
146150
if (aSurface != null) {
147151
mRenderer = new UISurfaceTextureRenderer(aSurface, aWidth, aHeight);
152+
if (mIsHardwareAccelerationEnabled != null) {
153+
mRenderer.setIsHardwareAccelerationEnabled(mIsHardwareAccelerationEnabled);
154+
}
148155
}
149156
setWillNotDraw(mRenderer == null);
150157
}
@@ -435,4 +442,8 @@ protected float getWorldWidth() {
435442
return mWorldWidth;
436443
}
437444

445+
public void setIsHardwareAccelerationEnabled(boolean enabled) {
446+
mIsHardwareAccelerationEnabled = enabled;
447+
}
448+
438449
}

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/dialogs/VoiceSearchWidget.java

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66
import android.content.Context;
77
import android.content.pm.PackageManager;
88
import android.content.res.Configuration;
9+
import android.graphics.drawable.AnimatedVectorDrawable;
910
import android.graphics.drawable.ClipDrawable;
1011
import android.graphics.drawable.Drawable;
1112
import android.graphics.drawable.LayerDrawable;
1213
import android.os.Bundle;
14+
import android.os.Handler;
15+
import android.os.Looper;
1316
import android.util.AttributeSet;
1417
import android.util.Log;
1518
import android.view.Gravity;
1619
import android.view.LayoutInflater;
17-
import android.view.animation.Animation;
18-
import android.view.animation.LinearInterpolator;
19-
import android.view.animation.RotateAnimation;
2020

2121
import androidx.core.app.ActivityCompat;
2222
import androidx.databinding.DataBindingUtil;
@@ -61,7 +61,7 @@ public interface VoiceSearchDelegate {
6161
private MozillaSpeechService mMozillaSpeechService;
6262
private VoiceSearchDelegate mDelegate;
6363
private ClipDrawable mVoiceInputClipDrawable;
64-
private RotateAnimation mSearchingAnimation;
64+
private AnimatedVectorDrawable mSearchingAnimation;
6565
private boolean mIsSpeechRecognitionRunning = false;
6666
private boolean mWasSpeechRecognitionRunning = false;
6767

@@ -81,6 +81,9 @@ public VoiceSearchWidget(Context aContext, AttributeSet aAttrs, int aDefStyle) {
8181
}
8282

8383
private void initialize(Context aContext) {
84+
// AnimatedVectorDrawable doesn't work with a Hardware Accelerated canvas, we disable it for this view.
85+
setIsHardwareAccelerationEnabled(false);
86+
8487
updateUI();
8588

8689
mWidgetManager.addPermissionListener(this);
@@ -89,13 +92,7 @@ private void initialize(Context aContext) {
8992
mMozillaSpeechService.setGeckoWebExecutor(EngineProvider.INSTANCE.createGeckoWebExecutor(getContext()));
9093
mMozillaSpeechService.setProductTag(getContext().getString(R.string.voice_app_id));
9194

92-
mSearchingAnimation = new RotateAnimation(0, 360f,
93-
Animation.RELATIVE_TO_SELF, 0.5f,
94-
Animation.RELATIVE_TO_SELF, 0.5f);
95-
96-
mSearchingAnimation.setInterpolator(new LinearInterpolator());
97-
mSearchingAnimation.setDuration(ANIMATION_DURATION);
98-
mSearchingAnimation.setRepeatCount(Animation.INFINITE);
95+
mSearchingAnimation = (AnimatedVectorDrawable) mBinding.voiceSearchAnimationSearching.getDrawable();
9996

10097
mMozillaSpeechService.addListener(mVoiceSearchListener);
10198
((Application)aContext.getApplicationContext()).registerActivityLifecycleCallbacks(this);
@@ -297,11 +294,9 @@ public void show(@ShowFlags int aShowFlags) {
297294
if (index == PromptDialogWidget.POSITIVE) {
298295
SettingsStore.getInstance(getContext()).setSpeechDataCollectionEnabled(true);
299296
}
300-
post(() -> show(aShowFlags));
297+
new Handler(Looper.getMainLooper()).post(() -> show(aShowFlags));
301298
},
302-
() -> {
303-
mWidgetManager.openNewTabForeground(getResources().getString(R.string.private_policy_url));
304-
});
299+
() -> mWidgetManager.openNewTabForeground(getResources().getString(R.string.private_policy_url)));
305300
}
306301
}
307302

@@ -315,13 +310,13 @@ public void hide(@HideFlags int aHideFlags) {
315310

316311
private void setStartListeningState() {
317312
mBinding.setState(State.LISTENING);
318-
mBinding.voiceSearchAnimationSearching.clearAnimation();
313+
mSearchingAnimation.stop();
319314
mBinding.executePendingBindings();
320315
}
321316

322317
private void setDecodingState() {
323318
mBinding.setState(State.SEARCHING);
324-
mBinding.voiceSearchAnimationSearching.startAnimation(mSearchingAnimation);
319+
mSearchingAnimation.start();
325320
mBinding.executePendingBindings();
326321
}
327322

@@ -330,7 +325,7 @@ private void setResultState() {
330325

331326
postDelayed(() -> {
332327
mBinding.setState(State.ERROR);
333-
mBinding.voiceSearchAnimationSearching.clearAnimation();
328+
mSearchingAnimation.stop();
334329
mBinding.executePendingBindings();
335330

336331
startVoiceSearch();
@@ -339,7 +334,7 @@ private void setResultState() {
339334

340335
private void setPermissionNotGranted() {
341336
mBinding.setState(State.PERMISSIONS);
342-
mBinding.voiceSearchAnimationSearching.clearAnimation();
337+
mSearchingAnimation.stop();
343338
mBinding.executePendingBindings();
344339
}
345340

0 commit comments

Comments
 (0)