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 18/02/13, 19:13:24
Array

[xs_avatar]
pirri_mori pirri_mori no está en línea
Betatester oficial
· Votos compra/venta: (3)
 
Fecha de registro: mar 2011
Localización: España
Mensajes: 5,876
Modelo de smartphone: 1+1
Tu operador: Yoigo
Sencilla aplicacion galeria

Buenas tardes maniacos!!!!!!
Bueno,nunca me habia metido por aqui,pero ahora que lo he visto he decidido abrir este post para ver si alguien puede ayudarme.
El caso,es que estoy haciendo una sencilla galeria para un trabajo de un curso que estoy haciendo pero no consigo avanzar,me he quedado estancado.
La aplicacion consiste en mostrar unas cuantas imagenes en la parte superior de un activity dentro de un scrollview y que cuando pulses sobre una de las imagenes se abra a pantalla completa para poder hacer zoom sobre la imagen.
He planteado hacerla con solo una activity y que me muestre dos view distintas que tengo guardadas en res/layout.(main.xml y pantallacompleta.xml).
Eclipse no me marca ningun error en el codigo pero la aplicacion directamente me tira FC sin que se abra.
Os dejo lo que llevo hecho de codigo en la activity principal y los dos xml haber si podeis ayudarme.
Muchas gracias por adelantado.

ACTIVITY PRINCIPAL(unica activity)

package com.example.primeragaleria;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class Principal extends Activity implements OnClickListener {
ImageView imagen1,imagen2,imagen3,imagen4,imagen5,imagen6,im agen7;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

imagen1= (ImageView)findViewById(R.id.ivImagen1);
imagen2= (ImageView)findViewById(R.id.ivImagen2);
imagen3= (ImageView)findViewById(R.id.ivImagen3);
imagen4= (ImageView)findViewById(R.id.ivImagen4);
imagen5= (ImageView)findViewById(R.id.ivImagen5);
imagen6= (ImageView)findViewById(R.id.ivImagen6);
imagen7= (ImageView)findViewById(R.id.ivSecundaria);

imagen1.setOnClickListener(this);
imagen2.setOnClickListener(this);
imagen3.setOnClickListener(this);
imagen4.setOnClickListener(this);
imagen5.setOnClickListener(this);
imagen6.setOnClickListener(this);
imagen7.setOnClickListener(this);

}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

switch(v.getId()){

case R.id.ivImagen1:
imagen7.setImageResource(R.drawable.imagen1);

break;

case R.id.ivImagen2:
imagen7.setImageResource(R.drawable.imagen2);

break;

case R.id.ivImagen3:
imagen7.setImageResource(R.drawable.imagen3);

break;

case R.id.ivImagen4:
imagen7.setImageResource(R.drawable.imagen4);

break;

case R.id.ivImagen5:
imagen7.setImageResource(R.drawable.imagen5);

break;

case R.id.ivImagen6:
imagen7.setImageResource(R.drawable.imagen6);

break;
}

}

public void SecondLayout(){
setContentView(R.layout.pantallacompleta);
}
}

MAIN.XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
androidrientation="vertical"
android:background="@drawable/fondo">

<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:scrollbars="none">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
androidrientation="horizontal">

<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/imagen1"
android:id="@+id/ivImagen1"/>
<ImageView
android:id="@+id/ivImagen2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="5dp"
android:src="@drawable/imagen2" />

<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="5dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/imagen3"
android:id="@+id/ivImagen3"/>

<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="5dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/imagen4"
android:id="@+id/ivImagen4"/>

<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="5dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/imagen5"
android:id="@+id/ivImagen5"/>

<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="5dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/imagen6"
android:id="@+id/ivImagen6"/>

</LinearLayout>

</HorizontalScrollView>
</LinearLayout>

PANTALLA COMPLETA.XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center|center_horizontal"
androidrientation="vertical" >
<ImageView
android:id="@+id/ivSecundaria"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="matrix"
android:src="@drawable/imagen7" />
</LinearLayout>
__________________
No contesto privados,tus dudas entre todos en el foro se resuelven mejor
Responder Con Cita


  #2  
Viejo 18/02/13, 20:07:25
Array

[xs_avatar]
rinxe rinxe no está en línea
Miembro del foro
 
Fecha de registro: mar 2009
Localización: Teruel
Mensajes: 260
Modelo de smartphone: Xiaomi Mi5S
Tu operador: Yoigo
Haber si algo asi te sirve, metelo los cases del switch
setContentView(R.layout.pantallacompleta);
imagen7= (ImageView)findViewById(R.id.ivSecundaria);
imagen7.setImageResource(R.drawable.imagen1);

Lo que estabas haciendo es que ponga la imagen X en imagen 7. Pero no haces ninguna referencia a la vista PantallaCompleta.xml

No se realmente si funcionara, pero la idea que llevas es esa.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 18/02/13, 20:23:30
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
Esto:

imagen7= (ImageView)findViewById(R.id.ivSecundaria);

Lo mueves a la última línea del método SecondLayout, después de:

setContentView(R.layout.pantallacompleta);

