Conversation
- Created a dedicated background layer XML for the adaptive icon implementation. - Implemented a rich linear gradient transitioning from vibrant light blue to a deep navy edge. - Eliminated the flat, single-color background to give the launcher icon a premium, polished aesthetic.
- Created an exact duplicate of the cell-tower vector graphic specifically for in-app layouts. - Removed the 75% scaling group from this version so it renders at full 100% size inside the app's UI. - Decoupled the in-app branding from the launcher icon, preventing the action bar logo from appearing artificially small.
- Wrapped the core cell-tower vector paths in a scaling group (scaleX="0.75", scaleY="0.75") to add generous padding and negative space around the edges. - Duplicated the main vector path and applied a semi-transparent dark tint (#40001030) with an X/Y offset. - Created a subtle optical drop shadow, giving the white icon a floating, three-dimensional depth over the background.
- Created the API 26+ <adaptive-icon> configuration file to support modern Android launcher shapes. - Linked the newly split foreground (ic_launcher_foreground) and background (ic_launcher_background) layers. - Resolved the visual bug on AOSP/Pixel ROMs where the legacy icon was forcibly shrunk inside a white circular background.
- Added android:fitsSystemWindows="true" to the root LinearLayout to instruct AOSP Window Managers to respect safe insets. - Fixed the bug where the top header clipped into the status bar and the footer hid behind the 3-button navigation bar on stock Android. - Replaced the action bar's ic_launcher_foreground reference with the new unscaled ic_logo_ui drawable.
- Applied android:fitsSystemWindows="true" to the root landscape layout to ensure safe padding across notches and navigation bars when the device is rotated. - Swapped the action bar logo reference to use the unscaled ic_logo_ui asset. - Restored the landscape ImageView dimensions (39dp) to ensure the branding matches the proportions of the portrait layout perfectly.
- Replaced the hardcoded HorizontalScrollView wrapper around the 3 static guide cards with a fluid LinearLayout configured as match_parent. - Changed the static width (android:layout_width="260dp") of all three individual cards (staticCard1, staticCard2, staticCard3) to 0dp. - Added android:layout_weight="1" to all three cards. - This ensures that instead of cutting off or requiring side-scrolling on large screens, all three cards stretch and evenly distribute themselves to seamlessly fill 100% of the available horizontal space regardless of the device's aspect ratio.
- Stripped the authorizedCarouselRunnable entirely from the codebase, stopping the 7-second automatic swipe timer. - Removed the carouselHandler instantiation entirely since background threads and timers are no longer needed for the UI. - Cleaned up the updateCarouselContext method: it now statically sets currentCarouselIndex = 0 (Page 1) if unauthorized, and statically sets currentCarouselIndex = 1 (Page 2) if authorized. - Updated the onResume lifecycle hook to instantly snap to the 2nd page if isUIAuthorized is true, without trying to attach a timer runnable. - Cleaned up the onPause lifecycle hook to completely empty (removed all handler callbacks and preference savings). - Removed all SharedPreferences logic related to carousel memory state to prevent ghosting or saving incorrect indices across sessions. - Cleaned up the manual touch listener to remove any removeCallbacks or postDelayed timer resets when the user manually swipes left or right.
- Added Background Gradient - Added Shadow Effect in main Antenna Icon
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 Overview
This PR introduces a significant visual and functional polish to the application. It implements proper Android 8.0+ adaptive icons with optical depth, resolves edge-to-edge layout clipping in both portrait and landscape orientations, fixes landscape card cut-offs by implementing a responsive layout, and drastically simplifies the carousel UX by removing error-prone auto-cycling logic.
✨ Key Changes
🎨 App Icon & Branding Updates
<adaptive-icon>configuration to resolve visual bugs on modern Pixel/AOSP ROMs where the legacy icon was forcibly shrunk inside a white circular background.#40001030) with an X/Y offset to create a 3D optical drop shadow.ic_logo_ui) specifically for the action bar. This decouples in-app branding from the launcher icon rules, ensuring the logo renders at full 100% scale without looking artificially small.📱 Layout & Responsiveness Fixes
android:fitsSystemWindows="true"to both portrait and landscape root layouts. This correctly instructs the Window Manager to respect safe insets, preventing the top header from clipping into the status bar and the footer from hiding behind the navigation bar.HorizontalScrollViewwith a fluidLinearLayout(match_parent).android:layout_width="0dp",android:layout_weight="1"). They will now evenly distribute and stretch to perfectly fill 100% of the horizontal space regardless of the device aspect ratio.ImageViewdimensions (39dp) to ensure branding identically matches the portrait layout.⚙️ UX & State Logic Simplification
authorizedCarouselRunnable,carouselHandler) from the UI.updateCarouselContextlogic to strictly enforce state routing:onResume: Instantly snaps to the correct page without attaching timer runnables.onPause: Completely emptied (removed all handler callbacks and preference savings).