如何更改onTouch上的图片?

时间:2012-03-12 17:26:40

标签: android drawable ontouchevent ontouchlistener

我是Android的初学者,目前,我正在研究简单的应用程序。我有7张图片,我想在用户触摸屏幕时逐个更改。这是我的代码,我的应用程序在屏幕上的第二次触摸时崩溃。如果有人可以提供帮助,我会感激不尽。

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;
}

还有一个问题:当我第一次触摸屏幕时,int counter没有增加。我该如何解决?

2 个答案:

答案 0 :(得分:0)

首先,您应该使用MotionEvent常量,因为它们可能会在将来的API版本中更改,也需要在处理触摸事件后返回true。

我还建议您添加空检查以获得良好的衡量标准。

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;
}

如果这些都不是你的问题,那么堆栈跟踪会有很大的帮助。

答案 1 :(得分:0)

假设R.drawable.meoreR.drawable.mesame等是drawable文件夹中的可绘制资源,这应该可以。

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;
}

此处,它将循环浏览资源ID,并在每次用户触摸时更改ImageView