Android 如何在onTouch上更改图片?
我是android的初学者,目前正在开发简单的应用程序。我有7张图片,当用户触摸屏幕时,我想逐一更改。这是我的代码,我的应用程序在第二次触摸屏幕时崩溃。如果有人能帮忙,我会很感激的Android 如何在onTouch上更改图片?,android,drawable,touch-event,ontouchlistener,Android,Drawable,Touch Event,Ontouchlistener,我是android的初学者,目前正在开发简单的应用程序。我有7张图片,当用户触摸屏幕时,我想逐一更改。这是我的代码,我的应用程序在第二次触摸屏幕时崩溃。如果有人能帮忙,我会很感激的 public class Game extends Activity { public TextView result; public ImageView pirveli, meore, mesame, meotxe, mexute, meeqvse, meshvide; int counter=0; @Overr
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计数器并没有增加。如何修复它?首先,您应该使用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;
}
如果这些都不是您的问题,堆栈跟踪将非常有用。假设
R.drawable.meore
,R.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,并在用户每次触摸它时更改
图像视图。请将StackTrace添加到您的帖子中。我想指出,更好的方法是通过BitmapFactory加载和存储位图(假设位图很小)。这样他们就不必每次都解码了。这对CPU来说更费力,但占用的内存要少得多。