Y justo antes del switch en el onClick llamas a SecondLayout.

Haciéndolo así te funcionará, pero tu código tiene el gran problema de que no puedes volver a la pantalla anterior al dedicarte a cambiar el setContentView. Es mucho mejor:

1) Crear una nueva Activity a la que llamas pasandole por parámetro el Drawable

o

2) Hacerlo mediante Fragments, el primer Fragment que pones es el de la galería, al tocar lo sustituyes por el nuevo Fragment. Y así al pulsar atrás volverás al Fragment anterior. Esta opción es casi lo mismo que tienes ahora sólo que mucho mejor.

Con cualquiera de las 2 opciones el código va a quedar mucho más limpio, y más organizado. Además de darte muchas más posibilidades de forma nativa.
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 18/02/13, 20:59:31
Array

[xs_avatar]
pirri_mori pirri_mori no está en línea
Betatester oficial
· Votos compra/venta: (3)
 
Fecha de registro: mar 2011
Localización: España
Mensajes: 5,876
Modelo de smartphone: 1+1
Tu operador: Yoigo
 Cita: Originalmente Escrito por rinxe Ver Mensaje
Haber si algo asi te sirve, metelo los cases del switch
setContentView(R.layout.pantallacompleta);
imagen7= (ImageView)findViewById(R.id.ivSecundaria);
imagen7.setImageResource(R.drawable.imagen1);

Lo que estabas haciendo es que ponga la imagen X en imagen 7. Pero no haces ninguna referencia a la vista PantallaCompleta.xml

No se realmente si funcionara, pero la idea que llevas es esa.
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Esto:

imagen7= (ImageView)findViewById(R.id.ivSecundaria);

Lo mueves a la última línea del método SecondLayout, después de:

setContentView(R.layout.pantallacompleta);

Y justo antes del switch en el onClick llamas a SecondLayout.

Haciéndolo así te funcionará, pero tu código tiene el gran problema de que no puedes volver a la pantalla anterior al dedicarte a cambiar el setContentView. Es mucho mejor:

1) Crear una nueva Activity a la que llamas pasandole por parámetro el Drawable

o

2) Hacerlo mediante Fragments, el primer Fragment que pones es el de la galería, al tocar lo sustituyes por el nuevo Fragment. Y así al pulsar atrás volverás al Fragment anterior. Esta opción es casi lo mismo que tienes ahora sólo que mucho mejor.

Con cualquiera de las 2 opciones el código va a quedar mucho más limpio, y más organizado. Además de darte muchas más posibilidades de forma nativa.
Muchas gracias a los dos,pero me sigue tirando forzar cierre de las dos maneras que me habeis puesto.

kriogeN,de primeras cuando me puse a hacer el ejercicio intente hacerlo con dos actividades pero el resultado no fue satisfactorio tampoco,ya te digo que estoy empezando y la verdad que todavia no tengo mucha idea.
De la primera forma que me comentas es la que intente hacer pero sin ningun resultado y la segunda de los fragments no tengo idea de lo que es,buscare informacion a ver.
Podias ponerme un ejemplo si no es mucha molestia de como pasarle la info a la segunda activity? porque no consegui hacerlo en su dia y por mas que busco info siempre acabo con el objeto bundle pasandole como parametro un string pero no veo como pasarle un recurso.
Saludos y muchas gracias.
__________________
No contesto privados,tus dudas entre todos en el foro se resuelven mejor
Responder Con Cita
  #5  
Viejo 18/02/13, 21:19:52
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
Tienes que hacerlo con el Bundle, efectivamente, y para tu caso pasar el parámetro es bastante sencillo, porque un recurso no es más que un número entero, que actúa como "puntero" al recurso real.

Es decir, tienes que pasar como parámetro un Integer que es la imagen R.drawable.loquesea y en la segunda Activity ese Integer es el que le asignas al ImageView con el método setImageResource.

El problema con los Bundle viene cuando quieres usar un objeto creado por ti, porque tienes que implementar a la clase Parcelable o Serializable (no es difícil, pero ya es trabajo extra). Creo que todos los objetos disponibles en Android ya son Parcelables, y los que son puramente Java o tienen su propio método para añadirlos al Bundle o son Serializables.

Última edición por kriogeN Día 18/02/13 a las 21:25:05.
Responder Con Cita
  #6  
Viejo 18/02/13, 21:34:22
Array

[xs_avatar]
pirri_mori pirri_mori no está en línea
Betatester oficial
· Votos compra/venta: (3)
 
Fecha de registro: mar 2011
Localización: España
Mensajes: 5,876
Modelo de smartphone: 1+1
Tu operador: Yoigo
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Tienes que hacerlo con el Bundle, efectivamente, y para tu caso pasar el parámetro es bastante sencillo, porque un recurso no es más que un número entero, que actúa como "puntero" al recurso real.

Es decir, tienes que pasar como parámetro un Integer que es la imagen R.drawable.loquesea y en la segunda Activity ese Integer es el que le asignas al ImageView con el método setImageResource.

