~~NOCACHE~~
{{meta>robots=noindex,nofollow}}
====== Resource: Dynamic Image ======
Dynamic Image Resources provide state-responsive visual assets that evaluate internal Android conditions, sensor feeds, or live provider data to display context-appropriate graphics in real time. Rather than behaving as static bitmaps, a Dynamic Image operates as an **array of condition-mapped image slots**.
Once configured and saved in the central library (''Edit mode'' > ''Launcher options'' > ''Resources > Dynamic image''), a dynamic image can be used across multiple page objects, button states, window frames, or widget backgrounds, updating globally whenever the master resource changes.
===== Navigation & Interface Architecture =====
Dynamic images are managed and created through two access points:
* **Global Resource Library:** ''Edit mode'' > ''Launcher options'' > ''Resources'' > ''Dynamic image'' (used to build and store reusable templates).
* **Object Insertion:** ''Edit mode'' > ''Edit on'' > ''Add'' > ''Graphic'' > ''Image'' > ''Default'' > ''Dynamic image''.
=== Library Management & Aspect Ratios ===
* **Search (Magnifier):** Filters saved and system dynamic image templates by label name.
* **Added Tab:** Displays all active custom dynamic image sets saved to the current layout theme.
* **Aspect Ratio Tabs (e.g., 16:9, 19.5:9, 21:9):** Manages preview proportions across varying screen dimensions to ensure radial sweeps, needles, and dials remain proportional on foldable devices or tablets.
* **Add (+):** Opens the Dynamic Image generator dialog to build a new asset pack from system presets.
{{:ui:ui-resources-dynamic_image-v4.webp?direct&250|Dynamic Image Library}}
This next image is a sample dynamic image dialog (shown here is Mobile data) displays the default format.
The key elements in this image are:
* **Label** - The name or title the user assigns to the specific dynamic image.
* **Type** - While type here shows ''Mobile data'', there are 16 other types of dynamic images in the Launcher. See the full discussion [[#dynamic_image_categories_&_state_mappings|below.]]
* **Image** - In this sample, Mobile Data has 2 images, or 2 slots. They represent On or Off images. Each "Dynamic Image" has its own number of designated slots (images) matched to a specific status; for example, Calendar or Weather has many more.
{{:ui:ui-resources-dynamic_image-add-mobile_data-v4.webp?direct&250|Adding Mobile Data Dynamic Image}}
===== Dynamic Image Categories & State Mappings =====
Selecting **Type** from this ++dialog|{{:ui:ui-resources-dynamic_image-type-v4.webp?direct&200|Types of Dynamic Images}}++ provides access to 17 distinct functional categories:
^ Category ^ Evaluated System State ^ Configurable Slot Behavior ^
| **Battery status** | Charge level percentage (0% to 100%) and AC/USB charging flag. | Dial arc sweep or discrete percentage steps; includes a specialized bolt icon slot for charging state. |
| **Bluetooth** | Adapter state and active peripheral connections. | Binary state slots: ''on'' and ''off''. |
| **Brightness mode** | Android system display brightness status. | Binary state slots: ''Automatic'' (ambient sensor active) and ''Manual''. |
| **Calendar** | Current device system date. | Multi-tier slots: ''Background'', 12 Months, 7 Days of the week, 31 Days of the month, and ''Foreground''. |
| **Clock** | Internal system time. | Multi-tier slots: ''Background'', ''AM'', ''PM'', 24 discrete hour slots (''0:00'' to ''23:00''), 60 minute slots (''00'' to ''59''), and ''Foreground''. |
| **Do not disturb** | Interruption filter settings. | Binary state slots: ''on'' and ''off''. |
| **Gmails (unread)** | Unread message counts from synchronized Google accounts. | Multi-state slots: ''0'', ''1'', ''2'' ... through ''10+''. *(Note: Dependent on Android permission grants).* |
| **GPS / Location** | Hardware satellite sensor activity. | Binary state slots: ''on'' and ''off''. |
| **Mobile data** | Cellular data connection state. | Binary state slots: ''on'' and ''off''. |
| **Notification count** | Active system status bar notifications. | Discrete numeric slots: ''0'', ''1'' ... ''10+''. Requires Android Notification Access permission. |
| **RAM usage** | Dynamic system memory consumption. | Percentage interval steps (0% to 100%) mapped to dial gauge graphics. |
| **Ringer mode** | Audio profile state. | Three-state slots: ''Normal'', ''Silent'', and ''Vibrate''. |
| **Signal strength** | Cellular network carrier reception. | Five discrete reception levels: ''Disconnected'', ''Level 1'', ''Level 2'', ''Level 3'', and ''Level 4''. |
| **Themed image** | Android OS Light / Dark mode configuration. | Two discrete slots: ''Light theme'' and ''Dark theme''. |
| **Weather (OpenWeatherMap)** | Current conditions reported by location GPS. | 18 condition slots (e.g., ''Sky is clear (day)'', ''Shower rain'', ''Snow'', etc.). |
| **WiFi hotspot** | Portable access point tethering state. | Binary state slots: ''on'' and ''off''. |
| **WiFi status** | Wireless network connectivity and signal quality. | Five discrete tiers: ''Disconnected'', ''Level 1'', ''Level 2'', ''Level 3'', and ''Level 4''. |
===== The Layer Sandwich: Background, States, and Foreground =====
Complex dynamic categories (such as **Clock** and **Calendar**) utilize a three-stage stacking hierarchy to define the final graphic:
**Background Plate** -> **Dynamic Condition Slots** -> **Foreground Frame**
* **Background Slot (Bottom Layer):** Renders beneath all changing elements. Ideal for static watch dial faces, metallic instrument bezels, circular gauges, or calendar desk pads.
* **Dynamic State Slots (Middle Layer):** Swapped automatically as system conditions change (e.g., swapping from ''16:00'' to ''17:00'', or from ''Few clouds'' to ''Rain''). Any individual slot can be replaced with custom artwork.
* **Foreground Slot (Top Layer):** Overlays on top of the dynamic states using transparent PNG or WebP assets. Useful for:
* Applying glass glare reflections across clock hands or dials.
* Centering mechanical watch cap screws over the hand axis.
* Cutout border masks that trim inner moving graphics cleanly.
===== 4. Advanced Customization & Creative Layout Techniques =====
==== A. Full-Screen Dynamic Weather Wallpapers (Z-Order Stacking) ====
While Total Launcher uses standard Android bitmaps for root system wallpapers, a Dynamic Image can serve as a live environmental wallpaper via canvas layering:
* Add a Weather Dynamic Image as an object: ''Add'' > ''Graphic'' > ''Image'' > ''Dynamic image'' > ''Weather''.
* Scale the graphic container to cover the entire page boundary (100% width, 100% height).
* In the **Object Design Menu**, send the object to the lowest layer using **Lower Z-Order** (or assign it to the page background layer).
* Position Date, Clock, and App Drawer items on top of it.
* **Result:** The wallpaper scenery automatically shifts between crisp sunshine, overcast skies, rain animations, or nocturnal starfields based on live local forecast updates.
See [[:section:section-dynamic_image-weather|Dynamic Images - Weather]] for more details.
==== B. The Invisible Zero-State (Auto-Hiding Badge Notifications) ====
When designing counters for notifications or unread Gmails, standard notification dots can clutter minimal designs when no alerts exist:
* Open the Dynamic Image set for **Notification count** or **Gmails (unread)**.
* In the **0** slot, assign a completely transparent 1x1 WebP or PNG graphic.
* Populate slots **1** through **10+** with colored badge graphics or numbered circles.
* **Result:** The notification graphic remains completely invisible during zero-alert states, only appearing on screen when unread messages arrive.
==== C. Native System Light/Dark Theme Adaptation ====
Modern Android versions (Android 10+) broadcast an operating system flag (''UI_MODE_NIGHT'') when switching between Light and Dark themes via scheduled sunset times or the Quick Settings panel.
* Creating a **Themed image** allows two completely different graphic designs to occupy the same object space.
* Assign light, pastel, or low-contrast icons to the **Light theme** slot.
* Assign dark, high-contrast, or neon-accented icons to the **Dark theme** slot.
* Total Launcher listens natively to the Android OS broadcast and swaps the visible graphic instantly without requiring a separate theme profile reload.
==== D. Selective Time Customization ====
If an analog or digital clock requires a specific visual change at a single hour (such as changing color during evening hours), the entire 24-hour set does not need to be rebuilt:
* Only modify the target hour slot (e.g., ''17:00'' for 5:00 PM).
* Unaltered slots will continue to render the default clock assets.
* Total Launcher triggers the customized graphic exactly at 17:00:00 and returns to the default profile when the hour completes.
==== E. Building a Dynamic Battery Level Ring: The Native Approach → The Circle Indicator Widget ====
- **Add the Circle Indicator Widget:**
- Long-press an empty space on the home screen, select **Add** > **Widget**, and choose **Circle indicator** from Total Launcher's built-in widget selection list.
- //Verification:// The Circle indicator configuration dialog opens immediately on the screen.
- **Select the Target Resource:**
- In the configuration dialog, tap the **Target** option.
- From the list of available device resources, choose **Battery**.
- //Verification:// The preview reflects the `% available` battery metric rather than RAM or Storage.
- **Style Color and Background:**
- In the same dialog:
- **Color:** Tap to choose the stroke/meter color using either the standard Color Picker or dynamic color definitions.
- **Background:** Optionally define the widget container's background (e.g., solid color, shape, or empty/transparent).
- **Margins:** Adjust container margins if needed for layout alignment.
- //Verification:// The indicator preview shows the chosen palette and container styling.
- **Confirm and Place:**
- Confirm selections to place the widget on the layout.
- //Verification:// The radial battery ring appears on the screen and accurately mirrors the current battery percentage.
==== Creating a Live Calendar Icon Badge ====
* For a fully customizable live calendar badge (like the top-red calendar frame with today's date centered inside) that does not rely on whether an icon pack supports dynamic calendar intents, build it directly using a layered Image/Text object:
- Add the Background Graphic:
- Long-press any empty space on the screen and select Add > Graphic (or Image). Load the calendar frame artwork (e.g., the white card with the red header). Tap the checkmark to place it.
- //Verification:// The calendar frame sits on the screen and can be moved or resized.
- Add the Dynamic Date Text:
- Long-press the screen, choose Add > Text, and tap the Edit (pencil) icon to open text properties.
- In the text field: Tap the dynamic tag button (or type the date format variable 'd' for single-digit or 'dd' for two-digit day).
- Under text style, set Alignment to Center, choose the font, and set the text color to #FF212121.
- //Verification:// The text object displays the current numerical day of the month on the screen.3.Position and Group:
- Drag the date text directly over the body of the calendar graphic.
- Long-press to enter multi-select mode, select both the graphic and the text, and tap Group.
- //Verification:// Dragging either item moves the entire calendar icon as one unified element.
- Assign the Tap Action:
- Select the newly created group, tap the Edit (pencil) icon, navigate to Action, and set it to Launch application > select the preferred Calendar app.
- //Verification:// Tapping the badge launches the calendar app immediately.
===== Recommended External Image Repositories & Tools =====
To populate custom dynamic image slots with cohesive assets, transparent PNG or WebP collections designed for open interface systems can be utilized:
* **Erik Flowers Weather Icons:** Comprehensive collection of over 200 standardized meteorological vector graphics and web assets ready for OpenWeatherMap mapping. \\ URL: [[https://erikflowers.github.io/weather-icons/]]
* **IconArchive Weather Collections:** Free downloadable PNG icon sets sorted by style (realistic, flat vector, monochrome glyphs) on transparent backgrounds. \\ URL: [[https://www.iconarchive.com/tag/weather]]
* **Open Clipart Library:** Public-domain vector collection providing complete sets of moon phases, dial gauges, and weather art. \\ URL: [[https://commons.wikimedia.org/wiki/File:Weather_icon_-_complete_set.svg]]
**Asset Preparation Tip:**
When importing custom artwork for dials, clocks, or weather states, maintain consistent square dimensions (e.g., 256x256 or 512x512 pixels) and convert assets to `.webp` format to minimize memory consumption while preserving transparency.
Also see the [[:ui:ui-launcher_options-resources-dynamic_image|UI Section on Dynamic Images]].