- 1. main.qml
- 2. AndroidManifest.xml
- 3. splash.xml
- 4. apptheme.xml
- 5. Нәтиже
Qt тілінде жазылған қолданбаға Splash Screen қосудың шағын мысалын көрсетуге рұқсат етіңіздер. Бұл жағдайда Splash Screen қолданбаға Android экожүйесі арқылы қосылады, яғни оның манифесті арқылы. Манифест қосу осы жерде сипатталған.
Qt/QML-де экранды жасаудың бір нұсқасы QML/C++ кодын жазу болып табылады, бірақ бұл әдістің кемшілігі - қолданба толығымен жүктелгенше қара қолданба экранын көресіз. Сондықтан Java арқылы қолданбаны оның манифесті арқылы жүктеуіңіз керек.
Осындай шашу экранын жасайық
Жоба құрылымы келесідей болады
main.qml
Мен ең қызықсыздан бастаймын - бұл қолданба іске қосылғанда күтетін QML қолданба файлының мазмұны. Ерекше ештеңе жоқ, әдеттегі "Hello World"
import QtQuick 2.12 import QtQuick.Window 2.12 Window { id: window visible: true width: 480 height: 640 title: qsTr("Hello World") Text { text: qsTr("Splash Screen") anchors.centerIn: parent } }
AndroidManifest.xml
Енді манифестті түзетейік, онда қолданба тақырыбының ресурстық файлын көрсету керек, ол apptheme.xml деп аталады.
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:theme="@style/AppTheme" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop">
Содан кейін шашырау файлы туралы ақпаратты қосыңыз
<!-- Splash screen --> <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/> <!-- Splash screen -->
Бұл файлдар res/values және res/drawable каталогтарына қосылуы керек.
splash.xml
Splash Screen қолданбасының белгішесі бар, ол сонымен қатар сызба каталогында орналасқан.
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" > <solid android:color="#FFFFFFFF"/> </shape> </item> <item> <bitmap android:src="@drawable/icon" android:gravity="center" /> </item> </layer-list>
apptheme.xml
Мұнда біз тақырып жолын өшіреміз, сонымен қатар қолданба терезесінің фонын орнатамыз.
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar"> <item name="android:windowBackground">@drawable/splash</item> </style> </resources>
Нәтиже
Сайып келгенде, бұл Splash Screen көмегімен қосымшаны алу үшін жеткілікті болады.
Интересен формат иконки, если это png, то как решается проблема scalability? не растягивается ли лого на китайфонах с 1280х2500? У меня просто сплеш скрин с градиентом и логотипом, и вот несколько дней уже пытаюсь реишить проблему растягивания лого, и 9patch делал, и пытался покрыть разрешения, но ещё не пробовал в xml поверх нацепить лого на центр, скажите пожалуйста, решается ли таким образом проблема с совместимостью со всеми экранами?
На данный момент не скажу. Очень давно уже не брался за Java на Android
Ну я решил проблему созданием лого для m-xxxhdpi, разложил по папкам и андроид сам вытаскивает нужный, но, в руководстве один важный аспект пропущен, хотя возможно это у меня только, вообщем qt может свою meta-data всунуть в приложение, и будет либо белый экран после сплеша либо вообще каша, нужно найти в манифесте эту метадату с qtшными splashacreen и splashacreen_port и удалить эти две строки, это я так, вдруг кому пригодится, вроде бы если изначально не пытаться через qtшный гуи манифеста ставить скрины то он ничего не допишет, но вдруг.