Frage von AaronWallerr, 37

Android Studio = Java und HTML?

Ich habe mir die Grundkentnisse von Java angeeignet um mit Android Studio Apps zu programmieren, doch dieser Code sieht mir nicht nach Java aus. Muss ich zusätzlich HTML lernen um richtig mit Android Studio umzugehen? Und ist das überhaupt HTML?

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="<a href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>"
    xmlns:app="<a href="http://schemas.android.com/apk/res-auto">http://schemas.android.com/apk/res-auto</a>"
    xmlns:tools="<a href="http://schemas.android.com/tools">http://schemas.android.com/tools</a>"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.aaronminijob.taschenrechner.MainActivity"
>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Rechner"
        android:id="@+id/textView" />

P.S bin ein Anfänger was Programmieren usw angeht.

Danke LG Aaron

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von regex9, 12

Das ist XML, wie HTML auch eine Auszeichnungssprache.

Mit XML werden in Java Android-Apps Layouts beschrieben. Ein XML-Dokument, welches eine Oberfläche beschreibt, hat eine feste Struktur um die  Hierarchie aller Elemente miteinander zu beschreiben. (Es ist so, als wolltest du einem Blinden ein Objekt beschreiben - du umzeichnest das Objekt mit Worten, erklärst, was du siehst, welche Eigenschaften das Objekt hat - Farbe, Inhalt, etc.).

Der erste Tag gibt an, um was für ein Dokument es sich hier handelt und mit welchem Text-Encoding gearbeitet werden soll. Dies ist notwendig, damit der Computer später weiß, mit was für einem Datenformat er es gerade zu tun hat.

Alle folgenden Tags beschreiben nun das Layout. Bei deinem Code-Auszug hast du bspw. das RelativeLayout, in dem Elemente wie die TextView liegen. Sollte es noch andere Elemente geben, wie z.B. Buttons, würden die ebenso mit aufgezählt werden. Verschachtelt in diesen Elementen könnten weitere Kindelemente liegen. Stell dir vor, du hast eine GroupView und darauf liegen Buttons, Labels, etc.. Dann würde die XML-Struktur an dieser Stelle auch entsprechend aussehen:

[GroupView]
  [Label /]
  [Button /]
  [Button /]
[/GroupView]

(Denke dir die spitzen Klammern dazu, hier auf GF sind sie für Codeschnipsel nicht erlaubt, daher nutze ich eckige Klammern)

Jedes Element besteht aus einem Start- und einem Endtag. Beide beinhalten den Namen des Elementtyps, der Endtag kennzeichnet sich durch einen zusätzlichen Slash vor dem Namen aus. Elemente benötigen beide Tags, wenn sie über Kindelemente verfügen. Du kannst aber auch auf Elemente stoßen, die nur aus einem Tag bestehen und sich am Ende selbst schließen:

[Button /]

Zur Programmlaufzeit wird das Markup dann geparst und die jeweiligen Objekte dazu grafisch umgesetzt. Das Programm weiß nun, dass es eine View erstellen muss, mit mehreren Objekten darin. Um diese Elemente noch weiter individuell zu beschreiben, gibt es entweder Kindelemente, die das übernehmen oder (viel eher) Attribute:

[Button Color="Red" Text="Button Text" /]

(Die Attribute habe ich mir gerade ausgedacht, ob es die bei Android Layouts so gibt, weiß ich gerade nicht, doch so etwas kann man leicht in der Dokumentation nachlesen).

Damit das Dokument einem gewissen Standard obliegt, und so abgesichert wird, dass es keine ausgedachten Elemente oder Attribute gibt, braucht das XML-Dokument des Weiteren Namespaces. Diese Namespaces geben an, was es gibt, worauf sich der Parser also später berufen kann. Es ist in dem Sinne wie eine Referenz oder ein Nachschlagewerk. Du kannst es auch mit den Java Imports vergleichen.

Bei deinem obigen Code werden über das startende Tag drei Namespaces eingebunden: android, app und tools. Danach können bestimmte Attribute, die in diesen jeweiligen Namespaces definiert wurden, über den Namespace-Namen aufgerufen werden. Bsp.:

android:layout_width="match_parent"

Was das Attribut bewirkt, ist, denke ich selbsterklärend. Zusätzlich zu der Existenz des Attributs wird im Namespace beschrieben, welche Werte erlaubt sind. Hier ist es der Wert match_parent, also ein String, der aussagt, dass die komplette Breite des Programmfensters genutzt werden soll.

Weiteres zu XML solltest du im Zuge deiner weiteren Erfahrungen mit Android erlernen können. Das von mir beschriebene sollte bis dahin als Schnellkurs der Grundlagen ausreichen.

Antwort
von rmnstr, 14

Außerdem solltest du auf jeden Fall zuerst mal einfache Java-Konsolenprogramme schreiben, bevor du dich an komplexere Sachen wie Android Apps ranmachst.

Kommentar von heilwigkenner ,

Das würde ich nicht so sagen - ich habe zwar schon etwas programmiert gehabt, als ich mit der Android-Entwicklung angefangen habe, habe aber vorher noch nicht in Java programmiert und es erst durch die Arbeit mit der Android API erlernt.

Antwort
von Copyyy, 9

Das ist XML, das musst du nicht wirklich "lernen", das ist recht einfach.
Da stehen im Grunde genommen nur Eigenschaften der Objekte (z.B. TextView), die du in der Activity hast, drin. Schwer zu erklären oO
Learning by doing :P

Kommentar von AaronWallerr ,

Also ist XML eine Programmiersprache oder wie kann man das ausdrücken? Danke :P

Kommentar von Copyyy ,

"Die Extensible Markup Language (engl. „erweiterbare Auszeichnungssprache“), abgekürzt XML, ist eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten in Form von Textdateien."

https://de.wikipedia.org/wiki/Extensible_Markup_Language

Keine passende Antwort gefunden?

Fragen Sie die Community