Wie kann ich eine View-Klasse in einer Activity aufrufen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Wie kann ich eine View-Klasse in einer Activity aufrufen?

    Hallo Leute

    Ich bins schon wieder^^, diesmal mit der Frage wie ich meine View Klasse in meiner Activity aufrufen kann. Ich habe eine Activity die beim drücken des Knopfes: Neues Feld aufgerufen wird, diese Activity wird dann geöffnet und beinhaltet das Layout: Feldlayout. Nun hab ich eine View-kLasse: ViewFeld die in der FeldLayout-Activity geöffnet werden soll, um benutzt zu werden.

    Kann mir jemand sagen wie ich das machen kann oder mir einen Tipp geben was ich dafür benötige?

    Feldlayout.class

    Java-Quellcode

    1. package com.example.volleyballapp;
    2. import android.os.Bundle;
    3. import android.app.Activity;
    4. import android.content.Context;
    5. import android.content.Intent;
    6. import android.content.res.Resources;
    7. import android.graphics.Canvas;
    8. import android.graphics.Color;
    9. import android.graphics.Paint;
    10. import android.graphics.Path;
    11. import android.graphics.drawable.Drawable;
    12. import android.util.AttributeSet;
    13. import android.view.Menu;
    14. import android.view.MotionEvent;
    15. import android.view.View;
    16. import android.widget.Button;
    17. public class feldlayout extends Activity{
    18. Button b7;
    19. public void onCreate(Bundle savedInstanceState) {
    20. super.onCreate(savedInstanceState);
    21. setContentView(R.layout.feldlayout);
    22. b7 = (Button) findViewById(R.id.button7);
    23. b7.setOnClickListener(handler);
    24. }
    25. View.OnClickListener handler = new View.OnClickListener(){
    26. public void onClick(View v) {
    27. if(v==b7){
    28. Intent i = new Intent(feldlayout.this, Main_Layout.class);
    29. startActivity(i);
    30. }
    31. }};}
    Alles anzeigen


    Feldlayout.xml

    Java-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:background="@color/farbe"
    6. android:orientation="vertical" >
    7. <ImageView
    8. android:id="@+id/view2"
    9. android:layout_width="match_parent"
    10. android:layout_height="match_parent"
    11. android:layout_marginBottom="70dp"
    12. android:layout_marginLeft="70dp"
    13. android:layout_marginRight="70dp"
    14. android:layout_marginTop="160dp"
    15. android:background="@drawable/whiterectangle" />
    16. <ImageView
    17. android:id="@+id/view1"
    18. android:layout_width="match_parent"
    19. android:layout_height="match_parent"
    20. android:layout_marginBottom="74dp"
    21. android:layout_marginLeft="74dp"
    22. android:layout_marginRight="74dp"
    23. android:layout_marginTop="164dp"
    24. android:background="@drawable/volleyballfeld" />
    25. <ImageView
    26. android:id="@+id/view3meterlinie"
    27. android:layout_width="match_parent"
    28. android:layout_height="4dp"
    29. android:layout_alignTop="@+id/view1"
    30. android:layout_marginLeft="70dp"
    31. android:layout_marginRight="70dp"
    32. android:layout_marginTop="100dp"
    33. android:background="@drawable/dreimeterlinie" />
    34. <ImageView
    35. android:id="@+id/netz"
    36. android:layout_width="match_parent"
    37. android:layout_height="4dp"
    38. android:layout_alignTop="@+id/view1"
    39. android:layout_marginLeft="20dp"
    40. android:layout_marginRight="20dp"
    41. android:layout_marginTop="310dp"
    42. android:background="@drawable/netz" />
    43. <ImageView
    44. android:id="@+id/view3meterliniedef"
    45. android:layout_width="match_parent"
    46. android:layout_height="4dp"
    47. android:layout_alignTop="@+id/view1"
    48. android:layout_marginLeft="70dp"
    49. android:layout_marginRight="70dp"
    50. android:layout_marginTop="520dp"
    51. android:background="@drawable/dreimeterlinie" />
    52. <Button
    53. android:id="@+id/button8"
    54. style="@style/HomeText"
    55. android:layout_width="140dp"
    56. android:layout_height="85dp"
    57. android:layout_alignParentTop="true"
    58. android:layout_alignRight="@+id/view1"
    59. android:layout_marginTop="1dp"
    60. android:background="@drawable/bnt_black"
    61. android:text="Speichern" />
    62. <Button
    63. android:id="@+id/button7"
    64. style="@style/HomeText"
    65. android:layout_width="140dp"
    66. android:layout_height="85dp"
    67. android:layout_alignLeft="@+id/view2"
    68. android:layout_alignParentTop="true"
    69. android:layout_marginTop="1dp"
    70. android:background="@drawable/bnt_black"
    71. android:onClick="home"
    72. android:text="Zurück" />
    73. <Button
    74. android:id="@+id/button9"
    75. style="@style/HomeText"
    76. android:layout_width="140dp"
    77. android:layout_height="85dp"
    78. android:layout_alignTop="@+id/button7"
    79. android:layout_marginLeft="35dp"
    80. android:layout_toRightOf="@+id/button7"
    81. android:background="@drawable/bnt_black"
    82. android:text="Linien Anzeigen" />
    83. <Button
    84. android:id="@+id/Statistik"
    85. style="@style/HomeText"
    86. android:layout_width="140dp"
    87. android:layout_height="85dp"
    88. android:layout_alignBaseline="@+id/button8"
    89. android:layout_alignBottom="@+id/button8"
    90. android:layout_marginRight="31dp"
    91. android:layout_toLeftOf="@+id/button8"
    92. android:background="@drawable/bnt_black"
    93. android:text="Statistik" />
    94. </RelativeLayout>
    Alles anzeigen


    ViewFeld.class

    Java-Quellcode

    1. package com.example.volleyballapp;
    2. import android.content.Context;
    3. import android.graphics.Canvas;
    4. import android.graphics.Color;
    5. import android.graphics.Paint;
    6. import android.graphics.Path;
    7. import android.util.AttributeSet;
    8. import android.view.MotionEvent;
    9. import android.view.View;
    10. public class ViewFeld extends View{
    11. private Paint paint = new Paint();
    12. private Path path = new Path();
    13. int count = 1;
    14. public ViewFeld(Context context, AttributeSet attrs) {
    15. super(context, attrs);
    16. // TODO Auto-generated constructor stub
    17. paint.setAntiAlias(true);
    18. paint.setStrokeWidth(6f); //Breite des Strichs
    19. paint.setColor(Color.BLACK); //Farbe des Strichs
    20. paint.setStyle(Paint.Style.STROKE);
    21. paint.setStrokeJoin(Paint.Join.ROUND);
    22. }
    23. protected void onDraw(Canvas canvas) {
    24. if ((count%2 != 0)){
    25. canvas.drawPath(path, paint);}
    26. }
    27. @Override
    28. public boolean onTouchEvent(MotionEvent event) {
    29. float eventX = event.getX();
    30. float eventY = event.getY();
    31. switch (event.getAction()) {
    32. case MotionEvent.ACTION_DOWN:
    33. count++;
    34. if(count%2 != 1){
    35. path.moveTo(eventX, eventY);
    36. return true;
    37. }
    38. if(count%2 != 0){
    39. path.lineTo(eventX, eventY);
    40. break;
    41. }
    42. case MotionEvent.ACTION_MOVE:
    43. break;
    44. case MotionEvent.ACTION_UP:
    45. // nothing to do
    46. break;
    47. default:
    48. return false;
    49. }
    50. // Schedules a repaint.
    51. invalidate();
    52. return true;
    53. }
    54. }
    Alles anzeigen

  • Binde sie doch in das Layout der Activity ein, wie jede andere View auch…

    HTML-Quellcode

    1. <com.example.volleyballapp />
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.

    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«
  • Du bist hier um was zu lernen, nicht um alles vorgekaut zu bekommen.
    Woher auch immer Du die Informationen zum Erstellen einer eigenen View bekommen hast, dort wirst Du sicherlich auch herausfinden, wie Du sie benutzt.

    (Nur für den Fall, dass es wirklich soooo schwer ist, in einer XML Datei das Wort 'ImageView' durch die Zeichenkette 'com.example.volleyballapp.ViewFeld' zu ersetzen – trotz Auto-Vervollständigung.)
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.

    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«
  • Ich hab nur das Problem gehbat, dass es mir die funktion der View, das Zeichnen nicht angezeigt, hatte, hab das so eingefügt!

    Java-Quellcode

    1. <com.example.volleyballapp.ViewFeld
    2. android:id="@+id/linienView"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:layout_alignTop="@+id/view2"
    6. />


    Die Lösung war, dass ich es am End meines Layouts einfügen musste, ich wollte nix vorgekaut bekommen, dachte nur, dass ich einen Fehler gemacht habe im Code ;))
  • Am Ende Deines Layouts?
    Du benutzt offenbar ein relatives Layout.
    Wenn Du dort 10 Views einander überlappen lässt ist es völlig verständlich, dass Du die untersten 9 unter Umständen nicht sehen kannst. ;)
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.

    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«