2

我真的不知道为什么这不起作用,我整晚都在尝试。ImageView当我点击它时应该减去分数。我也尝试记录它但没有成功..可能是因为我的动画以某种方式干扰?

这是我的整个 XML

<TextView
    android:id="@+id/timer1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Test" />
<TextView
    android:id="@+id/score1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Score:" />

<ImageView
    android:id="@+id/imgview1"
    android:layout_width="83dp"
    android:layout_height="131dp"
    android:clickable="true"  
    android:onClick="PeanutClick" 
    android:src="@drawable/lil_peanut"/>

这是我的源代码

public class GameView extends Activity implements OnClickListener {
MediaPlayer backgroundMusic;
TextView mTextField;
TextView mScoreField;
Point size = new Point();
Display display;
ImageView image;
int score = 0;

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gameviewlayout);
    int l;
    mTextField = (TextView) findViewById(R.id.timer1);
    mScoreField = (TextView) findViewById(R.id.score1);
    image = (ImageView) findViewById(R.id.imgview1);
    image.setOnClickListener(this);
    TranslateAnimation moveLefttoRight = new TranslateAnimation(0, 200, 0,
            0);
    moveLefttoRight.setDuration(5000);
    moveLefttoRight.setFillAfter(true);
    moveLefttoRight.setRepeatCount(-1);
    moveLefttoRight.setRepeatMode(Animation.REVERSE);
    image.startAnimation(moveLefttoRight);
    new CountDownTimer(45000, 1000) {

        public void onTick(long millisUntilFinished) {
            mTextField.setText("Seconds Remaining: " + millisUntilFinished
                    / 1000);
        }

        public void onFinish() {
            mTextField.setText("done!");
        }
    }.start();
    display = getWindowManager().getDefaultDisplay();
    display.getSize(size);
    int width = size.x;
    int height = size.y;
    backgroundMusic = MediaPlayer
            .create(GameView.this, R.raw.gallery_music);
    backgroundMusic.start();

}

public void onClick(View v) {
    if (v.getId() == R.id.imgview1)
        Log.i("MB2", "Touchy touchy!");
    PeanutClick();
}

public void PeanutClick() {
    score = score - 100;
    mScoreField.setText("Score: " + score);
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    backgroundMusic.release();

}

编辑; 发布的解决方案不起作用。我用我的整个 XML 和当前代码更新了代码。

4

3 回答 3

1
公共无效花生点击(查看视图){
    分数 = 分数 - 100;
    mScoreField.setText("分数:" + 分数);
}

公共方法应该接受一个 View 参数。

于 2013-04-24T11:41:21.320 回答
0

我不完全确定单击属性如何在 XML 上工作。但是您可以在您的 Java 文件中使用类似...

public class GameView extends Activity implements OnClickListener{
   ImageView iv;
   // whatever else

   public void onCreate(...)
   {
       // ...
       iv = (ImageView) findViewById(R.id.imageView1);
       iv.setOnClickListener(this);
   }

   public void onClick(View v)
   {
       if (v.getId() == R.id.imageView1)
          PeanutClick();
   }
}
于 2013-04-23T21:37:57.053 回答
0

感谢您的帮助,我想通了。一直在onClick工作,但仅在图像的原始位置上。

<ImageView
android:id="@+id/imgview1"
android:layout_width="83dp"
android:layout_height="131dp"
android:clickable="true"  
android:onClick="PeanutClick" 
android:src="@drawable/lil_peanut"/>

使用此 XML,只有左上角是可点击的。我通过更改 android:layout_width="83dp"android:layout_width="fill_parent"

于 2013-04-24T12:16:20.040 回答