Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 13/09/14, 07:39:32
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de Dexafree
Dexafree Dexafree no está en línea
Mr. FAQMan
Mensajes: 8,021
Compra y venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Versión de ROM: Android 4.1.1 Jelly Bean
Versión de Radio: KF1
Tu operador: Movistar
Mencionado: 65 comentarios
Tagged: 2 hilos
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
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 15:54:53 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007