Beta Sprint Day 5-6: Android Development Improvement + UI Fixes

Sprint Phase: Beta Day 5-6 / 8

Team Name: 心屿开发团队

Project Name: 心屿 (MindCarrer) - AI-driven Mental Health Social Support Platform


1. SCRUM Section

1.1 Team Member Progress Table

Team Member Completed Tasks Time Spent Issues Encountered Next Plan
吴志斌 Android bottom navigation icon fix, status switching, architecture optimization 18h Icons not displaying Server deployment
江贤晟 Android splash screen stay issue fix, permission request implementation, network adaptation 16h AndroidManifest configuration APK packaging and testing
杨媛真 Android UI display fix, font layout optimization, UI beautification 14h Font display, layout adaptation Final UI beautification
方利喆 Android contact list name display fix, complete function testing 10h Font rendering issues Test report writing
连泽政 Android assessment history text color fix, permission testing 8h Style override issues Comprehensive function testing
林泽君 Android complete function testing, issue recording 8h None Writing test reports
范禛 Android UI testing, user experience verification 6h None Preparing demonstration materials
杨越 Android icon resource optimization, UI beautification 5h None Final visual adjustments
陈毅鹏 Day 5-6 article writing, screenshot collation 4h None Continuing progress recording
吴昱霆 Push solution document writing 3h None FCM technology research
连森涛 Test data preparation, document collation 3h None Assisting with packaging work

Total Working Hours : 95 hours | Average : 8.6h/person | Cumulative: 266 hours


1.2 Code Check-in Records

Complete Fix of Android UI Display Issues

Submitters: 吴志斌, 江贤晟, 杨媛真 (collaborative completion)

Issue: #Beta-008~#Beta-014 Centralized fix of Android UI display issues

Core Fix Content:

1. Splash Screen Stay Issue Fix ​ - AndroidManifest.xml

复制代码
<!-- Before fix -->
<meta-data 
    android:name="android.app.splash_screen_sticky" 
    android:value="true"/>

<!-- After fix -->
<meta-data 
    android:name="android.app.splash_screen_sticky" 
    android:value="false"/>

2. Android Window Property Optimization ​ - authwindow.cpp

复制代码
#ifdef Q_OS_ANDROID
    // 1. Hide MenuBar and StatusBar
    QMenuBar* menuBar = this->menuBar();
    if (menuBar) {
        menuBar->setVisible(false);
        menuBar->setMaximumHeight(0);
        menuBar->setFixedHeight(0);
    }
    
    QStatusBar* statusBar = this->statusBar();
    if (statusBar) {
        statusBar->setVisible(false);
        statusBar->setMaximumHeight(0);
        statusBar->setFixedHeight(0);
    }
    
    // 2. Set window properties
    setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
    setAttribute(Qt::WA_TranslucentBackground, false);
    setAttribute(Qt::WA_NoSystemBackground, false);
    
    // 3. Set white background
    setStyleSheet("QMainWindow { background-color: white; border: none; }");
    if (ui->centralwidget) {
        ui->centralwidget->setStyleSheet(
            "QWidget { background-color: white; border: none; }");
    }
#endif

3. Input Box Display Fix

复制代码
#ifdef Q_OS_ANDROID
    // Fix all input boxes
    QList<QLineEdit*> lineEdits = findChildren<QLineEdit*>();
    for (QLineEdit* edit : lineEdits) {
        // Increase minimum height
        edit->setMinimumHeight(40);
        
        // Enable input method
        edit->setAttribute(Qt::WA_InputMethodEnabled, true);
        
        // Strong focus policy
        edit->setFocusPolicy(Qt::StrongFocus);
        
        // Ensure text visibility
        edit->setStyleSheet(edit->styleSheet() + 
            " QLineEdit { font-size: 14px; color: #000000; }");
    }
#endif

4. Screen Size Adaptation ​ - main.cpp

复制代码
#ifdef Q_OS_ANDROID
    // Get screen size
    QScreen *screen = QApplication::primaryScreen();
    QRect screenGeometry = screen->geometry();
    qDebug() << "[Main] Screen size:" << screenGeometry.size();
    
    // Set window geometry
    authWin->setGeometry(screenGeometry);
    
    // Full screen display
    authWin->showFullScreen();
    authWin->raise();
    authWin->activateWindow();
    
    // Force event processing
    QCoreApplication::processEvents();
    
    // Delay UI refresh
    QTimer::singleShot(100, authWin, &AuthWindow::forceRefreshUI);
#endif

5. Bottom Navigation Bar Icon Display Fix ​ - mainwindow.cpp

复制代码
// Before fix (not working)
ui->lbHome->setPixmap(QPixmap(":/image/home.png"));

// After fix (using setIcon)
#ifdef Q_OS_ANDROID
    // Android platform uses QPushButton's setIcon method
    ui->btnHome->setIcon(QIcon(":/image/home.png"));
    ui->btnHome->setIconSize(QSize(24, 24));
    
    ui->btnContacts->setIcon(QIcon(":/image/contact.png"));
    ui->btnContacts->setIconSize(QSize(24, 24));
    
    ui->btnChannels->setIcon(QIcon(":/image/chat.png"));
    ui->btnChannels->setIconSize(QSize(24, 24));
    
    ui->btnMe->setIcon(QIcon(":/image/my.png"));
    ui->btnMe->setIconSize(QSize(24, 24));
#endif

6. Contact List Name Display Fix ​ - contactspage.cpp

复制代码
#ifdef Q_OS_ANDROID
void ContactsPage::setupAndroidFonts() {
    // Set Roboto font
    QFont font("Roboto");
    font.setPointSize(14);
    
    // Apply to all labels
    QList<QLabel*> labels = findChildren<QLabel*>();
    for (QLabel* label : labels) {
        label->setFont(font);
        label->setStyleSheet("QLabel { color: #000000; }");
    }
}
#endif

7. Assessment History Text Color Fix ​ - homepage.cpp

复制代码
#ifdef Q_OS_ANDROID
    // Force set black text
    QString itemStyle = QString(
        "QLabel { "
        "  color: #000000; "
        "  font-size: 14px; "
        "  font-weight: bold; "
        "}"
    );
    
    // Apply to history record labels
    for (auto* label : historyLabels) {
        label->setStyleSheet(itemStyle);
    }
#endif

Test Results:

  • ✅ Splash screen automatically disappears after 1-2 seconds

  • ✅ No black borders on interface, complete display

  • ✅ Input boxes echo normally

  • ✅ Bottom icons display normally

  • ✅ Contact names display normally

  • ✅ Assessment history text is clear

  • ✅ Screen adapts automatically


1.3 Test Evidence

Android UI Display Test

Test Device: Xiaomi Pad 7 (Android 13, 2880x1800)

Testers: 林泽君, 范禛

Test Item Alpha Beta Result
Splash Screen Display Stuck Disappears in 1-2 seconds ✅ Fixed
Login Interface With black borders No black borders ✅ Fixed
Input Box Echo Invisible Display normally ✅ Fixed
Screen Adaptation Incomplete Complete display ✅ Fixed
Bottom Icons Not displaying Display normally ✅ Fixed
Contact Names Blank Display normally ✅ Fixed
Assessment History Unclear Clearly visible ✅ Fixed

Pass Rate: 7/7 = 100%


Android Complete Function Test

Test Device: Xiaomi Pad 7 (Android 13, 2880x1800)

Testers: 林泽君, 范禛, 方利喆

Function Module Test Cases Passed Failed Pass Rate
Login & Registration 15 15 0 100%
Main Page 12 12 0 100%
Daily Assessment 20 20 0 100%
Friend Chat 25 25 0 100%
AI Chat 15 15 0 100%
Community Posting 18 18 0 100%
Bookshelf Reading 10 10 0 100%
Settings Page 8 8 0 100%
Total 123 123 0 **100%**​

