如何使我的应用意图到另一个屏幕时发生的事情



我有一个带有球的应用程序,使用加速度计传感器移动,现在,我希望它在球触及角落(屏幕的顶部,底部,左侧和右侧)时将我指示到屏幕"GameOver.java"。

下面是我的代码:
    package com.example.theball;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ImageView;
@SuppressWarnings("deprecation") public class MainActivity extends Activity implements SensorEventListener {
 private SensorManager sensorManager;
    private Sensor accelerometer;
    private long lastUpdate;
    AnimatedView animatedView = null;
    ShapeDrawable mDrawable = new ShapeDrawable();
    public static int x;
    public static int y;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.activity_main);
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        accelerometer = sensorManager
                .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        lastUpdate = System.currentTimeMillis();
        animatedView = new AnimatedView(this);
        setContentView(animatedView);
    }
    @Override
    protected void onResume() {
        super.onResume();
        sensorManager.registerListener(this, accelerometer,
                SensorManager.SENSOR_DELAY_GAME);
    }
    @Override
    protected void onPause() {
        super.onPause();
        sensorManager.unregisterListener(this);
    }

    @Override
    public void onAccuracyChanged(Sensor arg0, int arg1) {
        // TODO Auto-generated method stub
    }
    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            x -= (int) event.values[0];
            y += (int) event.values[1];
        }
    }
    public class AnimatedView extends ImageView {
        static final int width = 50;
        static final int height = 50;
        public AnimatedView(Context context) {
            super(context);
            // TODO Auto-generated constructor stub
            mDrawable = new ShapeDrawable(new OvalShape());
            mDrawable.getPaint().setColor(0xffffAC23);
            mDrawable.setBounds(x, y, x + width, y + height);
        }
        @Override
        protected void onDraw(Canvas canvas) {
            mDrawable.setBounds(x, y, x + width, y + height);
            mDrawable.draw(canvas);
            invalidate();
        }
    }
}

假设我对你的问题理解正确:

每次球移动时——在你的onSensorChanged(..)方法中——你需要检查x == upper x bound or lower x boundy == upper y bound or lower y bound是否…如果这些条件中的任何一个解决为true,这意味着球的中心接触边缘,GameOver.java应该启动:

编辑:

// where 0 is the lower bound and 50 is the upper bound of our canvas
if(x <= 0 || x >= 50 || y <= 0 || y >= 50) {
    Intent myIntent = new Intent(this, GameOver.class);
    startActivity(myIntent);
}

最新更新