DrawCircle Function erstellen?

  • Antworten:4
Timer
  • Forum-Beiträge: 9

17.11.2017, 15:03:45 via Website

Hey,
ich wollte gerade machen, dass ich in dem Java Code bei einem Click auf den Bildschirm einen Kreis erstellen lasse. Dabei wollte ich drawCircle benutzen, jedoch musste ich feststellen, dass das nicht so leicht geht.
Die einzige Methode, die ich gefunden habe, ist, das über eine Funktion (canvas o.ä.) zu erstellen. Leider blicke ich da gerade null durch und finde da auch kein passendes Tutorial dazu o.ä..
Wie kann ich drawCircle benutzen? Ich erstelle in einer onClick Funktion die Variablen x, y, r und color, die ich dafür gerne benutzen würde.

MfG
Timer

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

17.11.2017, 15:09:44 via Website

Hallo Timer,

was soll denn an der onDraw und einem Canvas so kompliziert sein:
https://stackoverflow.com/questions/17954596/how-to-draw-circle-by-canvas-in-android
Du darfst halt die View erst bei ButtinClick anzeigen/laden.

Bessere alternative: Über Shapes/XML. Dann kannst du das einfach in einer DefaultView als backgroud oder so setzen:
https://stackoverflow.com/questions/3185103/how-to-define-a-circle-shape-in-an-android-xml-drawable-file

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Timer
  • Forum-Beiträge: 9

17.11.2017, 15:26:31 via Website

Ich bin recht neu in Java und wusste deswegen bei z.B. den ersten Link von dir nicht, wie ich die Funktion dann aufrufe. Und weiß es leider immer noch nicht richtig.
Wegen dem zweiten Link: Kann ich da unendlich viele unterschiedlich Große Kreise erstellen? Denn ich glaube, ich müsste für jeden Kreis manuell ein neues Shape erstellen und der Benutzer kann nicht so viele Kreise erstellen, wie er will (wenn pro Klick ein neuer Kreis erstellt wird). Oder?

— geändert am 17.11.2017, 21:42:24

Antworten
Timer
  • Forum-Beiträge: 9

17.11.2017, 21:39:45 via Website

Ich habe mich jetzt sehr lange eingelesen und habe nun bemerkt, dass ich einfach einen Fehler gemacht hab beim Erstellen von einem CustomView. Nun habe ich eine Funktion erstellt, in der die Hälfte der Bildschirm-Höhe (y) eingetragen wird und vorerst einmal x=0 (ändert sich später noch). Leider wird dann kein Kreis angezeigt. Warum?

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;

public class Medium extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_medium);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    public void ClickBack(View view) {
        finish();
    }

    public void ClickGame (View view) {
        CustomView abc = null;
        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        float y = displayMetrics.heightPixels;
        float fullX = displayMetrics.widthPixels;
        abc.onDraw(null, y, fullX);
    }
}

class CustomView extends View {
    public CustomView(Context context) {
        super(context);
    }

    protected void onDraw(Canvas canvas, float y, float fullX) {
        super.onDraw(canvas);
        float x = 0;
        y = y/2;
        float r = 20;
        Paint paint = new Paint(0xff000000);
        canvas.drawCircle(x, y, r, paint);
    }
}

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

17.11.2017, 23:10:16 via App

Vielleicht solltest du dich etwas intensiver mit den Android Grundlagen beschäftigen.

Deine View ist null und damit nicht initialisiert.
, zudem addedst du deine View nicht zum Actitvity layout.

http://www.vogella.com/tutorials/AndroidCustomViews/article.html

LG Pascal //It's not a bug, it's a feature. :) ;)

swa00

Antworten