summaryrefslogtreecommitdiffstats
path: root/src/android/jar/src/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/jar/src/org')
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java23
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java4
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtSurface.java8
3 files changed, 26 insertions, 9 deletions
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..aa18dfc2d1 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<Integer, QtSurface>();
m_nativeViews = new HashMap<Integer, View>();
- 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;
@@ -988,11 +987,25 @@ public class QtActivityDelegate
m_nativeViews.put(id, view);
}
- public void createSurface(int id, boolean onTop, int x, int y, int w, int h) {
+ public void createSurface(int id, boolean onTop, int x, int y, int w, int h, int imageDepth) {
+ 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));
- QtSurface surface = new QtSurface(m_activity, id, onTop);
+ QtSurface surface = new QtSurface(m_activity, id, onTop, imageDepth);
if (w < 0 || h < 0) {
surface.setLayoutParams( new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
index 9b716f74e5..02bb1ae485 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -511,12 +511,12 @@ public class QtNative
return certificateArray;
}
- private static void createSurface(final int id, final boolean onTop, final int x, final int y, final int w, final int h)
+ private static void createSurface(final int id, final boolean onTop, final int x, final int y, final int w, final int h, final int imageDepth)
{
runAction(new Runnable() {
@Override
public void run() {
- m_activityDelegate.createSurface(id, onTop, x, y, w, h);
+ m_activityDelegate.createSurface(id, onTop, x, y, w, h, imageDepth);
}
});
}
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
index 1454c30638..45a80a3dbb 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
@@ -59,14 +59,18 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback
private GestureDetector m_gestureDetector;
private Object m_accessibilityDelegate = null;
- public QtSurface(Context context, int id, boolean onTop)
+ public QtSurface(Context context, int id, boolean onTop, int imageDepth)
{
super(context);
setFocusable(false);
setFocusableInTouchMode(false);
setZOrderMediaOverlay(onTop);
getHolder().addCallback(this);
- getHolder().setFormat(PixelFormat.RGBA_8888);
+ if (imageDepth == 16)
+ getHolder().setFormat(PixelFormat.RGB_565);
+ else
+ getHolder().setFormat(PixelFormat.RGBA_8888);
+
if (android.os.Build.VERSION.SDK_INT < 11)
getHolder().setType(SurfaceHolder.SURFACE_TYPE_GPU);