1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Genaue Positionierung einer ImageView

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Peter123, 06.06.2012.

  1. Peter123, 06.06.2012 #1
    Peter123

    Peter123 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    103
    Erhaltene Danke:
    7
    Registriert seit:
    13.11.2010
    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?
     
  2. Astrachan, 06.06.2012 #2
    Astrachan

    Astrachan Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    2
    Registriert seit:
    31.05.2012
    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
     

Diese Seite empfehlen