Dein Problem liegt daran, dass du ...... mit Canvas noch nicht so vertraut bist.
Canvas bedeutet eigentlich Leinwand - nun erstmal - als ein Begriff! - nicht als Materie.
Was wir zum zeichnen brauchen ist z.B. ein Blatt Papier, .... Buntstift, ... Fertig.
Mann kann zum Canvas (also als Leinwand) -> ein Blatt Papier, Plakat, Hausfassade ... usw.
nehmen. Lediglich als Pinsel hast du vorgefertigte "Schablone" -> die draw.... Methoden., wie auch die Farben. Um die Farben kümmert sich die Paint. Ist sozusagen deine Farbpalette!
Ich verstehe nicht warum du nicht von einer "Externer" View- Klasse den gebraucht nicht machen möchtest .... ist jedoch dir überlassen!
Um eine Leinwand direkt in der Main- Klasse (Activity) zu implementieren, brauchst du einen "Leinwand Objekt" -> Canvas Objekt -> genauer gesagt ne Instanz der Canvas- klasse.
Und hier (blick in das API / Docku) hast du nur eine Möglichkeit, und zwar das Bitmap.
Canvas()
Construct an empty raster canvas.
Canvas(Bitmap bitmap)
Construct a canvas with the specified bitmap to draw into.
Wenn du also keinen gebrauch, von sehr flexiblen Möglichkeiten, welche -> Exsterne Klassen- Lösungen (bezüglich Canvas) machen möchtest, verbleibt dir nur das Bitmap als Leinwand.
Weitere Versuche / Proben, auf Canvas in der Main- Activity zu Zeichnen -> ist Zeitverschwendung.
Nun dass ist noch nicht alles!
Damit dein Bild auch in deinem RelativeLayout "Container" angezeigt wird, muss das auch dem -> RelativeLayout "Container" mitgeteilt werden; und zwar mit:
mainLayout.setBackgroundDrawable(new BitmapDrawable(bg));
// mainLayout.setBackground(new BitmapDrawable(getResources(), bg));
__________________________________________________
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.RelativeLayout;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout mainLayout = (RelativeLayout)findViewById(R.id.mainLayout);
Paint paint = new Paint();
paint.setColor(Color.GREEN);
Bitmap bg = Bitmap.createBitmap(480, 800, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bg);
canvas.drawRect(50, 50, 200, 200, paint);
mainLayout.setBackgroundDrawable(new BitmapDrawable(bg));
// mainLayout.setBackground(new BitmapDrawable(getResources(), bg));
}
}
______________________________________________________________
Ansonsten kannst du auf jeden View- Objekt mit Canvas zeichnen.
Ps.
public class DrawView extends RelativeLayout { <----- ???
— geändert am 23.11.2014, 01:52:53
Sorry für Gramatik & Stilistik Fehler.
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.