L'ho fatto utilizzando il mio layout di root, il problema è che non è possibile ottenere queste informazioni (larghezza e altezza) nei metodi onCreate/onStart/onResume quando sono in esecuzione la prima volta.
Qualsiasi momento dopo che, le dimensioni possono essere recuperate dal layout root (LinearLayout/FrameLayout/TableLayout/etc), nel mio caso ho usato FrameLayout:
FrameLayout f = (FrameLayout) findViewById(R.id.layout_root);
Log.d(TAG, "width " + f.getMeasuredWidth());
Log.d(TAG, "height " + f.getMeasuredHeight());
o:
FrameLayout f = (FrameLayout) findViewById(R.id.layout_root);
Log.d(TAG, "width " + f.getRight());
Log.d(TAG, "height " + f.getBottom());
Modificato da qui --------------------------------------------- -----------
Ho trovato un modo per ottenere queste informazioni sul metodo onCreted, ma solo se hai più di una attività . Nel mio caso ho un'attività principale che chiama la seconda attività.
Su main_activity prima di chiamare la seconda_attività, da un nuovo Itent, posso aggiungere ulteriori informazioni per la seconda_attività. Ecco il codice necessario alla prima attività:
Intent i = new Intent(this, SecondActivity.class);
i.putExtra("width", f.getMeasuredWidth());
i.putExtra("height", f.getMeasuredHeight());
startActivity(i);
Dopo di che sul vostro seconda attività è possibile recuperare queste informazioni sul metodo onCreate della vostra seconda attività farlo:
int width = getIntent().getExtras().getInt("width");
int height = getIntent().getExtras().getInt("height");
Perché vuoi farlo? Nella maggior parte dei casi questo non è necessario e la maggior parte delle cose che potrebbero essere necessarie può essere fatto con tecniche migliori fornite con Android per gestire schermi di dimensioni diverse. – Janusz
Ho davvero bisogno di sapere quanti pixel ha l'attività nella sua larghezza e altezza. Ha a che fare con la precisione cartografica. – Tsimmi
Stai utilizzando una vista mappa o una vista personalizzata per la visualizzazione della mappa? – Janusz