1.4 Daily Standup Photos


2. PM Report Section

2.1 Project Progress

Current Progress: Day 6 / 8

Completion Rate: 65%

Task Statistics
Category Planned Completed In Progress Not Started Completion Rate
Alpha Issue Fixes 4 4 0 0 100% ✅
Android Development 6 4 1 1 67%
New Function Development 3 0 0 3 0%
Performance Optimization 2 0 0 2 0%
Test Documents 5 3 1 1 60%
Total 20 11 2 7 **55%**​
Newly Completed Tasks (Day 5-6)
  1. ✅ Android splash screen stay issue fix (江贤晟, 6h)

  2. ✅ Android UI display fix (杨媛真, 14h)

  3. ✅ Android bottom navigation icon fix (吴志斌, 8h)

  4. ✅ Android contact list name fix (方利喆, 10h)

Working Hours Statistics
Date Planned Actual Difference Cumulative
Day 1-4 176h 171h -5h 171h
Day 5-6 88h 95h +7h 266h
Total 264h 266h +2h 266h

Remaining Working Hours: 178 hours


2.2 Burndown Chart

复制代码
Remaining Hours(h)
444 |●
    |  ●
400 |    ●
    |      ●
350 |        ●■
    |          ●
300 |            ●■
    |              ●
250 |                ●
    |                  ●
200 |                    ●■
    |                      ●
150 |                        ●
    |                          ●
100 |____________________________●
    Day1  Day2  Day3  Day4  Day5  Day6  Day7  Day8

● Ideal Burndown Line
■ Actual Burndown Line

Current: Day 6
Ideal Remaining: 111h
Actual Remaining: 178h
Deviation: +67h (Progress accelerated)

Analysis:

  • ✅ High efficiency in Android development, quick issue fixes

  • ✅ Good team collaboration, multiple people collaborated on UI fixes

  • ✅ Sufficient time for optimization and testing on Day 7-8


2.3 Running Screenshots & Demonstration

Android Complete Interface Display (Xiaomi Pad 7)

3. Technical Highlights

3.1 Android Platform Conditional Compilation Strategy

Design Idea

Goal: Maximize code reuse, minimize platform differences

Implementation Method:

复制代码
// 1. Platform detection
#ifdef Q_OS_ANDROID
    // Android-specific code
#else
    // Windows code
#endif

// 2. Runtime detection
if (QSysInfo::productType() == "android") {
    // Android-specific logic
}
Application Scenarios
Scenario Windows Android Implementation Method
Window Display show() showFullScreen() Conditional compilation
Font Settings Default Roboto Conditional compilation
Input Method Automatic Manual enable Conditional compilation
Permission Request Not required Dynamic request Conditional compilation

Code Reuse Rate: 85%


3.2 Android UI Adaptation Solution

Core Principles
  1. Dynamically obtain screen size

  2. Avoid fixed sizes

  3. Use layout managers

  4. Platform-specific optimization

Implementation Details
复制代码
// 1. Screen size adaptation
QScreen *screen = QApplication::primaryScreen();
QRect screenGeometry = screen->geometry();
setGeometry(screenGeometry);

// 2. Font size adaptation
#ifdef Q_OS_ANDROID
    QFont font("Roboto");
    font.setPointSize(14);  // Font size suitable for mobile devices
    QApplication::setFont(font);
#endif

// 3. Control size adaptation
#ifdef Q_OS_ANDROID
    // Increase touch target size
    button->setMinimumHeight(48);  // Android recommended minimum 48dp
    lineEdit->setMinimumHeight(40);
#endif

3.3 Icon Display Fix Solution

Problem Analysis

setPixmap vs setIcon:

