PDM UD1 Bibliotecas de compatibilidade

De MediaWiki
Ir a la navegación Ir a la búsqueda

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. De feito a ActionBar pasou a denominarse ToolBar.
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 a partires da API 21 e un min_SDK tamén a partires 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).