Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 13/09/14, 07:39:32
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
Obtener el Ancho de pantalla desde codigo eclipse

Muy buenas, finalmente pude implementar NineOldAndroid a mi App pero me salio un problema y no se como resolverlo, es por eso que acudo a ustedes que son expertos en programación, bueno mi problema es que tengo un ObjectAnimator y todo va bien pero queria saber como puedo obtener el ancho total de la pantalla y convertirlo en un valor negativo para usarlo como una coordenada, intente con Display getWidth() y getHeight() pero estos no funcionan y mi API minima es la 9 y no se que mas hacer, la animacion no se muestra, agradeceria mucho su ayuda.

Dejo aqui mi codigo del MainActivity
Código:
package com.JiimSoft.animacioneshoney;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

import com.nineoldandroids.animation.ObjectAnimator;

public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final View Imagen1 = findViewById(R.id.Imagen1);
        final int duration = 1 * 1000;
        //ViewHelper.setPivotX(Imagen1, Imagen1.getWidth());
        //ViewHelper.setPivotY(Imagen1, Imagen1.getHeight());
        final int AnchoTotal = Imagen1.getWidth()*(-1);
        ObjectAnimator.ofFloat(Imagen1, "rotationY", 0, 360).setDuration(duration).start();
        ObjectAnimator.ofFloat(Imagen1, "translationX", AnchoTotal, 0).setDuration(duration).start();

    }
}
Muchas gracias de antemano.
Responder Con Cita


  #2  
Viejo 13/09/14, 12:20:18
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Para obtener el tamaño de la pantalla se hace así:

Display display = getWindowManager().getDefaultDisplay();
Point tam= new Point();
display.getSize(tam);
int widthPantalla = tam.x;
int heightPantalla = tam.y;

Puedes ejecutarlo en el OnCreate sin problemas, porque no depende de que la Activity esté dibujada aún o no.

Ahora bien, en tu código no estás obteniendo el ancho de la pantalla, sino el ancho de Imagen1. El cual es correcto obtenerlo mediante Imagen1.getWidth(), PERO, únicamente cuando como mínimo el OnLayout de esa View se ha ejecutado.

¿Cuándo sabes como mínimo que ya se ha ejecutado el OnLayout de una View? En el ViewTreeObserver.OnGlobalLayoutListener.

Como ya te hablé una vez sobre esa función no hace falta que te repita como se usa, y como puedes ver es bastante útil.
Responder Con Cita
  #3  
Viejo 13/09/14, 18:52:02
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
Muchas gracias por tu respuesta, Me dice que necesito un nivel minimo de API 13 y el mio es 9, ¿No existe otra forma de hacer lo mismo pero que sea universal a partir de la API 9 u 8?. Muchas gracias de antemano.
Responder Con Cita
  #4  
Viejo 13/09/14, 19:08:09
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Pues por ese código no es, funciona desde API 1. A mi con API 8 me funciona perfectamente.
Responder Con Cita
  #5  
Viejo 13/09/14, 19:32:06
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Pues por ese código no es, funciona desde API 1. A mi con API 8 me funciona perfectamente.
Bueno esto es lo que me sale, nuevamente gracias por tu ayuda.
Imágenes Adjuntas
Tipo de Archivo: jpg Problemaasdasdasd.jpg (110.9 KB, 25 visitas)
Responder Con Cita
  #6  
Viejo 13/09/14, 20:45:11
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Vale, es cierto, lo tengo en uno que es para API 18.

Quita esa línea y usa display.getWidth() y display.getHeight() en su lugar.
Responder Con Cita
  #7  
Viejo 13/09/14, 21:24:33
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
Gracias por tu pronta respuesta pero no me funciona ni con eso, ademas ese metodo fue desaprobado desde la api 13 si no me equivoco y to creo que dara error en APIs nivel 13 o superior, no sabes que podria hacer?, gracias nuevamente.
Responder Con Cita
  #8  
Viejo 14/09/14, 00:10:34
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 Cita: Originalmente Escrito por LEAJIM_454 Ver Mensaje
Gracias por tu pronta respuesta pero no me funciona ni con eso, ademas ese metodo fue desaprobado desde la api 13 si no me equivoco y to creo que dara error en APIs nivel 13 o superior, no sabes que podria hacer?, gracias nuevamente.
Hazlo en el ViewTreeObserver.OnGlobalLayout, a ver si ahí te funciona. Y que algo esté deprecated no significa que no funcione, sino simplemente que no es recomendable usarlo. Aún así, puedes comprobar que versión de Android se está ejecutando para ejecutar un método o ejecutar otro.
Responder Con Cita
  #9  
Viejo 14/09/14, 00:58:36
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
Muchas gracias kriogeN eres un genio, me funciona a la perfección en onGlobalLayoutListener, no quiero parecer abusivo ni nada por el estilo, ya googlee y no encuentro nada de lo que me dices pero tambien lo habia pensado eso de comprobar la version de android, ¿Podrias decirme por favor como hacerlo?.
Responder Con Cita
  #10  
Viejo 14/09/14, 01:24:39
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
 Cita: Originalmente Escrito por LEAJIM_454 Ver Mensaje
comprobar la version de android, ¿Podrias decirme por favor como hacerlo?.
Te recomiendo echarle un ojo a esto: http://developer.android.com/referen...d.VERSION.html
Responder Con Cita
Gracias de parte de:
  #11  
Viejo 14/09/14, 02:56:37
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
Gracias por todas sus respuestas, lo logre haciendo esto pero aun no lo probe en un telefono con API mayor o igual a la 13 queria saber si esta bien o es que tengo que corregir algo. Muchas gracias nuevamente.

Código:
@SuppressLint("NewApi")
    @Override
    public void onGlobalLayout() {
        final View Imagen1 = findViewById(R.id.Imagen1);
        final int duration = 1 * 1000;
        
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
            Display display = getWindowManager().getDefaultDisplay();
            int AnchoDePantalla = display.getWidth();
            ObjectAnimator.ofFloat(Imagen1, "rotationY", 0, 360).setDuration(duration).start();
            ObjectAnimator.ofFloat(Imagen1, "translationX", -AnchoDePantalla, 0).setDuration(duration).start();

        }
        
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            Display display = getWindowManager().getDefaultDisplay();
            Point tam= new Point();
            display.getSize(tam);
            int AnchoDePantalla = tam.x;
            ObjectAnimator.ofFloat(Imagen1, "rotationY", 0, 360).setDuration(duration).start();
            ObjectAnimator.ofFloat(Imagen1, "translationX", -AnchoDePantalla, 0).setDuration(duration).start();
        }
    }
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 07:54:18 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /