Problemas de dimensionamento e densidade do Android

Atualizar: Alguma pesquisa descobriu que o Asus Transformer TF700T (high end) deve ter uma densidade de pixels de cerca de 224, então os valores de 159 android estão relatando são errôneos, ou foram modificados de alguma forma (a chave de densidade lcd em / system / build.prop), que não consigo encontrar por algum motivo.

Eu tenho dois tablets quase idênticos que eu estou desenvolvendo, tanto o ASUS Transformer quanto os 10.1 ".

O modelo de extremidade superior possui as seguintes especificações (onde dm = ApplicationContext.Resources.DisplayMetrics):

dm.Density = 1.5
dm.DensityDpi = High
dm.WidthPixels = 1920
dm.HeightPixels = 1128
dm.Xdpi = 159.8951
dm.Ydpi = 159.5811

e o modelo inferior tem:

dm.Density = 1
dm.DensityDpi = Default
dm.WidthPixels = 1280
dm.HeightPixels = 752
dm.Xdpi = 160.1576
dm.Ydpi = 160

O modelo final mais alto tem uma discrepância. O Density / DensityDpi é 1.5 / High, o que faz sentido b / c da alta resolução dentro de uma tela de 10.1 ". Mas, para obter um valor de 1.5, Xdpi / Ydpi = 240, tal que (para equação, vejahttp://developer.android.com/guide/practices/screens_support.html)

px = dp * (dpi / 160) 

Onde

scale = (dpi / 160)

assim

240/160 = 1.5 

Xdpi / Ydpi de 160 não corresponde a um fator de 1.5 Density (escala), que seria 160/160 = 1, correto?

Essa discrepância entre os DPIs e o fator de escala está causando algumas incompatibilidades de tamanho entre os dois tablets, b / c que as funções que estou usando (Context.Resources.GetDimension) estão aumentando muito os valores no tablet de extremidade superior (ou também pequena na extremidade inferior, dependendo de qual eu basear os tamanhos "normal / bom" em).

Ou seja, eu não teria esse problema se a Densidade fosse 1, ou se o xdpi / Ydpi fosse 240, no primeiro tablet. Esses valores não parecem estar conectados, como deveriam ser. Isso pode ser porque ASUS pode ter definido a configuração LCD-Density como 159, para obter uma resolução mais alta (em /system/build.prop - procurei a chave ro.sf.lcd_density (com ROM Toolbox) para confirmar, mas não consegui encontrá - lo).

Aqui estão algumas impressões para referência, do construtor da visualização personalizada:

Tablet high-end:

Context.Resources.GetDimension(control_panel_height_id) = 75
Context.Resources.GetDimension(grid_cell_boarder_width_id) = 1.5
Context.Resources.GetDimension(list_title_height_id) = 40.5
Context.Resources.GetDimension(list_title_text_size_id) = 21
Context.Resources.GetDimension(list_item_text_size_1_id) = 18
Context.Resources.GetDimension(list_item_text_size_2_id) = 15
Context.Resources.GetDimension(month_label_text_size_id) = 33

Tablet low-end:

Context.Resources.GetDimension(control_panel_height_id) = 50
Context.Resources.GetDimension(grid_cell_boarder_width_id) = 1
Context.Resources.GetDimension(list_title_height_id) = 27
Context.Resources.GetDimension(list_title_text_size_id) = 14
Context.Resources.GetDimension(list_item_text_size_1_id) = 12
Context.Resources.GetDimension(list_item_text_size_2_id) = 10
Context.Resources.GetDimension(month_label_text_size_id) = 22

onde a declaração de layout da vista é

<AppName.Droid.Views.Custom.CustomView
  xmlns:calendar="http://schemas.android.com/apk/res/namespace"
  android:id="@+id/CustomView1"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#1100FF00"
  calendar:control_panel_height="@dimen/control_panel_height"
  calendar:grid_cell_boarder_width="@dimen/grid_cell_boarder_width"
  calendar:list_title_height="@dimen/list_title_height"
  calendar:list_title_text_size="@dimen/list_title_text_size"
  calendar:list_item_text_size_1="@dimen/list_item_text_size_1"
  calendar:list_item_text_size_2="@dimen/list_item_text_size_2"
  calendar:month_label_text_size="@dimen/month_label_text_size"/>

e as dimensões que referencia são definidas como

<resources>
  <dimen name="control_panel_height">50dip</dimen>
  <dimen name="grid_cell_boarder_width">1dip</dimen>
  <dimen name="list_title_height">27dip</dimen>
  <dimen name="list_title_text_size">14dip</dimen>
  <dimen name="list_item_text_size_1">12dip</dimen>
  <dimen name="list_item_text_size_2">10dip</dimen>
  <dimen name="month_label_text_size">22dip</dimen>
</resources>

questionAnswers(2)

yourAnswerToTheQuestion