no tengo privilegios para añadir comentarios, por lo que estoy publicando esto como respuesta. ¿Qué quiere decir con imágenes al lado? ¿Es cuando el usuario hace clic en una imagen, debe intercambiarse con la imagen al lado? ¿También puede compartir el código donde ha agrupado estas imágenes para ver o cualquier vista de adaptador?
EDIT:
yo también tenía situación similar en los momentos en los diseños absolutos estaban vivos. ¿Qué había hecho es el siguiente:
Clase:
public class PlayScreen extends Activity implements OnTouchListener
private Panel mainPanel; // Panel for out display
boolean firstClick = false;
OnCreate:
main = new Panel(this);
// Display the panel (calls the ondraw and updates the display)
setContentView(main,new ViewGroup.LayoutParams(screenwidth,screenheight));
// Listen for touchevents on the panel
main.setOnTouchListener(this);
Panel:
class Panel extends View
{
/*
* Init a Panel to draw on and a paint to paint with
*/
Paint mBitmapPaint;
public Panel(Context context)
{
super(context);
mBitmapPaint = new Paint();
}
@Override
protected void onDraw(Canvas canvas)
{
drawImages(canvas);
}
}
drawImages:
private void drawImages(Canvas canvas)
{
for(int i = 0; i<MAX_ROWS; i++){
for(int j=0; j<MAX_COLS; j++)
{
int xpos = j*bmp.getWidth()+j*2;
int ypos = i*bmp.getHeight()+i*2;
bmp = BitmapFactory.decodeResource(mContext.getResources(), items[i][j],opts);
canvas.drawBitmap(bmp,xpos,ypos,mBitmapPaint);
clickzonex.add(xpos);
clickzoney.add(ypos);
clickzonei.add(i);
clickZonej.add(j);
}
}
}
OnTouch:
onTouch(View v, MotionEvent event) :
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
// imply logic
x = (int) event.getX();
y = (int) event.getY();
for(int i = 0; i < clickzonex.size();i++)
{
if((x>clickzonex[i]) && (x<(clickzonex[i]+ bmp.getwidth())) && (y>(clickzoney[i])) && (y<(clickzoney[i]+bmp.getHeight())))
{
// we have a click in a zone so we get the card-number in that zone
if(firstClick == false)
{
itemAti=clickzonei[i];
itemAtj = clickzonej[i];
firstclick = false;
}
else
{
FirstItemToSwap = items[clickzonei[i]][clickzonej[i]];
SecondItemToSwap = items[itemAti][itemAtj];
// Now do the swaping using any algo you like.
main.postInvalidate();
firstclick = true;
}
break;
}
}
return true;
}
else
{
return false;
}
yo sólo he tratado de mostrar que la lógica usando mi propio ejemplo y mezclarlo con su código. El punto principal es que en el método de ondraw simplemente llame a drawcanvas y en touch solo cambie los elementos [] [] y llame al método postinvalidate de la clase Panel.
http://stackoverflow.com/questions/8708324/how-to-swap-the-bitmap-images-on-view-in-android –
favor pasar por encima de enlace que he dado la implementación del código. –