Profile cover photo
Profile photo
Nicholas Chum
Android App/Framework Developer, UI/UX Designer, System Themer
Android App/Framework Developer, UI/UX Designer, System Themer


Post is pinned.Post has attachment
A small presentation where I spoke a bit more about Dynamic Overlays and OMS at Mozilla.

Post has attachment


ignore the slow start, network is a bit iffy

Post has attachment
Some blek mejik that +Ivan Iskandar whipped up!

More goodies for custom ROM peeps!

Also thanks to +Anas for gathering information from the Google SystemUI engineer to allow us to work this out beautifully!

This is NOT the old implementation from CMTE through recreating, but an official way.

Post has attachment
we listened

Post has shared content
Add a comment...

Post has attachment
Public Full Rollout Release 950

Hey guys, it's about time this month to release the actual, follow up release to our previous UI overhaul. This WILL be at 100% rollout, and we will update the app slowly the next few days to ensure that our users are happy :)


The reason it took this long is because we have been doing serious debugging with many users, themers and developers - under many different device architectures and versions.

Fixed compilations on legacy devices: Not to be confused with Substratum "Legacy" but rather, actually old devices, where they had a "new_alloc_size" during compilation. Huge thanks to +Surge Raval!

Configuration change safety guard: If by any chance the app was reloaded by RRO/OMS/DO, the app will relaunch itself and tell you that the resources have been updated. This is to do with our UX improvement goal.

Sony OMS Bypass: Substratum now functions on Android 7.x on Sony devices under legacy mode. This means themers can now theme on Sony devices, for Sony users! Huge thanks to Matt (appleknight) for debugging!

Showcase Rewrite: In this update, we have deprecated the current showcase format, under the guidance of +Nathan Chancellor and +Harsh Shandilya, we have a new way of applying to have your App, Theme, Mod or Plugin featured in our showcase! The showcase now updates on demand, and will no longer cache the database on the device so it's pretty much a live place for us to promote our wonderful community and what everyone's been doing!

New showcase tabs: Below will be the new showcase tabs that will be updated by the team to promote new apps/themes amongst our community!
- Featured Themes: For new themes and upcoming stars!
- Featured Apps: For amazing apps that our contributors would like shown
- Themers Collective: The community collection of themes hosted on our Play Store account
- Team Themes: Themes created by team members!
- Clear/Dark/Light: Category based themes
- Google Apps: Collection of theme ready apps
- Samsung: Collection of Samsung-ready/compatible themes
- SystemUI Tweaks: Previously called Plugins, but now more categorized
- Other Tweaks: Also from Plugins, more categorization
- Wallpapers: Wallpaper packs

