Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Dudas sobre Android (Programación)
#1
Invoco a los sabios del foro para una cuestión sobre programación en Android, actualmente estoy haciendo mi primera app, teniendo una función de mostrar un mapa personal (NO uno de google maps que ya hay mucha información, sinó una imagen propia) en el cual vayan saliendo botones que al pulsar encima de ellos te dan la descripción del sitio. Un ejemplo de aplicación con esta función es la app de Disney World

[Imagen: 201003-b-disney-2.jpg]

Me podríais indicar por donde tirar para llegar a hacer algo del estilo? Algún ejemplo hecho, una api de algun desarrollador que hizo algo por el estilo, o las clases a tener en cuenta,etc...vamos, lo que sea para poder ir tirando poco a poco del hilo.
Responder
#2
Nunca he programado una app de Android (no obstante en Java sí). Me imagino que pones el fondo estático y luego creas una clase para instanciar botones con la posición en pantalla y los métodos de acción al pulsarlos.

PD: Lo muevo a SAT.
[Imagen: saxw.png]
Mayor fan de Artanis :3
Responder
#3
Es un poco engorroso hacer controles por código, pero bueno, no veo otro remedio.
Consigues el layout de fondo de la vista con un findViewById, imagínate que tu vista tiene de fondo un LinearLayout con nombre backgroundLayout, pues lo pillas con un:

LinearLayout bg = (LinearLayout)findViewById(R.id.backgroundLayout);

en el onCreate de la Activity.

Luego te creas los botones como si tal cosa, y los añades a la vista. Del estilo:

Button button = new Button(this);
// Aqui haces cosas con tu boton, como ponerle un LayoutParms adecuado, ponerle margenes, ponerle el texto, etc
button .setText(R.string.button_back);
button .setLayoutParams(new ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
button.setOnClickListener(buttonClickListener);
bg.addView(button);

La información de cuando le hagas click le pasará al listener que te definas en la activity para ese botón, el que prefieras. Por ejemplo:

OnClickListener buttonClickListener = new OnClickListener() {

@Override
public void onClick(View v) {
// Pones las acciones aqui
}

}

Para saber qué botón es el que llama, tienes la vista v (una clase padre de Button), simplemente te puedes pasar objetos con setTag y recuperarlos con getTag, o cualquier otro método que te parezca.

He de decir que poner los botones en una posición fija en Android nunca es buena idea, todo tiene que ser relativo. Si por cojones necesitas valores fijos de píxeles, tienes que multiplicar la posición deseada por la densidad de píxeles. La calculas con este snippet:

DisplayMetrics dm = getResources().getDisplayMetrics();
int densityDpi = dm.densityDpi;

Bueno, te he puesto todo esto de memoria, igual hay algún typo y tal.

Saludos.
You receive loot: [Una vida]
Responder
#4
Me quito el peluquín.
[Imagen: saxw.png]
Mayor fan de Artanis :3
Responder
#5
Listeners... qué cáncer. Menos mal que ya sólo me dedico a vender condones, viagras y pastillas del día después.
[Imagen: YpRAA7X.png]
"Es como el que se mataba a pajas con U-jin y hoy en día o es Boku no Piko o ni se le levanta." - AniList
Responder
#6
gracias a todos por las respuestas. El problema que tenía principalmente, es no saber como hacer que los botones fueran apareciendo según ampliaba el mapa, pues lo normal es que si en el estadio inicial, el mapa se ajusta a la pantalla, los botones tendrían que escalar en tamaño respecto al mapa.
Al final he tenido algunos problemas, desde un out of memory exception, hasta que los imageview no se pueden ampliar de forma nativa. Estos dos problemas los he conseguido solucionar, el meter los botones tal como he dicho para que se vayan ampliando o reduciendo segun el mapa, ademas de ajustarlos a la posición de este...como creo que lo dejaremos para mas adelante u_u
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)