Acceder

Ver la Versión Completa : Poner GridLayout en API 10, errores?


manolazo
03/02/14, 01:35:52
Buenas.

Se sabe que para implementar un GridLayot es necesario minimo API 14, sin embargo quiero bajar el requerimiento en el manifest a API 10 para que el juego llegue a mas terminales.

Habia un tema abierto de hace tiemp o(http://www.htcmania.com/showthread.php?t=749677 ) pero el autor desistio.


He estado mirando como hacerlo importando la libreria de GridLayout que viene en la siguiente ruta: <sdk_folder>\extras\android\compatibility\v7\gridlayout
siguiendo este metodo para importarla:
http://developer.android.com/tools/support-library/setup.html#libs-with-res

Una vez importada , en el readme.txt de dicha libreria indica que:
"Make sure you use <android.support.v7.widget.GridLayout> in your
layouts instead of <GridLayout>.
Same for <android.support.v7.widget.Space> instead of <Space>."

Por ejemplo:


<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" <==== the namespace used for the library project
android:layout_width="match_parent"
android:layout_height="match_parent"
app:columnCount="6" > <===== notice how we're using app:columnCount here, not android:columnCount!

<Button
android:id="@+id/button1"
app:layout_column="1" <=== again, note the app: namespace
app:layout_columnSpan="2"
app:layout_gravity="left"
app:layout_row="1"
android:text="Button" />

<CheckBox
android:id="@+id/checkBox1"
app:layout_column="4"
app:layout_gravity="left"
app:layout_row="2"
android:text="CheckBox" />

<Button
android:id="@+id/button2"
app:layout_column="5"
app:layout_gravity="left"
app:layout_row="3"
android:text="Button" />

<android.support.v7.widget.Space <=== space widgets also need the full support package path
android:layout_width="21dp" <=== use the android namespace for width, height etc -- only use app: for the grid layout library's new resources
android:layout_height="1dp"
app:layout_column="0"
app:layout_gravity="fill_horizontal"
app:layout_row="0" />




El caso es que cuando hago estos cambios en los layouts , eclipse me lanza el siguiente error:

02-03 01:04:28.900: E/AndroidRuntime(2660): FATAL EXCEPTION: main
02-03 01:04:28.900: E/AndroidRuntime(2660): java.lang.NoSuchMethodError: android.support.v4.view.ViewGroupCompat.getLayoutM ode
02-03 01:04:28.900: E/AndroidRuntime(2660): at android.support.v7.widget.GridLayout$Bounds.includ e(GridLayout.java:2155)
02-03 01:04:28.900: E/AndroidRuntime(2660): at android.support.v7.widget.GridLayout$Axis.computeG roupBounds(GridLayout.java:1203)
02-03 01:04:28.900: E/AndroidRuntime(2660): at android.support.v7.widget.GridLayout$Axis.getGroup Bounds(GridLayout.java:1212)
02-03 01:04:28.900: E/AndroidRuntime(2660): at android.support.v7.widget.GridLayout$Axis.createLi nks(GridLayout.java:1221)
02-03 01:04:28.900: E/AndroidRuntime(2660): at android.support.v7.widget.GridLayout$Axis.getForwa rdLinks(GridLayout.java:1247)
02-03 01:04:28.900: E/AndroidRuntime(2660): at android.support.v7.widget.GridLayout$Axis.createAr cs(GridLayout.java:1372)
02-03 01:04:28.900: E/AndroidRuntime(2660): at android.support.v7.widget.GridLayout$Axis.getArcs( GridLayout.java:1405)
02-03 01:04:28.900: E/AndroidRuntime(2660): at android.support.v7.widget.GridLayout$Axis.computeL ocations(GridLayout.java:1576)
02-03 01:04:28.900: E/AndroidRuntime(2660): at android.support.v7.widget.GridLayout$Axis.getLocat ions(GridLayout.java:1597)
.
.
.
.



No se si esta mal implementada la libreria o si el error es en el layout o que demonios puede ser porque en StackOverFlow no veo una solucion al tema definitiva.

Alguna idea??

kriogeN
03/02/14, 08:49:32
Estás usando una versión anticuada de la Android Support V4, asegúrate que estás usando la última versión de la V4 y de la V7. A mi con la última versión de ambas los GridLayout me funcionan perfectamente en API 8 (Froyo).

manolazo
03/02/14, 11:45:27
Hola,

Como puedo saber si los que tengo no estan actualizados? a traves del android sdk manager?
como me bajo las ultimas versiones?

Edito, segun sdk manager tengo instalado el Android Support Library 19.0.1 aunque no esta instalado el android SUpport Repository. Se supone pues que ya lo tengo actualizado?

kriogeN
03/02/14, 12:06:00
Tienes que actualizar también la librería en el proyecto, no basta con bajarla con el SDK Manager.

Borra la support v4 de la carpeta Libs en el Eclipse. Y después dale con el botón derecho al proyecto y selecciona: Android Tools -> Add Support Library...

manolazo
04/02/14, 01:56:08
Hola,

Efectivamente tuve que actualizar la libreria como dices en el proyecto y ya funciona bien el GridLayout en API10.

Ahora el problema que tengo es que ObjectAnimator y otras clases de animacion requieren API11 y tengo que importar una libreria externa como nineoldandroids para que funcione en API10 (http://nineoldandroids.com/#usage).

Bueno... pues no soy capaz de importarla.
Segun la pagina del autor: This library is presented as a .jar file which you can include in the libs/ folder of your application. You can download the latest version from the GitHub downloads page.
pero al descargar el archivo esta en .zip

Al descomprimirlo hay una carpeta llamada library otra sample y otros archivos tipo readme etc
como lo hago?
Hay que crear un .jar de la carpeta library? un .jar del zip origina? No dice el autor que la librearia viene en .jar?

Un saludo.

kriogeN
04/02/14, 08:38:46
Yo también uso NineOldAndroids en mis proyectos, y lo importo como proyecto.

Añades el proyecto al Eclipse, y después en las propiedades de tu proyecto añades como librería a NineOldAndroids.

manolazo
04/02/14, 12:27:52
Buenas.

Asi lo hice con la libreria v7 , importando el proyecto y luego agreegandolo en propiedades, pero con NineOldAndroids no hay forma, no se que puedo estar haciendo mal...

1. Descomprimo el JakeWharton-NineOldAndroids-2.4.0-0-.g9f20fd7.zip en el escritorio , dentro me queda la carpeta JakeWharton-NineOldAndroids-2.4.0-0-.g9f20fd7 con dos carpetas library, sample y 6 archicos mas.

2. En eclipse en el package explorer pulso import -> Existing projects intoworkspace -> me voy al escritorio y seleccion la carpeta descomprimida ... pero eclipse me dice que no hay proyectos que importar.

Alguna idea?

manolazo
04/02/14, 14:47:38
Buienas.

Por lo que veo creo que no se importa como proyecto. He ido a la seccion de descargas y ahi aparece el .jar. Con solo copiarlo a la carpeta libs del proyecto es suficiente.

Un saludo