Android: Start the application when we know the screen geometry.

Until now we'se set the screenGemetry to 0,0 until the layout is
created, but some controls needs it before that.

Task-number: QTBUG-44271
Change-Id: I7d00e2a142572e27fc77e46566bb2cdb37f58035
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
bb10
BogDan Vatra 2015-07-06 15:22:34 +03:00
parent 332d41d025
commit 17caa94190
2 changed files with 25 additions and 13 deletions

View File

@ -760,12 +760,6 @@ public class QtActivityDelegate
if (null == m_surfaces)
onCreate(null);
String nativeLibraryDir = QtNativeLibrariesDir.nativeLibrariesDir(m_activity);
QtNative.startApplication(m_applicationParameters,
m_environmentVariables,
m_mainLib,
nativeLibraryDir);
m_started = true;
return true;
} catch (Exception e) {
e.printStackTrace();
@ -781,14 +775,26 @@ public class QtActivityDelegate
public void onCreate(Bundle savedInstanceState)
{
m_quitApp = true;
Runnable startApplication = null;
if (null == savedInstanceState) {
DisplayMetrics metrics = new DisplayMetrics();
m_activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels,
0, 0,
metrics.xdpi, metrics.ydpi, metrics.scaledDensity);
startApplication = new Runnable() {
@Override
public void run() {
try {
String nativeLibraryDir = QtNativeLibrariesDir.nativeLibrariesDir(m_activity);
QtNative.startApplication(m_applicationParameters,
m_environmentVariables,
m_mainLib,
nativeLibraryDir);
m_started = true;
} catch (Exception e) {
e.printStackTrace();
m_activity.finish();
}
}
};
}
m_layout = new QtLayout(m_activity);
m_layout = new QtLayout(m_activity, startApplication);
m_editText = new QtEditText(m_activity, this);
m_imm = (InputMethodManager)m_activity.getSystemService(Context.INPUT_METHOD_SERVICE);
m_surfaces = new HashMap<Integer, QtSurface>();

View File

@ -43,9 +43,11 @@ import android.view.ViewGroup;
public class QtLayout extends ViewGroup
{
public QtLayout(Context context)
private Runnable m_startApplicationRunnable;
public QtLayout(Context context, Runnable startRunnable)
{
super(context);
m_startApplicationRunnable = startRunnable;
}
public QtLayout(Context context, AttributeSet attrs)
@ -65,6 +67,10 @@ public class QtLayout extends ViewGroup
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);
QtNative.setApplicationDisplayMetrics(metrics.widthPixels,
metrics.heightPixels, w, h, metrics.xdpi, metrics.ydpi, metrics.scaledDensity);
if (m_startApplicationRunnable != null) {
m_startApplicationRunnable.run();
m_startApplicationRunnable = null;
}
}
@Override