El problema con los Bundle viene cuando quieres usar un objeto creado por ti, porque tienes que implementar a la clase Parcelable o Serializable (no es difícil, pero ya es trabajo extra). Creo que todos los objetos disponibles en Android ya son Parcelables, y los que son puramente Java o tienen su propio método para añadirlos al Bundle o son Serializables.
Perdon por ser tan zoquete jejejee,pero seria algo asi?

public void onClick(View v) {
// TODO Auto-generated method stub

switch(v.getId()){

case R.id.ivImagen1:
Intent img1 = new Intent (Principal.this,Multitouch.class);
img1.putExtra("ID", R.id.ivImagen1);
startActivity(img1);

break;

case R.id.ivImagen2:
Intent img2 = new Intent (Principal.this,Multitouch.class);
img2.putExtra("ID", R.id.ivImagen2);
startActivity(img2);

break;

case R.id.ivImagen3:
Intent img3 = new Intent (Principal.this,Multitouch.class);
img3.putExtra("ID", R.id.ivImagen3);
startActivity(img3);

break;

case R.id.ivImagen4:
Intent img4 = new Intent (Principal.this,Multitouch.class);
img4.putExtra("ID", R.id.ivImagen1);
startActivity(img4);

break;

case R.id.ivImagen5:
Intent img5 = new Intent (Principal.this,Multitouch.class);
img5.putExtra("ID", R.id.ivImagen1);
startActivity(img5);

break;

case R.id.ivImagen6:
Intent img6 = new Intent (Principal.this,Multitouch.class);
img6.putExtra("ID", R.id.ivImagen6);
startActivity(img6);

break;

}

}
}


He creado una segunda actividad que me lleve al layout de pantalla completa.xml donde tende que meter la imagen dentro del imageview que hay creado con una imagen7 que esta puesta por defecto,pero no se como debo sustituir esa imagen por la que recojo del objeto bundle.
Segunda activity Multitouch:

package com.example.primeragaleria;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;

public class Multitouch extends Activity {

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pantallacompleta);


}
}
__________________
No contesto privados,tus dudas entre todos en el foro se resuelven mejor
Responder Con Cita
  #7  
Viejo 19/02/13, 20:55:18
Array

[xs_avatar]
pirri_mori pirri_mori no está en línea
Betatester oficial
· Votos compra/venta: (3)
 
Fecha de registro: mar 2011
Localización: España
Mensajes: 5,876
Modelo de smartphone: 1+1
Tu operador: Yoigo
Re: Sencilla aplicacion galeria

Nada...no consigo recuperar el drawable del switch,no se si tengo q poner otro switch para recuperarlo o que.
Alguien me puede iluminar un poco por favor?
Saludos y gracias
__________________
No contesto privados,tus dudas entre todos en el foro se resuelven mejor
Responder Con Cita
  #8  
Viejo 19/02/13, 22:18: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
Al ImageView que tienes en la Activity Multitouch tienes que aplicarle este método:

setImageResource(getIntent().getExtras().getInt("I D"))

EDIT: ID va junto, no se porque el foro lo pone que parece que va separado.
Responder Con Cita
  #9  
Viejo 19/02/13, 22:24:38
Array

[xs_avatar]
pirri_mori pirri_mori no está en línea
Betatester oficial
· Votos compra/venta: (3)
 
Fecha de registro: mar 2011
Localización: España
Mensajes: 5,876
Modelo de smartphone: 1+1
Tu operador: Yoigo
Re: Sencilla aplicacion galeria

 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Al ImageView que tienes en la Activity Multitouch tienes que aplicarle este método:

setImageResource(getIntent().getExtras().getInt("I D"))

EDIT: ID va junto, no se porque el foro lo pone que parece que va separado.
Gracias crack,esta noche en el curro lo pruebo,q ya estoy desesperado tio.
Si funciona te debo unas cerver q me salvas el curso compi,no veas q favor me haces.
Muchas gracias otra vez.
Saludos
__________________
No contesto privados,tus dudas entre todos en el foro se resuelven mejor
Responder Con Cita
  #10  
Viejo 21/02/13, 00:13:17
Array

[xs_avatar]
pirri_mori pirri_mori no está en línea
Betatester oficial
· Votos compra/venta: (3)
 
Fecha de registro: mar 2011
Localización: España
Mensajes: 5,876
Modelo de smartphone: 1+1
Tu operador: Yoigo
Re: Sencilla aplicacion galeria

 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Al ImageView que tienes en la Activity Multitouch tienes que aplicarle este método:

setImageResource(getIntent().getExtras().getInt("I D"))

EDIT: ID va junto, no se porque el foro lo pone que parece que va separado.
Muchas gracias compi,al final he tenidio q pedir ayuda al profe a ver q me contesta,porque al cambiar al segundo activity me sigue tirando error y el logcat como que no me ayuda mucho jejje.
Gracias por todo
__________________
No contesto privados,tus dudas entre todos en el foro se resuelven mejor
Responder Con Cita
Respuesta

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



Hora actual: 22:35:03 (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 / 邮件联系 /