Como mudar fotos no onTouch?
-
12-12-2019 - |
Pergunta
Sou iniciante em Android e no momento estou trabalhando em um aplicativo simples.Tenho 7 fotos e quero alterar uma por uma quando o usuário tocar na tela.Aqui está meu código, meu aplicativo trava no segundo toque na tela.Se alguém puder ajudar, ficarei grato.
public class Game extends Activity {
public TextView result;
public ImageView pirveli, meore, mesame, meotxe, mexute, meeqvse, meshvide;
int counter=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
result = (TextView) findViewById(R.id.result);
result.setText("Number of steps made: " + counter);
pirveli = (ImageView) findViewById(R.drawable.pirveli);
meore = (ImageView) findViewById(R.drawable.meore);
mesame = (ImageView) findViewById(R.drawable.mesame);
meotxe = (ImageView) findViewById(R.drawable.meotxe);
mexute = (ImageView) findViewById(R.drawable.mexute);
meeqvse = (ImageView) findViewById(R.drawable.meeqvse);
meshvide= (ImageView) findViewById(R.drawable.meshvide);
}
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==0){
result.setText("Number of steps made: " + counter);
counter++;
pirveli.setImageResource(R.drawable.meore);
}
return false;
}
E mais uma pergunta:quando toco na tela pela primeira vez, o contador interno não aumenta.como posso consertar isso?
Solução
Supondo R.drawable.meore
, R.drawable.mesame
, etc.são recursos desenháveis em seu drawable
pasta, isso deve funcionar.
public class Game extends Activity {
TextView result;
int[] drawableIds = {R.drawable.meore, R.drawablemeSame, R.drawable.meotxe, R.drawable.mexute, R.drawable.meeqvse, R.drawable.meshvide};
int counter=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
result = (TextView) findViewById(R.id.result);
result.setText("Number of steps made: " + counter);
pirveli = (ImageView) findViewById(R.drawable.pirveli);
pirveli.setOnTouchListener(this);
}
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
result.setText("Number of steps made: " + counter);
counter++;
pirveli.setImageResource( drawableIds[ drawableIds.length % counter ] );
}
return false;
}
Aqui, ele percorrerá os IDs dos recursos e alterará o ImageView
cada vez que o usuário toca nele.
Outras dicas
Primeiro de tudo, você deve usar as constantes MotionEvent, pois elas podem mudar em versões futuras da API, além disso, você precisa retornar true após um evento de toque ser tratado.
Eu também sugiro que você adicione verificações nulas para garantir.
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_DOWN){
if (result != null);
result.setText("Number of steps made: " + counter);
counter++;
if (pirveli != null)
pirveli.setImageResource(R.drawable.meore);
return true;
}
return false;
}
Um rastreamento de pilha seria de muita ajuda se nenhum desses problemas fosse seu.