Method Windows Android Reason
setPixmap() ✅ Normal ❌ Not displaying Different Android rendering mechanism
setIcon() ✅ Normal ✅ Normal Cross-platform compatibility
Best Practices
复制代码
// Recommended: Use setIcon (cross-platform)
button->setIcon(QIcon(":/image/icon.png"));
button->setIconSize(QSize(24, 24));

// Not recommended: Use setPixmap (Windows only)
label->setPixmap(QPixmap(":/image/icon.png"));

4. Issues Encountered and Solutions

Issue 1: Splash Screen Stuck

Phenomenon: App stays on the icon page after startup

Cause : splash_screen_sticky="true"prevents splash screen from disappearing

Solution : Change to false

Effect: ✅ Automatically enter login interface after 1-2 seconds


Issue 2: No Echo in Input Box

Phenomenon: Input method pops up but input content is not visible

Causes:

  1. Input method support not enabled

  2. Text color same as background color

  3. Input box height too small

Solutions:

  1. Set Qt::WA_InputMethodEnabled

  2. Explicitly set text color to black

  3. Increase minimum height to 40px

Effect: ✅ Input content displays normally


Issue 3: Bottom Icons Not Displaying

Phenomenon: Only text, no icons in bottom navigation bar

Cause : Used setPixmap()method

Solution : Use setIcon()method instead

Effect: ✅ Icons display normally


5. Day 5-6 Summary

Completion Status

Completed:

  • ✅ Fixed all Android UI display issues (7 issues)

  • ✅ Implemented complete Android functions (8 modules)

  • ✅ 100% function test passed (123 test cases)

  • ✅ Android development progress reached 65%

Completion Rate: 55% (11/20 tasks)

Technical Gains

  1. Android Development: Mastered Qt for Android development skills

  2. Platform Adaptation: Understood challenges of cross-platform development

  3. Problem Diagnosis: Improved problem localization and resolution capabilities

  4. Team Collaboration: Experienced the importance of efficient communication


6. Next Plan (Day 7-8)

Day 7 Tasks

  1. Software Icon Update

    • Use logo.png

    • Update Windows and Android icons

  2. Cloud Server Deployment

    • NSSM service configuration

    • Auto-start on boot

    • Log rotation

  3. APK Packaging and Release

    • Generate release version

    • Signature configuration

    • Test installation on Xiaomi Pad 7

Day 8 Tasks

  1. Comprehensive Function Testing​ (Xiaomi Pad 7)

  2. User Acceptance Testing

  3. Demo Video Recording

  4. Beta Sprint Summary

Expected Goals

  • Complete all remaining tasks

  • Achieve 100% cumulative completion rate

  • Prepare final demonstration


Document Version: v2.0 (Revised Edition)

Author: 陈毅鹏

Reviewers: 江贤晟, 杨媛真

相关推荐
落羽凉笙5 分钟前
Python基础(4)| 详解程序选择结构:单分支、双分支与多分支逻辑(附代码)
android·服务器·python
携欢11 分钟前
portswigger靶场之修改序列化数据类型通关秘籍
android·前端·网络·安全
ChoSeitaku23 分钟前
16.C++入门:list|手撕list|反向迭代器|与vector对比
c++·windows·list
Qhumaing29 分钟前
C++学习:【PTA】数据结构 7-1 实验6-1(图-邻接矩阵)
c++·学习·算法
No0d1es29 分钟前
2025年12月 GESP CCF编程能力等级认证C++一级真题
开发语言·c++·青少年编程·gesp·ccf
初级代码游戏30 分钟前
云存储的删除设计
ui·删除·交互设计·onedrive·icloud·界面设计
2301_7737303136 分钟前
系统编程—在线商城信息查询系统
c++·html
郝学胜-神的一滴37 分钟前
深入理解Linux中的Try锁机制
linux·服务器·开发语言·c++·程序人生
l1t43 分钟前
格式化SQL工具pg_prettify
数据库·sql
·云扬·1 小时前
MySQL四大系统库详解:作用、核心表与实用SQL查询
android·sql·mysql