- Forum posts: 5
Feb 15, 2017, 10:00:47 AM via Website
Feb 15, 2017 10:00:47 AM via Website
Hello,
I am a beginner in Android Studio. In the moment I create an app where I can draw some lines with canvas. It works really good, but I also want to have a menue or a button on the display. But this is very difficult.
With the order at the end of MainActivity.java
setContentView(view)
I get the graphic (canvas) to my display.
With the order at the end of MainActivity.java
setContentView(R.layout.activity_main)
I get the button to my display.
But I want to have both at my dislay, the graphic and the button. Someone gave my the tip, that I had to insert a "view" - order in the layout "activity_main.xml". But in the moment I do not have the knowledge for this.
If someone has an idea how it works, that both, the graphic and the button is at the display or how the view-order for the layout "activity_main.xml" had to look, it would be very good.
Regards, Berni
Here is the code of the MainActivity.java:
a quote goes herepackage examplecanvas.com.imagemove;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.graphics.Color;
public class MainActivity extends Activity {
public class DisplayView extends View
{
int positionX = 5;
int positionY = 15;
int positionX_a;
int positionY_a;
int positionX_aa;
int positionY_aa;
int kkk = 1;
int[] x_pos = new int[500];
int[] y_pos = new int[500];
int x_Sol, y_Sol;
int x_Text, y_Text, Text_Size;
String C_TeSize;
Paint mPaint;
DisplayView(Context context)
{
super(context);
mPaint = new Paint();
mPaint.setColor(0xFF0000FF);
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
switch(event.getAction())
{
// Ermittlung der Touch-Koordinate
case MotionEvent.ACTION_DOWN: {
positionX = (int)event.getX();
positionY = (int)event.getY();
invalidate();
}
}
return true;
}
@Override
public void onDraw(Canvas canvas)
{
// Berechnung der Textgröße und Textposition
// Auflösung ermitteln
x_Sol = getWidth();
y_Sol = getHeight();
// Textgröße und Textposition
C_TeSize = String.valueOf(x_Sol);
Text_Size = x_Sol / 23;
x_Text = x_Sol / 2 - 37 * Text_Size/4;
y_Text = Text_Size * 1;
mPaint.setTextSize(Text_Size); // Textgröße
//--------------------------------------------------------------------------------------------
System.out.println("X & Y"+positionX+":"+positionY);
//-------------------------------------------------------------------------------------------
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
canvas.drawPaint(paint);
paint.setColor(Color.RED);
canvas.drawLine( positionX_a, positionY_a, positionX, positionY, paint);
positionX_a = positionX;
positionY_a = positionY;
mPaint.setColor(Color.RED);
canvas.drawText("Android App", x_Text, y_Text, mPaint);
// Dreieck
canvas.drawLine( 130, 620, 150, 640, paint);
canvas.drawLine( 150, 640, 110, 640, paint);
canvas.drawLine( 110, 640, 130, 620, paint);
// Rollen
canvas.drawCircle(120,646,5,paint);
paint.setColor(Color.WHITE);
canvas.drawCircle(120,646,4,paint);
paint.setColor(Color.RED);
canvas.drawCircle(140,646,5,paint);
paint.setColor(Color.WHITE);
canvas.drawCircle(140,646,4,paint);
// Dreieck
paint.setColor(Color.RED);
canvas.drawLine( 430, 620, 450, 640, paint);
canvas.drawLine( 450, 640, 410, 640, paint);
canvas.drawLine( 410, 640, 430, 620, paint);
canvas.drawLine( 438, 649, 444, 640, paint);
canvas.drawLine( 426, 649, 432, 640, paint);
canvas.drawLine( 414, 649, 420, 640, paint);
// Balken
paint.setColor(Color.BLACK);
canvas.drawLine( 100, 619, 460, 619, paint);
paint.setColor(Color.RED);
canvas.drawLine( 100, 618, 460, 618, paint);
paint.setColor(Color.BLACK);
canvas.drawLine( 100, 617, 460, 617, paint);
x_pos[1] = 1;
x_pos[kkk] = +positionX;
y_pos[kkk] = +positionY;
kkk = kkk + 1;
for(int i=1; i<=10; i++)
{
// canvas.drawLine( positionX_aa, positionY_aa, x_pos[i], y_pos[i], paint);
// positionX_aa = x_pos[i];
// positionY_aa = y_pos[i];
System.out.println("Control " + i);
}
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DisplayView view = new DisplayView(this);
setContentView(view); // Here you see the graphic at the display
setContentView(R.layout.activity_main); // Here you see the button at the display
}
}