Diferencia entre revisiones de «PDM UD1 Bibliotecas de compatibilidade»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 33: Línea 33:
 
<gallery caption="Proxecto creado cunha API 28" widths="350" heights="300px" perrow="2">
 
<gallery caption="Proxecto creado cunha API 28" widths="350" heights="300px" perrow="2">
 
Image:PDM_Biblioteca_compat_2.jpg| Proxecto compilado coa API 28
 
Image:PDM_Biblioteca_compat_2.jpg| Proxecto compilado coa API 28
−
Image:PDM_Biblioteca_compat_3.jpg| MinSDK e TargetSDK coa API 28
+
Image:PDM_Biblioteca_compat_3.jpg| MinSDK 21 (na imaxe aparece 28, pero se pode poñer 21) e TargetSDK coa API 28
 
Image:PDM_Biblioteca_compat_4.jpg| Podemos comprobar como podemos facer uso do método '''setElevetion'''.
 
Image:PDM_Biblioteca_compat_4.jpg| Podemos comprobar como podemos facer uso do método '''setElevetion'''.
 
Image:PDM_Biblioteca_compat_5.jpg| Resultado da execución.
 
Image:PDM_Biblioteca_compat_5.jpg| Resultado da execución.
 
</gallery>
 
</gallery>
  
 +
 +
<br />
 +
'''Código do Manifiesto:'''
 +
<syntaxhighlight lang="java" line enclose="div" highlight="">
 +
...........
 +
        <activity android:name=".NOME_ACTIVITY"
 +
            android:label="@string/app_name"
 +
            android:theme="@style/AppTheme">
 +
            <intent-filter>
 +
                <action android:name="android.intent.action.MAIN" />
 +
 +
                <category android:name="android.intent.category.LAUNCHER" />
 +
            </intent-filter>
 +
        </activity>
 +
...........
 +
</syntaxhighlight>
  
  
 
<br />
 
<br />
−
* Agora fagamos un proxecto para unha API 19.
+
'''Código do layout:'''
 +
<syntaxhighlight lang="java" line enclose="div" highlight="7,9">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<android.support.constraint.ConstraintLayout 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"
 +
    tools:context=".NOME_DA_ACTIVITY">
 +
 
 +
    <android.widget.Toolbar
 +
        android:id="@+id/toolbar2"
 +
        android:layout_width="match_parent"
 +
        android:layout_height="wrap_content"
 +
        android:layout_marginTop="4dp"
 +
        android:background="?attr/colorPrimary"
 +
        android:minHeight="?attr/actionBarSize"
 +
        android:theme="?attr/actionBarTheme"
 +
        android:title="ToolBar"
 +
        app:layout_constraintEnd_toEndOf="parent"
 +
        app:layout_constraintTop_toTopOf="parent" />
 +
</android.support.constraint.ConstraintLayout>
 +
</syntaxhighlight>
 +
 
 +
: Línea 7: Hai que poñer o nome da vosa activity
 +
: Línea 9: Fixarse como o control Toolbar non é o da biblioteca de compatibilidade.
 +
 
 +
'''Código da Activity:'''
 +
<syntaxhighlight lang="java" line enclose="div" highlight="5">
 +
import android.app.Activity;
 +
import android.os.Bundle;
 +
import android.widget.Toolbar;
 +
 
 +
public class NOME_DA_ACTIVITY extends Activity {
 +
 
 +
    @Override
 +
    protected void onCreate(Bundle savedInstanceState) {
 +
        super.onCreate(savedInstanceState);
 +
        setContentView(R.layout.activity_main221);
 +
 
 +
        Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar2);
 +
 
 +
        float scale = getResources().getDisplayMetrics().density;
 +
        int pix = (int)(4*scale+0.5f);
 +
 
 +
        myToolbar.setElevation(pix);
 +
    }
 +
}
 +
 
 +
</syntaxhighlight>
 +
: Línea 5: Hai que poñer o nome da vosa activity
 +
 
 +
 
 +
 
 +
<br />
 +
* Agora cambiamos o MinSDK para API 19.
 +
: Na API 19 non existía o ToolBar. O equivalente denomábase ActionBar, polo tanto teredes un erro na código da Activity:
 +
