Mensajes: 5,134
Registro en: Jul 2007
Reputación:
131
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.
Mayor fan de Artanis :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]
Mensajes: 8,990
Registro en: May 2007
Reputación:
149
Listeners... qué cáncer. Menos mal que ya sólo me dedico a vender condones, viagras y pastillas del día después.
"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
Mensajes: 649
Registro en: May 2007
Reputación:
9
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