Sobre android studio y como definir una interfaz

notas:
Los id se utilizan para que la clase R pueda revisar y encontrar cada elemento, ej: si tenemos un elemento, un TextView cuyo id se definió como...
android:id="@+id/tvMainTitle"
el id es tvMainTitle, este id puede ser referenciado mediante...
R.id.tvMainTitle

de esta forma se puede hacer uso de sus propiedades...
  
Para acomodar el código de forma rápida en Windows o Linux meciante el atajo Ctrl+Alt+L, si no anda en la parte superior code >  Reformat Code


Organización Lineal (LinearLayout)

orientation="vertical" de arriba hacia abajo
orientation="horizontal" de izquierda a derecha

dentro de un LinearLayout puede haber otro que tenga otra orientación

 
<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent"
     android:orientation="vertical"
     android:layout_height="match_parent">
    <TextView
             android:id="@+id/tvMainTitle"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:gravity="center"
             android:text="Hola Mundo!"/>
     <ImageView 
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:src="@drawable/ic_launcher_background"/>
     <LinearLayout
             android:layout_width="match_parent"
             android:orientation="horizontal"
             android:gravity="center"
             android:layout_height="wrap_content">
         <ImageView
             android:layout_width="120dp" 
             android:layout_height="120dp"
             android:src="@drawable/ic_filter_1_black_24dp"/>
         <ImageView
             android:layout_width="120dp"
             android:layout_height="120dp"
             android:src="@drawable/ic_filter_2_black_24dp"/>
         <ImageView
             android:layout_width="120dp"
             android:layout_height="120dp"
             android:src="@drawable/ic_filter_3_black_24dp"/>
     </LinearLayout> 
</LinearLayout> 


Como podemos ver el "hola mundo" y el cuadrado verde están dentro del primer LinearLayout y los Vector Assets con los números 1, 2 y 3 están el el segundo LinearLayout con una orientación horizontal, en necesario poner su orientación.















Organizacion Relativa(RelativeLayout)
los elementos se organizan dependiendo de otros elementos
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:app="http://schemas.android.com/apk/res-auto" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:orientation="vertical">
           <ImageView         
              android:layout_width="240dp"         
              android:layout_height="200dp" 
              android:layout_alignParentStart="true"         
              android:layout_alignParentTop="true" 
              android:src="@drawable/rojo" />
           <ImageView         
              android:id="@+id/ivMainVerde" 
              android:layout_width="150dp"         
              android:layout_height="370dp" 
              android:layout_alignParentTop="true" 
              android:layout_alignParentEnd="true" 
              android:src="@drawable/verde" />
           <ImageView         
              android:layout_width="250dp"         
              android:layout_height="130dp"         
              android:layout_below="@+id/ivMainVerde" 
              android:src="@drawable/azul" />
           <ImageView         
              android:layout_width="130dp" 
              android:layout_height="130dp"         
              android:layout_alignParentEnd="true" 
              android:layout_alignParentBottom="true"         
              android:src="@drawable/rosado" />
 </RelativeLayout>
 


 Como se puede ver los tags de align definen el lugar que les corresponde a los elementos, en el caso del azul lo hace con respecto al verde mediante el id que éste debe poseer, los alignParent son con respecto a la vista, los que no, con respecto a otro elemento.










FrameLayout
cuando es requerido que la aplicación no ocupe toda la pantalla, o que en un cierto lugar aparezca una imagen, es decir que crecerá tanto como uno quiera.
 Resulta muy versátil, porque permite poner vistas de forma dinámica así podemos reservar una vista para que entre y salga constantemente, también permite poner una imagen sobre otra sin problemas, es recomendable que tenga un solo hijo.

Layouts externos: ConstraintLayout 


INDICE