首页 > 解决方案 > 在Android中使用加速度计时ImageView图像走出屏幕

问题描述

这是我的 Java 代码 我只想将 ImageView 图像限制为屏幕边界或停止走出屏幕... ScreenShort 在使用应用程序时显示输出

包 com.example.javagame;

公共类 MainActivity 扩展 AppCompatActivity 实现 SensorEventListener {

private SensorManager sensorManager;
private Sensor accelerometer;
private long lastUpdate;

ImageView mDrawable;
public static int x = 0;
public static int y = 0;
public static int z = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mDrawable = (ImageView) findViewById(R.id.checkPic);
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    lastUpdate = System.currentTimeMillis();


    int mWidth = this.getResources().getDisplayMetrics().widthPixels;
    int mHeight = this.getResources().getDisplayMetrics().heightPixels;

    Log.e("centreX", "" + mWidth);
    Log.e("centreY", "" + mHeight);
    mDrawable.setPivotX(100);
    mDrawable.setPivotY(100);

}
@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 onSensorChanged(SensorEvent event) {

    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {

        x -= (int) event.values[0];
        y += (int) event.values[1];



        mDrawable.setY(y);
        mDrawable.setX(x);

    }
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

}

程序启动时

标签: imageviewaccelerometerimage-size

解决方案


推荐阅读