P
Peter123
Fortgeschrittenes Mitglied
- 8
Also ich habe folgendes Problem:
Ich muss eine ImageView manuell auf dem Display platzieren können. Dies sollte möglichst in Echtzeit geschehen, da die Daten für die Positionsbestimmung von einem Sensor geliefert werden.
Das ganze funktioniert auch wunderbare für eine Displaygröße. In meinem Fall 480x800 mit folgendem Code:
Nun gibt es bei Android aber verschiedene Auflösungen und hier liegt mein Problem. Natürlich liegt es dann nahe das Ganze per dP zu lösen, jedoch ist dies auch nicht ganz genau. Dafür habe ich folgende funktion gewählt:
Als einzigen Ausweg sehe ich nun nur noch, für jede gängige Displaygröße, eine Fallunterscheidung in der setLayoutParam-Funktion einzubauen.
Oder gibt es da vielleicht einen einfacheren Weg?
Ich muss eine ImageView manuell auf dem Display platzieren können. Dies sollte möglichst in Echtzeit geschehen, da die Daten für die Positionsbestimmung von einem Sensor geliefert werden.
Das ganze funktioniert auch wunderbare für eine Displaygröße. In meinem Fall 480x800 mit folgendem Code:
Code:
RelativeLayout.LayoutParams par = (RelativeLayout.LayoutParams)imageView.getLayoutParams();
par.topMargin = 50; //Abstand von oben
par.leftMargin = 20; //Abstand von links
imageView.setLayoutParams(par);
Nun gibt es bei Android aber verschiedene Auflösungen und hier liegt mein Problem. Natürlich liegt es dann nahe das Ganze per dP zu lösen, jedoch ist dies auch nicht ganz genau. Dafür habe ich folgende funktion gewählt:
Code:
public float dpToPx(float dp){
Resources resources = getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float px = dp * (metrics.density/160f);
return px;
}
Als einzigen Ausweg sehe ich nun nur noch, für jede gängige Displaygröße, eine Fallunterscheidung in der setLayoutParam-Funktion einzubauen.
Oder gibt es da vielleicht einen einfacheren Weg?