holgerm / Old_GeoQuest-Client-Android

Android native player for GeoQuest
0 stars 0 forks source link

Rounded corners for map view #38

Closed qeevee closed 10 years ago

qeevee commented 10 years ago

Usual trick does not work.

glaap commented 10 years ago

soll ich mir das angucken oder ist das aus Versehen an mich assigned?

qeevee commented 10 years ago

Hier habe ich einen vielleicht brauchbaren hinweis gesehen: http://blog.blundell-apps.com/rounded-corners-mapview/

Ob das mit OSMAndroid klappt weiss ich nicht. Zur Not verzeichten wir auf runde Ecken.

qeevee commented 10 years ago

ah gut du seihst die KOmmentare schnell. Ja, wäre gut, wenn du dir das ansiehst. Bist ja eh mit der Map unterwegs gewesen zuletzt.

glaap commented 10 years ago

Ich schaue mir gerade die Source aus dem Link an.

Ich habe ein paar Fragen:

glaap commented 10 years ago

screenshot_2013-10-24-13-13-36 Eine erste Version funktioniert. Es wird dazu ein 9-Patch Drawable über die Map gelegt, welches dann die Rounded Corners über der Map anzeigt. Das geht aber nur mit einfarbigem Hintergrund.

Außerdem sollte das 9 Patch Bild verschönert werden.

qeevee commented 10 years ago

Wir verwenden aber Quest-spezifische Bilder als Hintergrund. z. Bsp. https://github.com/qeevee/Private-Quests-Repo/blob/master/PH_KA/CarlBenzTour/edu.bonn.mobilegaming.geoquest/repositories/PH_KA/CarlBenzTour/images/alteKarte.png

In den anderen Missions Layouts nehme ich die Bilder einfach als background des Layouts. Das geht hier ja leider nicht.

qeevee commented 10 years ago

Hier wird auch nur maskiert, aber immerhin schön rund: http://stackoverflow.com/questions/14469208/is-there-a-way-to-implement-rounded-corners-to-a-mapfragment

qeevee commented 10 years ago

Vermutlich müsste man die draw() methode überschreiben und in den Ecken statt der Tiles etwas modifiziertes zeichnen. Habe das bei den Bitmaps auch gemacht: com.qeevee.ui.BitmapUtil.getRoundedCornerBitmap(Bitmap, int)

Aber könnte zu aufwändig sein, oder? Evtl. verschieben auf später. Und jetzt nur manuell auf passenes Hintergrundfarbe (z. Bsp. das Grau der zuletzt benutzen alten Karte) setzen?

glaap commented 10 years ago

Ja das Beispiel habe ich auch gesehen. Das 9-Patch Bild war ja auch nur ein Test ob es klappt.

Wo werden die Bilder denn eingebunden? Man könnte ja zum Beispiel das jeweilige Hintergrundbild folgendermaßen verändern und in der Mapansicht oben auf anzeigen: altekarte_cut

qeevee commented 10 years ago

Bisher nur in NPCTalk als aatribut "bg" in mission tag.

Beispiel im Spiel: (https://github.com/qeevee/Private-Quests-Repo/blob/master/PH_KA/CarlBenzTour/edu.bonn.mobilegaming.geoquest/repositories/PH_KA/CarlBenzTour/game.xml)

<mission type="NPCTalk" id="Start" image="images/geburtshaus" nextdialogbuttontext="Weiter ..." endbuttontext="Zur Karte..." bg="images/alteKarte"> ...

Implementierung hier: edu.bonn.mobilegaming.geoquest.ui.abstrakt.MissionUI.setBackground()

qeevee commented 10 years ago

Vielleicht hilft uns FrameLayout: http://developer.android.com/reference/android/widget/FrameLayout.html

???

glaap commented 10 years ago

Das wurde mir vorgeschlagen um die RoundedCorners obendrüber anzuzeigen.

Jetzt benutze ich es so:

<org.osmdroid.views.MapView
    android:id="@+id/osmapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true" />

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/roundedcorners"
android:orientation="vertical" >

...

glaap commented 10 years ago

Schau mal ich habe den Hintergrund den du mir geschickt hast ganz gut einfügen können: screenshot_2013-10-24-14-27-17

qeevee commented 10 years ago

super!

wie hast du es jetzt gemacht?

glaap commented 10 years ago

Ich habe aus dem Bild in Gimp eine Auswahl mit runden Ecken ausgeschnitten, dann in ein 9-Patch-Bild umgewandelt und im Layout XML drüber gelegt.

qeevee commented 10 years ago

Wie würde das denn gedehnt aussehen? Wäre dann ein grauer Pixel gedehnt?

glaap commented 10 years ago

Das kann man beim Erstellen des 9-Patch Bildes einstellen wie man möchte. Ich habe jetzt alles zwischen den Ecken als dehnbaren Bereich benutzt. In dem Bild oben ist das sehr zusammengequetscht.

Man könnte aber eben auch einzelne Pixel dehnen. Ich benutze folgendes Programm: http://digitalsquid.co.uk/patchworker/

qeevee commented 10 years ago

Das heisst aber, dass wir das manuell vor Auslieferung der App einbauen müssen. Das ist jetzt für Carl Benz ok.

Aber wie gehen wir langfristig vor?

glaap commented 10 years ago

Man kann die LinearLayout Properties doch auch im Programmcode neu setzen oder?

Dann definiert man in der XML nicht nur das Hintergrundbild, sondern auch die zugehörige ausgeschnittene Version. Der zukünftige Editor könnte solche ausgeschnittenen Bilder vielleicht auch selbst aus den Hintergrundbildern erstellen.

Ansonsten können wir uns ja langfristig nochmal angucken, ob wir das Zeichnen des Mapviews irgendwie überschreiben können.

Der Kompass müsste außerdem neu positioniert werden. Soll der in der Carl Benz App eigentlich angezeigt werden?

qeevee commented 10 years ago

OK. Mach doch eine neue Issue draus im Milestone https://github.com/qeevee/GQ_Player_Android/issues?milestone=10&state=open

Der Kompass sollte in Carl Benz Tour zu sehen sein. Ja.

glaap commented 10 years ago

Okay. Dann verschiebe ich den noch. Mal sehen.

Anbei mal ein Test mit dem in Gimp angefertigten Rand: screenshot_2013-10-24-14-50-12

glaap commented 10 years ago

Kompass ist jetzt wieder sichtbar. Alles ist im Branch hotfix-roundedcorners comitted.

Schreib mir nachher mal wohin ich die beiden Issues mergen soll, damit sie für Carl Benz einsatzbereit sind.

qeevee commented 10 years ago

Das 9patch Bild kann man jetzt auch über das bg attribut in der Map Mission einstellen.