Graphisches Menü erstellen in Android..!

  • 4 Antworten
  • Letztes Antwortdatum
B

BFK

Fortgeschrittenes Mitglied
11
Hallo Forum,
Versuche ein graphisches Menü zu erstellen, doch leider funktioniert es nicht so wie gedacht.
Also ich habe ein Hintergrundsbild (Test.jpg) wo sich ein brauner Kreis befindet. Ich möchte, dass dieser Kreis ein button wird.
Mein erster gedanke ist das ganze Bild als Hintergrundsbild in einem Layout zu setzten OHNE den braunen Kreis. Dann erstelle ich ein Bild nur mit dem brauen Kreis mit unsichtbarem Hintergrund, setze das ganze in einem ImageView und versuche somit dieses ImageView genau an der Stelle zu platzieren, wo es sein sollte. Und hier ist mein Problem, weiss nicht wie ich das so machen kann.
Vor dem Button sollen sich noch weitere Views, wie z.B. SpinnerBox, TextViews usw befinden.


Also zum Beispiel so..:
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation = "vertical"  
  android:background="@drawable/test">

 ...weitere Views

<ImageView
    
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@drawable/test_btn"
      ....
/>

Wenn ich zum Beispiel beim ImageView Werte für "layout_marginLeft" und "layout_marginTop" setze (also die Position vom letzen View), funktioniert es zwar mit den richtigen Werten, aber nur mit der Auflösung des Hintergrundbildes (in diesem Fall ist es 320 x 480).
Wenn ich es aber auf ner anderen Auflösung teste...grösser oder kleiner, dann ist das ImageView nicht an der richtigen Stelle.

Was kann ich machen..?
Ein anderes Layout wählen, aber welches..?
 

Anhänge

  • TEST.jpg
    TEST.jpg
    5,2 KB · Aufrufe: 271
Suchst du evtl. soetwas wie AbsoluteLayout?

Wenn ich zum Beispiel beim ImageView Werte für "layout_marginLeft" und "layout_marginTop" setze
Was hast du denn für Werte gesetzt?
 
Hi snowman2,
ja so etwas ähnliches suche ich.
Aber das AbsoluteLayout kann ich ja nicht verwendet, wurde ja von Android selbst abgelehnt.

Die genaueren Werten zu sagen würde nichts ändern, habe mir halt angeguckt wie weit das ImageView vom richtigen Platz entfernt ist und experementiel Werte ausprobiert.
Die Werte sind eh in "dp" und zum Beispiel ist ja layout_marginTop der Abstand zwischen dem ImageView und dem letztem View im LinearLayout.
Zum Beispiel hatte ich bei layout_marginTop den Wert 320dp benutzt und wie schon gesagt bei gleicher Auflösung funkt es ohne Probleme, das ImageView wird an der richtigen Stelle platziert, aber sobalb ich ne höhere Auflösung benutze wird das ImageView mind. 100 pixel oberhalb der richtigen Stelle platziert. irgendwie funktioniert die dp-Methode mit Bildern nicht so richtig. (Ganz anders ist es bei den Views, da funktienert dp perfekt, wird wirklich gut umgesetzt und angepasst)

Mir ist auch ein rätsel wieso ich im inet zu wenig Infos über sowas finde.
Will keiner ein grafisches Menü erstellen..?
... die meisten Menüs sind viel zu simple erstellt und da braucht man sich nicht allzuviele Sorgen zu machen...!
 
Framelayout?
Damit kannst Du Views übereinander stapeln...und dann mit den üblichen Attributen positionieren z.b übereinander zentrieren.
 
Hallo weider mal,
FrameLayout bringts leider au nicht (weil ein frameLayout ja die Position vom Anfang des Layouts berechnet, aber wenn ich die Auflöung wieder ändere funktioniert es da nicht mehr) und wie es ausieht gibt es keine "feine" Lösung für dieses Problem, da eine Android-App auf verschiedene Bildschirmauflösung funktioniert und man weiss auch nicht so richtig wie Android jetzt das Bild skaliert, also wie genau.

Die einzige Lösung die ich bis jetzt gefunden habe ist einfach mehrere layout-ordner ertstellen (mdpi,hdpi,ldpi) und in jedem dieser Ordner ne verschiedene xml erstellen, egal was fürn Layout man benutzt, man ändert ja nur die dp-Werte.
Zusätlich sollte man in onCreate abfragen was fürne Auflösung das handy benutzt und so noch einige Feinabstimmung vornehmen.
Zum Beispiel greift ein Handy mit ner Auflösung von 854x480 die Drawables vom "drawable-hdpi"-Ordner. Ein Handy mit ner Auflösung von 800x480 sucht im selben Ordner nach den passenden Drawables. Also könnte man das ImageView perfekt platzieren wenn man die Auflöung kennt.

Code:
private void place_ImageButton_differentScreenResolution()
    {
        LinearLayout lin = (LinearLayout) findViewById(R.id._lin);
        
        Display display = getWindowManager().getDefaultDisplay(); 
        int screenWidth = display.getWidth(); 
        int screenHeight = display.getHeight();
        
        if(screenHeight == 854 && screenWidth == 480)
        {
            ImageTextView imv = (ImageTextView) findViewById(R.id._button);
            LinearLayout.LayoutParams par = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            par.setMargins(12, 122, 0, 0);
            lin.removeView(imv);
            lin.addView(imv, par); 
        }
        else if(screenHeight == 960 && screenWidth == 540){
            ...
        }

    }
Einziger und leider auch GROSSER nachteil..:
Es ist viel zu viel aufwendig, damit das Design der App bei allen Handys perfekt aussieht.
Man muss alle folgende Auflösungen miteinbeziehen..:

240x320
320x480
480x800
480x854
540x960
720x1280

und man weiss ja nie ob es später ne Auflösung geben wird die oben nicht in der Liste steht.

Wenn jemand eine bessere Lösung gefunden hat, wäre nett wenn er die mal posten würde, aber leider denke ich, dass es keine bessere Lösung gibt.

-MFG BFK-
 

Ähnliche Themen

A
  • Aquarius66
Antworten
5
Aufrufe
219
swa00
swa00
Jennywise
Antworten
2
Aufrufe
154
Jennywise
Jennywise
5
Antworten
0
Aufrufe
1.343
586920
5
Zurück
Oben Unten