当我触摸屏幕时,为什么我的应用程序崩溃

时间:2019-05-04 17:17:48

标签: java android api

我的应用程序有问题。 因此,当我运行它并触摸背景上的任意位置时,它会崩溃,我的 应用程序关闭。

我不知道错误在哪里,因为我多次查看了我的代码。

该应用程序来自我的Java学习书籍。 我输入了每本书中的每一行。 但是仍然找不到错误

 package com.example.buggy1;

 import android.annotation.SuppressLint;
 import android.os.Handler;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.MotionEvent;
 import android.view.View;
 import android.widget.ImageView;

 import java.util.Random;

 import static com.example.buggy1.R.drawable.kaefer;

 public class MainActivity extends AppCompatActivity {

 private int xStart, yStart, xZiel, yZiel;
 private int xLinks, yOben, xRechts, yUnten;
 private double Winkel;
 private Boolean An = true;
 private ImageView Insekt;

 private void setLimits(){
     xLinks = 35;
     yOben = 35;
     xRechts = (int) (getResources().getDisplayMetrics().widthPixels*    0.74f);
    yUnten = (int) (getResources().getDisplayMetrics().heightPixels* 0.74f);
}

private void setDestination(){
    Random Zufall = new Random();
    xZiel = Zufall.nextInt(xRechts);
    yZiel = Zufall.nextInt(yUnten);
}

private void getDirection(){
    // Distanz ermtteln
    int xDiff = xZiel - xStart;
    int yDiff = yZiel - yStart;
    // Winkel berechnen
    Winkel = Math.atan2(xDiff, -yDiff);
    Winkel = Math.toDegrees(Winkel);
}

private void moveObject(ImageView view){
    // Ziel-Position setzen
    setDestination();
    // Richtung ermitteln
    getDirection();
    // Objekt holen und drehen und verschieben
    view.setImageResource(R.drawable.kaefer);
    view.setRotation((float)Winkel);
    view.animate().x(xZiel).y(yZiel).setDuration(500);
    // Startpunk neu setzen
    xStart = xZiel;
    yStart = yZiel;
}

private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
    @Override
    public void run() {
        moveObject(Insekt);
        handler.postDelayed(this, 500);
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Komponente
    ImageView Insekt = (ImageView) findViewById(R.id.imageView);
    final ImageView Hgrund = (ImageView) findViewById(R.id.imageView2);
    // Displaygrenzen
    setLimits();

    xStart = xRechts/4;
    yStart = yUnten/4;

    Hgrund.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
           // Auftrag übernehmen/ausführen
            if (An)
                handler.post(runnable);
           // Auftrag beenden
            else
                handler.removeCallbacks(runnable);
           // Umschalten
            An = !An;
           // Rückgabewert
           return false;
            }
        });
    }
 }

0 个答案:

没有答案