Desidero disegnare un canvas su base dati a livello di SeekBar
. Ho scritto il codice per impostare LayoutParams dello SeekBar
in base alla densità del dispositivo. Sto usando caso switch con densità di dispositivo comeDisegno sul problema della tela nei dispositivi di fascia alta
final DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
if(metrics.densityDpi <= DisplayMetrics.DENSITY_LOW){
zoomBarParams = new LinearLayout.LayoutParams(18,
LayoutParams.FILL_PARENT);
} else if (metrics.densityDpi <= DisplayMetrics.DENSITY_MEDIUM){
zoomBarParams = new LinearLayout.LayoutParams(24,
LayoutParams.FILL_PARENT);
}else if (metrics.densityDpi <= DisplayMetrics.DENSITY_HIGH){
zoomBarParams = new LinearLayout.LayoutParams(24,
LayoutParams.FILL_PARENT);
}else if (metrics.densityDpi <= DisplayMetrics.DENSITY_XHIGH){
zoomBarParams = new LinearLayout.LayoutParams(31,
LayoutParams.FILL_PARENT);
}else if (metrics.densityDpi <= DisplayMetrics.DENSITY_XXHIGH){
zoomBarParams = new LinearLayout.LayoutParams(60,
LayoutParams.FILL_PARENT);
}else if (metrics.densityDpi <= DisplayMetrics.DENSITY_XXXHIGH){
zoomBarParams = new LinearLayout.LayoutParams(60,
LayoutParams.FILL_PARENT);
} else {
zoomBarParams = new LinearLayout.LayoutParams(60,
LayoutParams.FILL_PARENT);
}
Ma questo non sta funzionando in dispositivi di fascia alta come Samsung nota 5, Galaxy S6 bordo etc..I crede che questi dispositivi è disponibile in gamma XXXHIGH densità, quindi perchè non funziona? C'è qualche relazione tra la densità del dispositivo e la dimensione dello schermo mentre si disegna su tela? Qualsiasi aiuto sarà molto apprezzato.
Penso che il tuo problema è che 'densityDpiValue' non è garantito per essere esattamente uguale a una delle densità specificate dalle costanti' DisplayMetrics'. Diciamo che otterrai densità pari a '321' - non innescherà nessuno dei casi. Prendi in considerazione la possibilità di controllare gli intervalli. –
Come una domanda a parte: quale problema stai cercando di risolvere con questo 'switch'? Perché non usare invece i valori 'dp'? –
@DmitryZaitsev Sì. Ho aggiornato il mio codice come verificare l'intervallo. Il problema è stato risolto in Samsung Note 5 e Galaxy S6 Edge. Ma il problema esiste ancora in S6 Edge +.Si prega di consultare il mio codice aggiornato in questione. – Jas