Vorgehensweise bei Visueller Componente

  • Antworten:6
jens vattel
  • Forum-Beiträge: 33

21.01.2011, 12:10:58 via Website

Hallo,
Ich bräuchte mal einen Tipp um in den Docs und Resourcen nach den richtigenThemen zu suchen.
Ich möchte ein Visuelles Objekt entwickeln, das auch seinen eigenen Code hat. So ein Objekt soll man dann in andere Views integrieren können, auch möglichst per XML.
Beispiel: Ich baue eine Spielfigur aus Images und ein paar Shapes, und will auch den Verwaltungscode möglichst mit integrieren (z.b. eine Positionierung).
Wie stelt man das am besten an? Von View ableiten? Oder gibts da eine bessere Methode?

gruss jens

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

21.01.2011, 12:38:29 via Website

View ist schon die Klasse die man benutzen sollte an der stelle, du kannst dir entsprechende Aufruf parameter "basteln" indem du eine "attrs.xml" erzeugst falls du diese mittels XML customizen möchtest was die Wiederverwertbarkeit deutlich erhöhen würde.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
jens vattel
  • Forum-Beiträge: 33

21.01.2011, 13:01:11 via Website

also kann ich dann z.b. sowas schreiben


<AbsoluteLayout>

<meinView
android:id="@+id/TV_Name"
</meinView>

</AbsoluteLayout>



und MeinView ist das eine Klasse, die ich von View ableite?

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

21.01.2011, 13:03:55 via Website

jens vattel
also kann ich dann z.b. sowas schreiben


<AbsoluteLayout>

<meinView
android:id="@+id/TV_Name"
</meinView>

</AbsoluteLayout>



und MeinView ist das eine Klasse, die ich von View ableite?

Nee so nicht, denn er kann ja nicht wissen wo deine Klasse liegt.

Das geht so:

http://developer.android.com/guide/topics/ui/custom-components.html

1<view
2 class="com.android.notepad.NoteEditor$MyEditText"
3 id="@+id/note"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 android:background="@android:drawable/empty"
7 android:padding="10dip"
8 android:scrollbars="vertical"
9 android:fadingEdge="vertical" />

Antworten
jens vattel
  • Forum-Beiträge: 33

21.01.2011, 13:44:08 via Website

Danke, so sieht es schon mal gut aus.
Noch eine Frage,

<view haarfarbe="blond"...

Wie kann ich es machen, das ich eigenen Attribute habe (hier die Haarfarbe )?

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

21.01.2011, 14:44:23 via Website

Attribute erstellen z.b mittels:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="KomponentenName">
<attr name="overlayImage" format="integer" />
<attr name="background" format="integer" />
</declare-styleable>

</resources>


Die werden der View im Konstructor dann übergeben, in der Layout XML musst du entsprechend den NameSpace angeben um dann sgaen zu können:

KomponentenName:overayImage="@drawable/dasImage"

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten