Diferencia entre revisiones de «PDM UD1 Bibliotecas de compatibilidade»
Ir a la navegación
Ir a la búsqueda
Imaxe obtida desta web
(No se muestra una edición intermedia del mismo usuario) | |||
Línea 4: | Línea 4: | ||
+ | * A partires da versión Android 9.0 (API 28) aparece outra forma de implementar ditas bibliotecas, denominada 'artifacts' e que se atopa dentro do espazo de nome '''androidx'''. | ||
+ | |||
+ | <br /> | ||
+ | ==Versión actual== | ||
+ | |||
+ | :* Todas as bibliotecas de compatibilidade están aloxadas nun paquete que comeza polo nome '''androidx'''. | ||
+ | :* A diferenza das bibliotecas de compatibilidade empregadas anteriormente, éstas se manteñen e actualizan por separado e non é necesario actualizar todo o S.O. como pasaba antes coas bibliotecas de compatibilidade amdroid.compact. | ||
+ | |||
+ | |||
+ | <br /> | ||
+ | ===Como empregar a novo sistema de bibliotecas de compatibilidade=== | ||
+ | |||
+ | <gallery caption="Empregando androidx" widths="350" heights="300px" perrow="2"> | ||
+ | Image:PDM_Artifacts_1.jpg| Cando creamos un novo proxecto debemos marcar a opción '''use androidx.*.artifacts'''. Para que isto aparece debemos ter a lo menos a API 28 ou posterior instalada. | ||
+ | Image:PDM_Artifacts_2.jpg| Ao facelo, no arquivo '''gradle.properties''' aparecerán dúas propiedades có valor a true (isto teríamos que facelo manualmente se non configuramos o proxecto dende o inicio para facer uso destas bibliotecas): android.useAndroidX e android.enableJetifier. | ||
+ | Image:PDM_Artifacts_7.jpg| Tamén debe engadirse un repositorio no arquivo '''build.gradle (a nivel de Proxecto)''' có nome <u>google()</u> (isto teríamos que facelo manualmente se non configuramos o proxecto dende o inicio para facer uso destas bibliotecas) | ||
+ | </gallery> | ||
+ | |||
+ | |||
+ | * Podedes consultar [https://developer.android.com/jetpack/androidx/versions?hl=es-419#version-table neste enlace] a nomenclatura das versións empregadas e o que significa cada número. | ||
+ | |||
+ | <br /> | ||
+ | ===Exemplo de uso=== | ||
+ | |||
+ | * Podedes atopar [https://developer.android.com/jetpack/androidx/versions?hl=es-419 neste enlace] a lista de bibliotecas coas versións actuais que se atopan dentro do espazo de nomes androidx. | ||
+ | : Para engadir un novo recurso temos que editar o arquivo '''build.gradle''' a nivel de Módulo e na sección de 'dependences' debemos empregar a orde '''implementation''': | ||
+ | [[Imagen:PDM_Artifacts_3.jpg|400px|center]] | ||
+ | |||
+ | : Como vemos, xa por defecto fai uso de dúas bibliotecas, unha para colocar os elementos gráficos nas activities (un tipo de layout denominado ConstraintLayout) e a librería appcompat, que entre outros elementos incorpora o ToolBar. | ||
+ | |||
+ | |||
+ | * Imaxinemos que no noso proxecto queremos empregar o widget (control gráfico) [https://wiki.cifprodolfoucha.es/index.php?title=PDM_RecyclerView_e_CardView CARDVIEW]. | ||
+ | |||
+ | |||
+ | <gallery caption="Exemplo de uso empregando biblioteca androidx" widths="350" heights="300px" perrow="2"> | ||
+ | Image:PDM_Artifacts_4.jpg| Imos o deseño gráfica da activity. Podemos ver como sito control no se atopa no proxecto e que é necesario descargalo. O arrastramos ao layout. | ||
+ | Image:PDM_Artifacts_5.jpg| Ao facelo se nos indica que é necesario empregar a librería androidx.cardview. Prememos o botón OK e empeza a facer unha sincronización Gradle descargando a librería. Isto é debido a que o que estar a facer realmente é engadir unha liña nova ao arquivo build.gradle. | ||
+ | Image:PDM_Artifacts_6.jpg| Podemos comprobar como está engadida a liña implementation coa nova librería. | ||
+ | Image:PDM_Artifacts_8.jpg| Imaxinemos que queremos engadir unha librería ao noso proxecto que nos permite imprimir fotos e documentos. Miramos na lista e vemos que se chama print e que a versión estable é a 1.0.0. | ||
+ | Image:PDM_Artifacts_9.jpg| Se prememos no enlace aparece a dependencia que temos que engadir. | ||
+ | Image:PDM_Artifacts_10.jpg| Escribimos a liña 'implementation' coa librería que queiramos e premer o enlace Sync Now. | ||
+ | </gallery> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | <br /> | ||
+ | |||
+ | ==Versión antiga== | ||
+ | |||
+ | * As librerías empezan có nome: com.android.support | ||
+ | : Soamente se actualizarán ata a versión 28, a partires de entón soamente se dará soporte ás biblitecas do espazo de nome '''androidx'''. | ||
* Podedes consultar as melloras a nivel xeral que ofrecen ditas bibliotecas [https://developer.android.com/topic/libraries/support-library/?hl=es-419 neste enlace]. | * Podedes consultar as melloras a nivel xeral que ofrecen ditas bibliotecas [https://developer.android.com/topic/libraries/support-library/?hl=es-419 neste enlace]. | ||
Línea 16: | Línea 68: | ||
<br /> | <br /> | ||
− | =Exemplo de uso= | + | ===Exemplo de uso=== |
* Un exemplo de uso sería o uso do ActionBar: | * Un exemplo de uso sería o uso do ActionBar: |
Revisión actual del 14:20 18 ago 2020
Sumario
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.
- A partires da versión Android 9.0 (API 28) aparece outra forma de implementar ditas bibliotecas, denominada 'artifacts' e que se atopa dentro do espazo de nome androidx.
Versión actual
- Todas as bibliotecas de compatibilidade están aloxadas nun paquete que comeza polo nome androidx.
- A diferenza das bibliotecas de compatibilidade empregadas anteriormente, éstas se manteñen e actualizan por separado e non é necesario actualizar todo o S.O. como pasaba antes coas bibliotecas de compatibilidade amdroid.compact.
Como empregar a novo sistema de bibliotecas de compatibilidade
- Podedes consultar neste enlace a nomenclatura das versións empregadas e o que significa cada número.
Exemplo de uso
- Podedes atopar neste enlace a lista de bibliotecas coas versións actuais que se atopan dentro do espazo de nomes androidx.
- Para engadir un novo recurso temos que editar o arquivo build.gradle a nivel de Módulo e na sección de 'dependences' debemos empregar a orde implementation:
- Como vemos, xa por defecto fai uso de dúas bibliotecas, unha para colocar os elementos gráficos nas activities (un tipo de layout denominado ConstraintLayout) e a librería appcompat, que entre outros elementos incorpora o ToolBar.
- Imaxinemos que no noso proxecto queremos empregar o widget (control gráfico) CARDVIEW.
Versión antiga
- As librerías empezan có nome: com.android.support
- Soamente se actualizarán ata a versión 28, a partires de entón soamente se dará soporte ás biblitecas do espazo de nome androidx.
- 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:
- 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:
Temos que modificar a activity e agora vai ser unha subclase da clase AppCompactActivity. O action bar a obtemos chamando ao método 'getSupportActionBar()'. Podemos ver como xa podemos facer uso de método 'setElevation()'. Indicar que esta forma sería a recomendada para facer uso do ActionBar en calquera versión de Android. Así nos aseguramos que todas van funcionar igual. Se non o facemos así e usamos as ActionBar que foron aparecendo en cada versión das Api´s estaremos limitados as método e propiedades da MinSDK indicada.
-- Ángel D. Fernández González -- (2018).