Genaue Positionierung einer ImageView

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:

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?
 
Was hältst du davon:

Teile Höhe und Breite des Bildschirms in 100% ein. Und sagen wir mal, du willst die Grafik bei 10% in x-Richtung und 30% in y-Richtung platzieren.

Code:
int screenHeight  = getResources().getDisplayMetrics().heightPixels;
int screenWidth = getResources().getDisplayMetrics().widthPixels;

float factorX = 100/screenWidth;
float factorY = 100/screenHeight ;

//Und dann in den Parametern
par.topMargin = 10*factorY; //Abstand von oben
par.leftMargin = 30*factorX; //Abstand von links

Würde mir so aus dem Stehgreif einfallen
 

Ähnliche Themen

D
  • Data2006
Antworten
14
Aufrufe
486
jogimuc
J
B
Antworten
3
Aufrufe
1.307
swa00
swa00
A
Antworten
10
Aufrufe
1.021
swa00
swa00
Zurück
Oben Unten