2011-04-20 16 views
9

Al tratar de encontrar una solución para el diseño que quiero, encontré los métodos setScaleX/setScaleY, que son miembros de la clase View.¿Qué pasa con setScaleX/setScaleY?

View class doc

Mira ahora en los métodos de RelativeLayout y filtrado por el nivel API 8, ya que estoy desarrollando una aplicación para> = 2.2, dichos métodos se desvanecen. Pero al mirar "Atributos XML heredados de Class android.view.View" las propiedades android: scaleX/android: scaleY están todavía disponibles. Por desgracia tratando de utilizar estas propiedades no funciona y Eclipse dice: "Error: No se encontró identificador de recursos para el atributo 'scaleX' en el paquete 'androide'"

RelativeLayout class doc

Así que parece que la documentación está Contradictory y scaleX/scaleY no están disponibles hasta 3.0 o me falta algo?

Respuesta

3

Ok, parece que esta es una representación falsa en los documentos, como se explica here scaleX/scaleY son propiedades añadidas a la clase View con Honeycomb y por lo tanto desafortunadamente no están disponibles en Froyo.

+0

scaleX y scaleY no se tratan en ese enlace. – RichieHH

+1

Han pasado más de 3 años. Parece que el contenido de esa página ha cambiado ... – taymless

3

pues no, los Docs están derecha:

public void setScaleX (float scaleX) Since: API Level 11

Froyo es la API de nivel 8.

+0

Sí, los métodos estarán ocultos cuando seleccione cualquier nivel de API debajo de 11. Pero los Atributos XML Heredados de la Clase android.view.View no lo harán, de modo que los atributos todavía están allí, como puede ver en el documento RelativeLayout Por cierto. [Froyo es el nivel 8] (http://source.android.com/source/build-numbers.html) – taymless

+0

sí, pero está buscando el recurso de scaleX, que en este caso va a ser el manejador setScaleX, que es no disponible (como se establece durante el objetivo de compilación). Tu objetivo de compilación es 2.2 Supongo? si es 3.0 y te está dando este error, entonces es un error. –

+0

Creo que estamos hablando el uno del otro;) Mi objetivo de compilación es 2.2 y no puedo usar ni los métodos ni los atributos xml para escalar. Estaba confundido por la documentación, ya que dice que los métodos no están disponibles, pero los atributos xml sí lo están. Eso es lo que quería saber. Así que yo diría que el "error" está en la documentación ... – taymless

5

me encontré con un problema similar cuando traté de establecer la vista con un valor inicial scaleX antes de jugar las animaciones, sin embargo, view.setScaleX() se encuentra desde el Nivel 11 de API accroding a @ Dr.J.

Si desea utilizar la API de animación Honeycomb en niveles de API anteriores, intente con NineOldAndroids en http://nineoldandroids.com/. En base a esta librería de código abierto, hay una solución alternativa para proporcionar a la vista una escalaX inicial.

ObjectAnimator.ofFloat(getMyButton(), "scaleX", 1f, 0f).setDuration(1).start(); 
+0

Brilliant idea, te daría 5 +1 más si pudiera. Gracias. – JRun

1

Usar la com.nineoldandroids.view.ViewHelper para las API de más edad:

ViewHelper.setScaleY(myButton, 0.01f); 
2

NineOldAndroid es obsoleta de acuerdo con ella de Link github NineOldAndroid

Uso Android Support library en lugar de NineOldAndroid

lo que debe utilizar ViewCompat en lugar de ViewHelper

simplemente cambia:

view.setScaleX(2); 

o

ViewHelper.setScaleX(view,2); 

a:

ViewCompat.setScaleX(view,2); 

creo que sirve