|
||
|
![]() |
![]() |
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
|
||||
|
||||
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" android ![]() <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" android ![]() <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
![]() |
|
#2
|
||||
|
||||
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. |
Gracias de parte de: | ||
#3
|
||||
|
||||
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. |
Gracias de parte de: | ||
#4
|
||||
|
||||
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. ![]() 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. ![]() 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
![]() |
#5
|
||||
|
||||
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. |
#6
|
||||
|
||||
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. ![]() 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
![]() |
#7
|
||||
|
||||
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
![]() |
#8
|
||||
|
||||
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. |
#9
|
||||
|
||||
Re: Sencilla aplicacion galeria
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
![]() |
#10
|
||||
|
||||
Re: Sencilla aplicacion galeria
Gracias por todo
__________________
No contesto privados,tus dudas entre todos en el foro se resuelven mejor
![]() |
![]() |
![]() |
||||||
|