Add v7.0: Tabs UI and Real-Time Events
Major Features: - Dual tab interface (Channels and Events) with visible focus - Real-time event status calculation (Live, Upcoming, Finished) - Smart caching system for events (24-hour cache) - Argentina timezone support (America/Argentina/Buenos_Aires) UI/TV Improvements: - Focusable tabs with bg_tab_selector for D-pad navigation - Visual feedback with highlighted borders on focused tabs - Consistent design between tabs and content cards - Enhanced TV navigation experience Real-Time Event System: - EventRepository: Centralized event management with 24h cache - EventAdapter: Optimized RecyclerView for event listings - EventItem: Structured data model for events - Dynamic status calculation (remaining time, live duration, completion) - Automatic link normalization to global2.php Technical Implementation: - activity_main.xml: Complete dual-tab layout - item_event.xml: Dedicated event item layout with RecyclerView - bg_tab_selector.xml: Tab states (selected, focused, pressed) - MainActivity.java: Tab switching and event management - Automatic URL processing for seamless PlayerActivity integration Time Zone Features: - Argentina local time (America/Argentina/Buenos_Aires) - Real-time status updates without page refresh - "En Xh Ym" for upcoming events - "En vivo durante 2h" status for live events - "Finalizado" status for completed events Solutions: - Fixed web page "En vivo" not updating issue - Provides always-current event status in app - Direct event-to-player navigation without manual intervention - Improved TV navigation with clear visual feedback 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
33
app/src/main/res/drawable/bg_tab_selector.xml
Normal file
33
app/src/main/res/drawable/bg_tab_selector.xml
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="true">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="#18d763" />
|
||||
<corners android:radius="20dp" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:state_focused="true">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="#5522c1ff" />
|
||||
<corners android:radius="20dp" />
|
||||
<stroke
|
||||
android:width="2dp"
|
||||
android:color="#88FFFFFF" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:state_pressed="true">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="#3322c1ff" />
|
||||
<corners android:radius="20dp" />
|
||||
</shape>
|
||||
</item>
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="#222222" />
|
||||
<corners android:radius="20dp" />
|
||||
<stroke
|
||||
android:width="1dp"
|
||||
android:color="#44FFFFFF" />
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
||||
Reference in New Issue
Block a user