1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Canvas + extra Textviews etc.

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von R3L, 29.01.2010.

  1. R3L, 29.01.2010 #1
    R3L

    R3L Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    26.01.2010
    Hallo zusammen,

    kurz und knackig:
    Zeichnen mit Canvas klappt. Mit Textviews, Buttons etc. arbeiten klappt.

    Wenn ich aber ganz oben nen Button möchte und darunter erst die Fläche zum Zeichnen ... wie kann man das kombinieren? Ich tippe mal darauf, die Zeichenfläche vorher via XML zu definieren und dann nur noch zuzuweisen, aber welche(s?) View ist dafür zuständig?
    In den bisher gefundenen Tutorials gab es entweder das eine oder das andere.
    Für Anregungen bin ich dankbar.

    Beste Grüße und danke,
    R.
     
  2. scrats, 30.01.2010 #2
    scrats

    scrats Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    25.01.2010
    Tja ich hab das so geregelt (dank der Hilfe des Forums):

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical" 
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      >
     <FrameLayout
      android:orientation="horizontal"
      android:padding="5dip" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" >
    
    <TextView>
    <Button>
    ...
    </FrameLayout>
    
    
    <LinearLayout android:id="@+id/LinearLayout01" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </LinearLayout>
    
    
    
    </LinearLayout>
    
    
    Dabei ist das erste LinearLayout dazu da, dass die im FrameLayout verbauten Buttons und Texte oberhab sind.
    Das 2te LinearLayout bekommt eine ID!!!

    Jetzt zur Activity:
    Code:
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.xxx);
            feld = new Feld(this);
            LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout01);
            layout.addView(feld);
            
        }
    
    was wichtig an feld ist:
    Code:
    public class Feld extends View {
       public Feld(Context context){
         
       }
    }
    
    es muss von View erben.

    so hab ich es gemacht und funktioniert recht gut. Vielleicht hat jemand was besseres...
     
  3. Zonnex, 30.01.2010 #3
    Zonnex

    Zonnex Fortgeschrittenes Mitglied

    Beiträge:
    431
    Erhaltene Danke:
    49
    Registriert seit:
    12.09.2009
    moin,

    hab das auch so wie mein Vorredner gemacht. Durch die Methode kannst du die genau Position und Größe des Views über das Layout festlegen und mehrere Views überlagern z.B. Background -> Layer1 -> Layer2 etc. dann muss das Gerät den Background zum Beispiel nur einmal beim starten zeichnen

    mfg
     
  4. R3L, 30.01.2010 #4
    R3L

    R3L Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    26.01.2010
    Ah sehr gut, vielen Dank.
    Hat prima geklappt.

    Meine Klasse erbt allerdings von SurfaceView, aber läuft ja trotzdem :)
     
  5. garak, 30.01.2010 #5
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,795
    Registriert seit:
    12.12.2009
    SurfaceView erweitert ja die Klasse View, deshalb ist das vollkommen in Ordnung.
     
  6. t9cpu, 07.02.2013 #6
    t9cpu

    t9cpu Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    07.02.2013
    Hallo !

    Ich bin neu hier und wollte genau das obere Beispiel über Netbeans 7.2.1 auf meinem Galaxy S2 umsetzen aber das funktioniert bei mir nicht.
    Netbeans stört sich an der Klassendeklaration im dritten Teil.
    Folgende Fehlermeldung wird ausgespuckt:
    error: no suitable constructor found for View()
    {
    constructor View.View(Context,AttributeSet,int) is not applicable
    (actual and formal argument lists differ in length)
    constructor View.View(Context,AttributeSet) is not applicable
    (actual and formal argument lists differ in length)
    constructor View.View(Context) is not applicable
    (actual and formal argument lists differ in length)
    1 error

    Kann mir da jemand weiterhelfen ?

    Gruß Uli
     

Diese Seite empfehlen