- Forum-Beiträge: 6
13.05.2019, 19:46:44 via Website
13.05.2019 19:46:44 via Website
Hallo,
mir ist beim programmieren einer App ein Fehler unterlaufen.
Ich schaffe es nicht das Problem zu lösen und hoffe hier auf Hilfe.
Danke im vorraus.
Hier der Code;
package com.example.buggy;
import android.annotation.SuppressLint;
import android.graphics.drawable.Drawable;
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.buggy.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 Handler handler = new Handler();
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(kaefer);
view.setRotation((float)Winkel);
view.animate().x(xZiel).y(yZiel).setDuration(500);
// Startpunk neu setzen
xStart = xZiel;
yStart = yZiel;
}
private Runnable runnable;
{
runnable = new Runnable() {
@Override
public void run() {
moveObject(Insekt);
handler.postDelayed(this, 500);
}
};
}
@SuppressLint("ClickableViewAccessibility")
@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/2;
yStart = yUnten/2;
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;
}
});
}
}
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.