Grafik erscheint nicht auf dem Dispplay

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

  • Grafik erscheint nicht auf dem Dispplay

    Hallo,

    versuche gerade eine APP zu entwickeln, mit der man grafische Darstellungen mit Canvas machen kann.

    Leider erscheint die Grafik nicht auf dem Display. Das Menue (PopUp-Fenster) funktioniert.

    Kompilieren läuft auch ohne Fehler durch - bloß eben keine Grafik!

    MainActivity.java und activity_main.xml sind eingefügt.


    Gruß

    Berni

    Quellcode

    1. package com.example.pastorek.myapplication1_1;
    2. import android.content.Intent;
    3. import android.support.v7.app.AppCompatActivity;
    4. import android.os.Bundle;
    5. import android.widget.Button;
    6. import android.app.Activity;
    7. import android.content.Context;
    8. import android.graphics.Canvas;
    9. import android.graphics.Paint;
    10. import android.view.MotionEvent;
    11. import android.graphics.Color;
    12. import android.view.View;
    13. import android.widget.EditText;
    14. public class MainActivity extends AppCompatActivity {
    15. // public class MainActivity extends Activity {
    16. Paint paint;
    17. Canvas c;
    18. EditText editText;
    19. @Override
    20. protected void onCreate(Bundle savedInstanceState) {
    21. super.onCreate(savedInstanceState);
    22. setContentView (R.layout.activity_main);
    23. //--------------------------------------------------------------------
    24. // Grafikbefehle
    25. // editText = (EditText) findViewById (R.id.editText1);
    26. // display = (TextView)findViewById(R.id.display);
    27. c = new Canvas();
    28. c.drawColor(Color.CYAN);
    29. paint = new Paint();
    30. paint.setAntiAlias(true);
    31. paint.setColor(Color.RED);
    32. paint.setStyle(Paint.Style.STROKE);
    33. paint.setStrokeWidth(4.5f);
    34. c.drawLine( 10, 10, 100, 100, paint);
    35. c.drawCircle(50,50,30,paint);
    36. //-------------------------------------------------------------------
    37. DisplayView view = new DisplayView(this);
    38. setContentView(view);
    39. setContentView(R.layout.activity_main);
    40. Button b = (Button) findViewById(R.id.button);
    41. b.setOnClickListener(new View.OnClickListener() {
    42. @Override
    43. public void onClick(View v) {
    44. startActivity(new Intent(MainActivity.this,Pop.class));
    45. }
    46. });
    47. }
    48. //-----------------------------------------------------------
    49. // Grafikbefehle
    50. public class DisplayView extends View
    51. {
    52. int positionX = 5;
    53. int positionY = 15;
    54. int positionX_a;
    55. int positionY_a;
    56. String C_TeSize;
    57. Paint mPaint;
    58. public DisplayView(Context context) {
    59. super(context);
    60. mPaint = new Paint();
    61. mPaint.setColor(0xFF0000FF);
    62. }
    63. @Override
    64. public boolean onTouchEvent (MotionEvent event){
    65. switch (event.getAction())
    66. {
    67. case MotionEvent.ACTION_DOWN:{
    68. positionX = (int) event.getX();
    69. positionY = (int) event.getY();
    70. invalidate();
    71. }
    72. }
    73. return true;
    74. }
    75. public void onDraw (Canvas canvas){
    76. System.out.println("X & Y"+positionX+":"+positionY);
    77. Paint paint = new Paint();
    78. paint.setStyle(Paint.Style.FILL);
    79. paint.setColor(Color.WHITE);
    80. canvas.drawPaint(paint);
    81. paint.setColor(Color.RED);
    82. canvas.drawLine( positionX_a, positionY_a, positionX, positionY , paint);
    83. positionX_a = positionX;
    84. positionY_a = positionX;
    85. }
    86. // protected void onCreate(Bundle savedInstanceState) {
    87. // public void onCreate (Bundle savedInstanceState) {
    88. // super.onCreate ( savedInstanceState );
    89. // DisplayView view = new DisplayView(this);
    90. // setContentView(view);
    91. // }
    92. }
    93. }
    Alles anzeigen


    XML-Quellcode: activity_main.xml

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:tools="http://schemas.android.com/tools"
    4. android:id="@+id/activity_main"
    5. android:layout_width="match_parent"
    6. android:layout_height="match_parent"
    7. android:paddingBottom="@dimen/activity_vertical_margin"
    8. android:paddingLeft="@dimen/activity_horizontal_margin"
    9. android:paddingRight="@dimen/activity_horizontal_margin"
    10. android:paddingTop="@dimen/activity_vertical_margin"
    11. tools:context="com.example.pastorek.myapplication1_1.MainActivity">
    12. <Button
    13. android:text="POP UP"
    14. android:layout_width="wrap_content"
    15. android:layout_height="wrap_content"
    16. android:id="@+id/button"
    17. android:layout_alignParentTop="true"
    18. android:layout_alignParentLeft="true"
    19. android:layout_alignParentStart="true" />
    20. </RelativeLayout>
    Alles anzeigen
  • Moin,

    und was passiert, wenn du in diesem kleinen Ausschnitt ...

    Java-Quellcode

    1. [...]
    2. public void onDraw (Canvas canvas){
    3. System.out.println("X & Y"+positionX+":"+positionY);
    4. Paint paint = new Paint();
    5. paint.setStyle(Paint.Style.FILL);
    6. paint.setColor(Color.WHITE);
    7. canvas.drawPaint(paint);
    8. paint.setColor(Color.RED);
    9. canvas.drawLine( positionX_a, positionY_a, positionX, positionY , paint);
    10. positionX_a = positionX;
    11. positionY_a = positionX;
    12. }
    13. [...]
    Alles anzeigen


    bei positionY_a = positionX das positionX in positionY änderst? :)
    Mit freundlichsten Grüßen
    Irithyll
  • Hallo,


    erstmal besten Dank für die Antworten und Entschuldigung für das “Dispplay“ mit “pp“ in der Überschrift. Es liegt an meiner alten Tastatur.


    Irithyll hat Recht, positionX muss hier in positionY geändert werden – hat aber auch nichts gebracht. Es kommt immer noch keine Grafik im Display an.


    Was Facebamm meint habe ich leider noch nicht herausgefunden.


    Ich denke, es muss in der “activity_main.xml“ anders aufgerufen werden, hatte bloß noch nicht die Zeit mir entsprechende Kenntnisse anzueignen.

    Wenn jemand eine Idee hat, wie es funktionieren könnte, dass das Menue und die Grafik im Display erscheinen, wäre ich sehr dankbar.



    Viele Grüße,

    Berni
  • Hoii.

    @Facebamm meint Folgendes:

    Du könntest das hier ...

    Java-Quellcode

    1. //--------------------------------------------------------------------
    2. // Grafikbefehle
    3. // editText = (EditText) findViewById (R.id.editText1);
    4. // display = (TextView)findViewById(R.id.display);
    5. c = new Canvas();
    6. c.drawColor(Color.CYAN);
    7. paint = new Paint();
    8. paint.setAntiAlias(true);
    9. paint.setColor(Color.RED);
    10. paint.setStyle(Paint.Style.STROKE);
    11. paint.setStrokeWidth(4.5f);
    12. c.drawLine( 10, 10, 100, 100, paint);
    13. c.drawCircle(50,50,30,paint);
    14. //-------------------------------------------------------------------
    Alles anzeigen



    ... so darstellen ...

    Java-Quellcode

    1. //region Grafikbefehle
    2. // editText = (EditText) findViewById (R.id.editText1);
    3. // display = (TextView)findViewById(R.id.display);
    4. c = new Canvas();
    5. c.drawColor(Color.CYAN);
    6. paint = new Paint();
    7. paint.setAntiAlias(true);
    8. paint.setColor(Color.RED);
    9. paint.setStyle(Paint.Style.STROKE);
    10. paint.setStrokeWidth(4.5f);
    11. c.drawLine( 10, 10, 100, 100, paint);
    12. c.drawCircle(50,50,30,paint);
    13. //endregion
    Alles anzeigen
    Hierbei geht's eher um eine optische und funktionale Anpassung als um die Lösung deines Problems. :)
    (stackoverflow.com/a/26872292)

    [...]

    Wie sieht's damit aus? Aufklappen, um den gesamten Code zu sehen, der untere Block ...

    Java-Quellcode

    1. protected void onCreate(Bundle savedInstanceState) {
    2. super.onCreate(savedInstanceState);
    3. setContentView (R.layout.activity_main);
    4. //--------------------------------------------------------------------
    5. // Grafikbefehle
    6. // editText = (EditText) findViewById (R.id.editText1);
    7. // display = (TextView)findViewById(R.id.display);
    8. c = new Canvas();
    9. c.drawColor(Color.CYAN);
    10. paint = new Paint();
    11. paint.setAntiAlias(true);
    12. paint.setColor(Color.RED);
    13. paint.setStyle(Paint.Style.STROKE);
    14. paint.setStrokeWidth(4.5f);
    15. c.drawLine( 10, 10, 100, 100, paint);
    16. c.drawCircle(50,50,30,paint);
    17. //-------------------------------------------------------------------
    18. /*
    19. Liegt hier vielleicht das Problem? Kommentiere die unten stehenden Zeile(n) testweise aus ...
    20. DisplayView view = new DisplayView(this);
    21. setContentView(view);
    22. setContentView(R.layout.activity_main);
    23. */
    24. [...]
    Alles anzeigen
    Mit freundlichsten Grüßen
    Irithyll
  • Hallo Irithyll,

    hatte jetzt 'ne Weile keine Zeit. Ich habe das ausprobiert, was Du gepostet hast.

    Kompilieren funktioniert, aber wie immer: Es funktioniert entweder die Grafik oder das Menue (Button).

    Sowie ich den Befehl:

    setContentView(R.layout.activity_main);

    freischalte, erscheint nur der Button und keine Grafik.

    Wenn ich

    setContentView(view);freischalte, dann erscheint nur die Grafik, aber kein Button!!!Es soll aber irgendwie beides erscheinen.Wenn jemand eine Idee hat oder ein Beispiel kennt, wäre ich sehr dankbar.Gruß,Berni