[[Imagen:PDM_Biblioteca_compat_5b.jpg|400px|center]]
 +
 
 +
 
 +
 
 
<gallery caption="Proxecto creado cunha min_SDK API 19" widths="350" heights="300px" perrow="2">
 
<gallery caption="Proxecto creado cunha min_SDK API 19" widths="350" heights="300px" perrow="2">
 
Image:PDM_Biblioteca_compat_6.jpg| Poñemos un minSDK de API 19.  
 
Image:PDM_Biblioteca_compat_6.jpg| Poñemos un minSDK de API 19.  

Revisión del 22:22 23 sep 2019

Introdución

  • Como xa comentamos anteriormente, as bibliotecas de compatibilidade son creados por Android para dar soporte a versións antigas do S.O. Android e que estas poidan executar novas funcionalidades que apareceron en versións posteriores.


  • Podedes consultar as melloras a nivel xeral que ofrecen ditas bibliotecas neste enlace.
  • Podedes consultar as funcións que incorporan cada unha das bibliotecas de compatibilidade neste enlace.


  • Podedes consultar como configurar o Android Studio para descargar e utilizar ditas bibliotecas neste enlace



Exemplo de uso

  • Un exemplo de uso sería o uso do ActionBar:
PDM Biblioteca compat 1.jpg
Imaxe obtida desta web


  • Dende a versión 3.0 (API 11) todas as activity´s poden levar unha ActionBar (de feito ven no theme por defecto). Pero a medida que foron xurdindo novas versións da API, engadíronse novas funcionalidades.
Por exemplo, a partires da versión API 21 (Android 5) engadíronse novas opcións para modificar o deseño e adaptalo á filosofía do Material Design.
Unha destas propiedades novas é a elevación, que ven ser un efecto como se o compoñente estivera colocado 'por enriba' doutro. No caso da barra de acción (Action Bar) que a partires de Android 5 denomínase Tool Bar (App Bar está formada por Tool Bar, Status Bar e Tab Bar) dito método é setElevation e a guía de Material Design indica que debe estar a 4dp.


  • Se creamos un novo proxecto cun target_SDK por enriba do 21 e un min_SDK tamén por enriba do 21, poderemos facer uso de dito método:



Código do Manifiesto:

 1 ...........
 2         <activity android:name=".NOME_ACTIVITY"
 3             android:label="@string/app_name"
 4             android:theme="@style/AppTheme">
 5             <intent-filter>
 6                 <action android:name="android.intent.action.MAIN" />
 7 
 8                 <category android:name="android.intent.category.LAUNCHER" />
 9             </intent-filter>
10         </activity>
11 ...........



Código do layout:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     tools:context=".NOME_DA_ACTIVITY">
 8 
 9     <android.widget.Toolbar
10         android:id="@+id/toolbar2"
11         android:layout_width="match_parent"
12         android:layout_height="wrap_content"
13         android:layout_marginTop="4dp"
14         android:background="?attr/colorPrimary"
15         android:minHeight="?attr/actionBarSize"
16         android:theme="?attr/actionBarTheme"
17         android:title="ToolBar"
18         app:layout_constraintEnd_toEndOf="parent"
19         app:layout_constraintTop_toTopOf="parent" />
20 </android.support.constraint.ConstraintLayout>
Línea 7: Hai que poñer o nome da vosa activity
Línea 9: Fixarse como o control Toolbar non é o da biblioteca de compatibilidade.

Código da Activity:

 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.widget.Toolbar;
 4 
 5 public class NOME_DA_ACTIVITY extends Activity {
 6 
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main221);
11 
12         Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar2);
13 
14         float scale = getResources().getDisplayMetrics().density;
15         int pix = (int)(4*scale+0.5f);
16 
17         myToolbar.setElevation(pix);
18     }
19 }
Línea 5: Hai que poñer o nome da vosa activity



  • Agora cambiamos o MinSDK para API 19.
Na API 19 non existía o ToolBar. O equivalente denomábase ActionBar, polo tanto teredes un erro na código da Activity:
PDM Biblioteca compat 5b.jpg










-- Ángel D. Fernández González -- (2018).