Samsung UX Experience Improvements: With a plethora of memory leaks and bugs now resolved, we have ironed out the experience to (nearly) match what AOSP has to offer!
- If you installed an OMS-only theme on Samsung/Legacy, a notification will alert you to uninstall it (meaning if you're a user and you accidentally bought an OMS theme, you would be able to immediately refund it).
- For sungstratum users, the boot up of the app has been significantly improved!

UI Improvements: As usual, naming all of these are a pain, so I'll list them:
- Splashscreen now fades into the main theme screen
- Wallpapers, showcase and themes now stagger their loading animations one by one, and will fade from grayscale to color.
- Removed the Pull down layout as well as shared element transition to completely speed everything up
- Snackbars on the main UI will move on top of the bottom bar
- On OOS, ensure that the navbar is properly colored (thanks to +Ivan Iskandar for finding this out)

Bug fixes, performance and optimizations: Huge thanks to our contributors, we have cleaned up a lot of possible memory leaks, as well as ensured that many things are patched up. Overall, the app has been cleaned up drastically thanks to +Harsh Shandilya, +George G. and +Jack Boswell!

Full changelog (chronologically):
Public release 950
Revert "PriorityListFragment: Change how we show the list"
SubstratumUI: Various UI tweaks
BottomBar: Set selected bottom bar icon and text to accent
PMD/Packages: Notification on retention of unsupported theme
PackageModificationDetector: Action click should remove notification
AAPT: fix new_alloc_size overflow for ancient armeabi devices
UnsupportedThemeReceiver: Autoclose the notification
UnsupportedThemeReceiver: Close system dialogs on button click
UnsupportedThemeReceiver: Rejection notification button
FragmentTransaction: Replace commit() with commitAllowingStateLoss()
ShowcaseActivity: When back is pressed, close drawer first
ShowcaseActivity: Open the drawer automatically when launching Showcase
Showcase: Change names of a few things
ShowcaseActivity: Properly assign all the tabs to non-sort mode
Showcase: Add new entries for new showcase themes/apps
Showcase: Tabs will now sort based on actual cloud tab order
Showcase: Completely revamp and clean up all the code
OverlaysManager: If an overlay is about to be recompiled, disable first
SamsungIntegration: Refresh the list on resume on Samsung too
MainActivity: Remove unnecessary static variable
SplashScreenActivity: Halve the time it takes to load splash
SubstratumRebase: Clean up and refactor
SamsungIntegration: Turbocharge Sungstratum bootup
SamsungIntegration: Attempt to speed up boot
SubstratumUX: Simplify the start up code of the app
Systems: Clean up unused whitespace
Remove some blacklisted packages
Systems: Add a speedier way of checking for packages
InformationActivity: If hero image starts transparent, use colorPrimary
UnitTests: Suspend
Systems: Sony check should be permission check, not prop
Lunchbar: No longer extend Snackbar, just use it as a constructor
Systems: Sony check may return empty string
InformationActivity: When theme is empty, kill automatically
SubstratumUI: Lunchbar should go above the bottom bar
Systems: Sony Mobile should try and take on rooted legacy mode
ManagerFragment: Optimize some calls to userInput.get()
Resources: Suppress and remove some warnings
ThemeAdapter: Remove some unused imports
Packages: Factor out API 21-23 handling
SoundUtils: Remove unused variable
ShowcaseActivity: Remove unused method
ThemeManager: Simplify listOverlay methods
AndroidManifest: Fix some warnings
Packages: Suppress some warnings
Sounds: Don't call wordList.get() repeatedly
Expose navigation bar color on API 27
PriorityListFragment: Change how we show the list
ThemeManager: Fix listTargetWithMultipleOverlaysEnabled on andromeda
SplashScreenActivity: Remove the app logo color animation thingy
Systems: Andromeda mode only if the package is enabled
SettingsFragment: Disable exposures check if not running interfacer or sysserv
Clean up and refactor
OverlaysAttention: Wrap to full size of text
Overlays: Do not refresh the list on type3 selection twice
OverlaysAdapter: Allow for newlines in attention
SplashScreenActivity: Hide progress bar until certain time
Clean up and reformat
SamsungIntegration: Fix regression with multi refreshes
SubstratumUI: Revert back to grey accents
IA: Fix inconsistent capitalisation in strings
InformationActivity: Terminate all tab's asynchronous tasks onDestroy
Update gradle
RecoveryFragment: Fix inconsistent tests for card visibility
InformationActivity: Remove PullBackLayout
Substratum: Completely remove shared element transitions.
SubstratumUI: Revert back to Pink accents
MainActivity: Drop redundant samsung check
Substratum: Set theme system module during early init
RecoveryFragment: Trim duplicate code
ThemeAdapter: Remove the greyscale animator
ManagerFragment: Improve UX for refresh
ThemeFragment: Stagger the recyclerView objects
SubstratumUI: Introduce a new color scheme!
SplashScreenActivity: Fade out to the MainActivity
ThemeBadge: Remove the residual files
PriorityListFragment: Add an AVD for fab click
PriorityListFragment: Adapt for Oreo
SubstratumUI: Update the blobs to N blobs
AndroidManifest: Turns out we needed one more
StringUtils: Place in a better directory
Clean up and reformat
NotificationCreator: Deprecate this class
ThemeFragment: Remove the bottombar badge
Substratum: Fix various mistakes on reassignment
AndroidManifest: Clean out unused permissions
FloatUi: Show overlay versions
ManagerAdapter: Generify and account for FloatUi
Substratum: Drop hungarian notation contexts
RecoveryFragment: Fix incorrect test for sound
Internal release 932
Substratum: Deprecate Sounds for legacy systems
RecoveryFragment: Substratum Service does not need permission
ManagerAdapter: Fix theme entry formatting
SettingsFragment: Instantly post restartSubstratum call
ThemeAdapter/InformationActivity Tabs: Optimize lifecycle
ManagerAdapter: Fix inconsistent labels
SettingsFragment: Make substratum restarts less jarring
ManagerFragment: Deprecate onPrepareOptionsMenu
ManagerFragment: Show all the icons on the actionbar
ThemeAdapter: Enforce package name check for receiver
ManagerAdapter: Add the overlay's theme version
ThemeAdapter: Do not allow multiple theme launches
PullBackLayout: Adjust pull back threshold
BottomBar: Adjust color for inactive state
ManagerAdapter: Fix incorrectly styled Theme Name entry
Subtratum: Adjust manager fragment strings
Adapters: Introduce a utility method to format items
MainActivity: BottomBar should reset on config change
Adapters: Remove usages of Html#fromHtml
ThemeLaunchActivity: Remove plugin_version extra from launch intent
InformationActivity: Use dominance again
InformationActivity: Adjust the color vibrance algorithm
ThemeAdaptor: Ditch HTML hack and use setTypeface for bold
OverlaysManager: Ditch redundant code
Clean up and optimize
OverlaysAdapter: Use a more traditionally used version code
Wallpapers: Reassign append of load complete
KeyExchangeActivity: Pass a Serializable object of SecurityItem
SamsungIntegration: Speed up samsung device check
Overlays: onResume should have proper list refreshes
PullBackLayout: Adjust sensitivity and add higher threshold
InformationActivity: Adjust looks
InformationActivity: Tabs should finish loading before SET
ThemeAdapter: Fix potential FC on weak devices
SubstratumUI: Fix a few quirks with the new shared elements
SubstratumUI: Shared Element Transitions!
MainActivity: Hide the bottom bar shadow if we don't use it
PriorityListFragment: Make use of activity's toolbar
InformationActivity: Fix crash when launching theme shortcut
InformationActivity: Use completely transparent status bar
MainActivity: Set white navbar icons when sheet dialog opened
MainActivity: Add shadow workaround to bottom bar
OverlaysManager: Properly close compilingProgress
Revert "PackageModificationDetector: Don't refresh IA on theme update"
Overlays: Catch potential IndexOutOfBounds
SubstratumCrash: If the ROM/builder f'ed up, explain the issue
SubstratumCrash: If system crashed substratum, relaunch
Clean up and reformat
SubstratumUI: Deprecate Roughike bar in favor of AOSP
InformationActivity: Stuff for transparent themes
build: Fix derps
Fix travis
2 Photos - View album

Post has shared content
Add a comment...

Post has attachment
Substratum Public Release 930

It's been a while since we announced our last update, and rolled out to Play Store, so hope you all had great Christmas and New Year’s parties!

I just wanted to say it was a great year and we made many new friends, especially our Samsung and Andromeda stock friends! If you have any issues, remember to continue posting in our JIRA and reporting to the Telegram chats, you've all done wonders the past few months!

For our current Samsung users, we will try to transfer you all over to Andromeda after Samsung officially releases Oreo. We will hopefully have a second sale soon for y'all! This is due to our codes being completely redeemed after Android Police and XDA Developers conducted many fruitful giveaways!

To those interested in Andromeda development, we are still actively working on it. There are some issues with Pixel 2 XL deployment with the new rebase, which is delaying our progress. Please be patient, as we are trying our best, thanks to +Surge Raval​​!

New UI introduction: With the new rebase, we have reorganized and made the old UI more user-friendly! The UI now features a bottom bar, as well as animation hero images after themers ensure that their templates are up to date! A couple of tabs have been hidden but all still available in Advanced Mode (available in settings).

The animations are presently available in the main advanced screen as well, for the hero images, under a variety of configurations such as Nougat Style and X amount of columns.

In the new UI, we now use an exposed, theme-ready font, available in the res/fonts folder. This utilizes the new downloadable fonts API from Google.

Pull down to close activity is also present in the new UI, which allows you to close the theme after launching it, by dragging it down. NOTE: This may affect completely transparent themes temporarily until we find a workaround (the background will stay solid). This feature was made available thanks to +Ivan Iskandar​​ and +Anas​​!

Template Reinforcement: We have added new props and removed certain Samsung related manifest values so that Samsung users can use unsupported (missing/removed metadata) without having rejected notifications anymore. Our main style of the template also enforces a proper animation on your hero image, so please do not change DialogStyle due to the way shared activity transitions work! This means templates 11.3.0 and above are fully supported, but please retain the main style as the default style, and rework your third party templates so that you use a different style.

Not only did we update the template, but we ensured and placed more security enforcements to prevent hijacks of unsupported applications. Thus, Themers will be in complete charge of how the security would be enforced. There are special modified versions of templates with a higher privileged anti piracy system that isn't smali editable, so please keep an eye out for those, rather than requesting in the comments! Huge thanks to +Harsh Shandilya​​!

Bug fixes and improvements: With this update, we aimed to fix many side issues with the application. Samsung users now have a much speedier experience, thanks to @Tetsuo Osaka for testing with us! We also fixed many crashes and hangs, but it is never 100%, as that is virtually impossible with an app of this nature!

Themer specific requests: We no longer automatically relaunch the theme activity when you push a new APK, so don't worry about that for now! We also removed the automatically moving hero image based on the Ken burns effect!

Firebase Notification Service: To those diehard privacy advocates, we have deprecated the push notification system as we no longer use it. We do still collect automatic crashes and analytics based on those crashes, so don't worry, as nothing will ever call home by providing any data to us! Our database does not include any write permissions for users, only read!

Samsung/LG Themers: You can now theme fwk/common overlays!

Updated AOPT binary: Our AOPT binary has been updated so it can now compile res/font and API 27+ resources! We now use our updated AOPT as default! Huge thanks to +Surge Raval

Full changelog (chronological):

Public Release 930
PackageModificationDetector: Don't refresh IA on theme update
SubstratumService: Add support for custom shutdown animation
InformationActivity: Adjust look and feel
ShowcaseTab: Make the tab bg color uniform with the toolbar
ShowcaseTab: Fix alphabetic sorting fully
ShowcaseTab: Add back alphabetic sorting base code
InformationActivity: Set custom font on toolbar title
Overlay: Fix-up getActivityView method
Overlays: Refactor getActivityView to resolve Lunchbar issues
InformationActivity: Attach lunchbar to the correct layout.
Substratum: Fix custom fonts in new UI
SettingsFragment: Improve how we restart Substratum after settings changes.
Substratum: Use Thread#interrupt in place of deprecated stop
SettingsFragment: Don't just kill the app when locale is toggled
{Showcase,ManageSpace}Activity: Fix toolbar not taking on custom font
ShowcaseActivity: Move to new force locale method
OverlaysManager: Handle adaptive icons correctly in compile dialog
SpecialUI: Add a better gradient, expose dimens for cards
Overlays: Add version ints next to package name
Public testing release 927
SamsungIntegration: Move refresh list on resume to its own block
PriorityListFragment: Adjust margins for progress loader
Showcase: Reinstate the showcase as an activity
I want in on this mailmap thing too
Overlays: Do not unconditionally refresh the list
FirebaseMessagingService: Deprecate notification pushing system
SamsungIntegration: Add states for incorrect addon installation
SamsungSupport: Fix the enforcement regulations
Systems: Do not collide new Samsung check with old
Clean up platform libs
BinaryInstaller: Fix wrong aapt being installed on arm platforms
Systems: Remove duplicate check
AAPT: unify binaries for all architectures
Substratum: Add mailmap
References: Change default RRO overlay priority to 1004
Showcase: Reinstate the showcase as an activity
I want in on this mailmap thing too
Overlays: Do not unconditionally refresh the list
FirebaseMessagingService: Deprecate notification pushing system
SamsungIntegration: Add states for incorrect addon installation
SamsungSupport: Fix the enforcement regulations
Systems: Do not collide new Samsung check with old
Clean up platform libs
BinaryInstaller: Fix wrong aapt being installed on arm platforms
Systems: Remove duplicate check
AAPT: unify binaries for all architectures
Substratum: Add mailmap
References: Change default RRO overlay priority to 1004
ThemeManager: Do not manipulate Pixel overlays
AOPT: update binaries
MainActivity: Properly assign title name based on theme system
Update build tools and travis
Public release 926: merge Ivan's hero image fix
Systems: Don't return null
InformationActivity: Fix heroimage transparent part showed as black
SubstratumUI: Adjust layout to be more uniform as per Keyline Pushing
SamsungPackageService: Deprecate once again and introduce new checker
Public testing release 925
ManagerFragment: Another attempt to gracefully end the fab
Public beta testing build 924
MainActivity: Remove showcase attributes for actionbar dimensions
Temporarily disable showcase
SettingsFragment: Show AOPT on non-debug builds
Internal release 923
Systems: Move the root checker function call only after first ifs failed
ThemeLaunchActivity: If theme launched from notification, end gracefully
FloatUI: Invert
Theming: Add FLAG_ACTIVITY_NEW_TASK when launching themes
MainActivity: Rename the app title based on the system
MainActivity: Hide the priority tab if not supported
Internal release 922
SubstratumUI: Re-enable priorities tab in simple UI
ThemeLaunchActivity: Allow non-default styles to launch properly
Substratum: Rewrite the locale override code
Notification Updated: Icon should be white on Samsung
SamsungPackageService: Encapsulate the heavy work in a new thread
Upgrade gradle
PullBackLayout: Clean up the maths
Overlays: Declare the typeArray pull and null check beforehand
SplashScreen: Use dark navigation bar color on v27
MainActivity: Unify showcase tab color and elevation with activity actionbar
ShowcaseFragment: Fix crash on quick navigating between tabs
RecoveryFragment: Change up the UI by removing the huge buttons
PullBackLayoutLib: Adjust the slop variable
Overlays: Disable manual refresh for overlays
SubstratumUI: Add a loading view when a user clicks on a theme
SubstratumUI: Enforce 60FPS on shared element transition
don't finish with shared element transition when orientation has changed
InformationActivity: Assign a background color based on dominantColor
SubstratumUI: Introduce drag down to close activity
SubstratumUI: Change the toolbar font again thanks to @Sykopompos
SubstratumUI: Change the toolbar font and global app font
Overlays: Add support for detecting encrypted attention files
SubstratumUI: Update the default overlay icon to O style
SubstratumUI: Use more blobs! Frens and blobs!
ShowcaseTab: Remove unused declaration
Internal release 921
ShowcaseFragment: Remedy a possible crash through recreate
Strings: Change About back to Team & Contributors
Systems: Introduce check for Settings' Force authorize toggle
CompilerCommands: Fix compilation for fwk/common
DirectAssets: Interrupt file copying on non-supported API folders
SubstratumUI: Increase size of MainActivity title
SubstratumUI: Enforce shared element transition performance & behaviour
SubstratumUI: Change title font to Leckerli One
Expose color ripple to colors.xml
SubstratumUI: Assign IA's style to parent AppTheme
References: Enforce strict mode when checking for network
Internal build 920
SubstratumUI: Expose the bottombar background
SubstratumUI: Add some exposures for the windowLightXBar styles
SubstratumUI: Re-enable grid choices for special UI
SubstratumUI: Unify Showcase and Manager
Unused resources cleaning
Recovery: Change up the button backgrounds
References: Change isNetworkAvailable to detect limited networks
SubstratumUI: Re-add network failure for ShowcaseFragment
MainActivity: Re-enable OverlayManagerActivity on special UI
Deprecate the KenBurnsView library
SubstratumUI: Adjust the ripple color tint
Clean up and refactor
SubstratumUI: Shared element transitions!
SubstratumUI: Unify Showcase and Manager
Unused resources cleaning
Recovery: Change up the button backgrounds
References: Change isNetworkAvailable to detect limited networks
SubstratumUI: Re-add network failure for ShowcaseFragment
MainActivity: Re-enable OverlayManagerActivity on special UI
Deprecate the KenBurnsView library
SubstratumUI: Adjust the ripple color tint
Clean up and refactor
SubstratumUI: Shared element transitions!
SubstratumUI: Add a brand new ThemeFragment UI
SubstratumUI: Add in a brand new default, simple UI
Update travis.yml
6 Photos - View album

Post has attachment
UI revamp sneak peek!

The past few days were pretty interesting, the team and several members and designers from +Paranoid Android​​​ have been working together to pitch different designs of the new substratum UI!

Not only will the next version of substratum include a brand new user interface design overhaul, there will be behind the scene compilation changes that will benefit the themers (compilation rules) as well as a few security patches built in on the new template version!

User interface changes will come soon, as the fonts chosen are unfinalized, but the app will have been rebased greatly (fully black UI-able as done by +David Wilson​​​ and +Bryan Owens​​​!)

Enjoy the new animations, layout and the gestures in the video below!

Post has shared content
For those who have been part of drama, this thread contains the truth from multiple counts of people's reports, rather than just writing up an extended essay with no facts!
Today I learned that the telegram chat "developers and themers" is every single developer and themer, I am absolutely shocked at this new information
Add a comment...
Wait while more posts are being loaded