From 4d08d80be60af14c5daed7c6f8d37538aea6c429 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Fri, 21 Feb 2014 16:08:06 +0200 Subject: Rework the splash screen for Android. Allow the developers to define a splash screen which will be visible until the first window is created. [ChangeLog][Android] Allow the developers to define a splash screen which will be visible until the first window is created. Task-number: QTBUG-30652 Change-Id: I5da80be417ffffb03e66009f45745d4b387d2912 Reviewed-by: Eskil Abrahamsen Blomfeldt --- .../org/qtproject/qt5/android/QtActivityDelegate.java | 19 ++++++++++++++++--- src/android/java/AndroidManifest.xml | 5 ++++- src/android/java/res/layout/splash.xml | 13 ------------- .../qtproject/qt5/android/bindings/QtActivity.java | 4 ++-- src/android/java/version.xml | 2 +- 5 files changed, 23 insertions(+), 20 deletions(-) delete mode 100644 src/android/java/res/layout/splash.xml (limited to 'src') diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java index 4b80d68761..620ea22dad 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java @@ -48,6 +48,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Configuration; +import android.graphics.drawable.ColorDrawable; import android.graphics.Rect; import android.os.Build; import android.os.Bundle; @@ -56,6 +57,7 @@ import android.os.ResultReceiver; import android.text.method.MetaKeyKeyListener; import android.util.DisplayMetrics; import android.util.Log; +import android.util.TypedValue; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.KeyCharacterMap; @@ -653,9 +655,6 @@ public class QtActivityDelegate m_imm = (InputMethodManager)m_activity.getSystemService(Context.INPUT_METHOD_SERVICE); m_surfaces = new HashMap(); m_nativeViews = new HashMap(); - m_activity.setContentView(m_layout, - new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT)); m_activity.registerForContextMenu(m_layout); int orientation = m_activity.getResources().getConfiguration().orientation; @@ -989,6 +988,20 @@ public class QtActivityDelegate } public void createSurface(int id, boolean onTop, int x, int y, int w, int h) { + if (m_surfaces.size() == 0) { + TypedValue attr = new TypedValue(); + m_activity.getTheme().resolveAttribute(android.R.attr.windowBackground, attr, true); + if (attr.type >= TypedValue.TYPE_FIRST_COLOR_INT && attr.type <= TypedValue.TYPE_LAST_COLOR_INT) { + m_activity.getWindow().setBackgroundDrawable(new ColorDrawable(attr.data)); + } else { + m_activity.getWindow().setBackgroundDrawable(m_activity.getResources().getDrawable(attr.resourceId)); + } + + m_activity.setContentView(m_layout, + new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT)); + } + if (m_surfaces.containsKey(id)) m_layout.removeView(m_surfaces.remove(id)); diff --git a/src/android/java/AndroidManifest.xml b/src/android/java/AndroidManifest.xml index defbe502ef..3a2a52b874 100644 --- a/src/android/java/AndroidManifest.xml +++ b/src/android/java/AndroidManifest.xml @@ -29,8 +29,11 @@ + - + diff --git a/src/android/java/res/layout/splash.xml b/src/android/java/res/layout/splash.xml deleted file mode 100644 index 6b0d492dd5..0000000000 --- a/src/android/java/res/layout/splash.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java index b2f92c04e9..3a0eaa77d6 100644 --- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java +++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java @@ -858,8 +858,8 @@ public class QtActivity extends Activity if (null == getLastNonConfigurationInstance()) { // if splash screen is defined, then show it - if (m_activityInfo.metaData.containsKey("android.app.splash_screen") ) - setContentView(m_activityInfo.metaData.getInt("android.app.splash_screen")); + if (m_activityInfo.metaData.containsKey("android.app.splash_screen_drawable")) + getWindow().setBackgroundDrawableResource(m_activityInfo.metaData.getInt("android.app.splash_screen_drawable")); startApp(true); } } diff --git a/src/android/java/version.xml b/src/android/java/version.xml index bdcf915c06..e05bba7588 100644 --- a/src/android/java/version.xml +++ b/src/android/java/version.xml @@ -1,4 +1,4 @@ - + AndroidManifest.xml libs.xml -- cgit v1.2.3