Skip to content
Snippets Groups Projects
Commit a2fdb7fb authored by Visser, Anke's avatar Visser, Anke
Browse files

als View innerhalb einer xml-Datei erstellt; mehr dokumentiert

parent 5d7935d6
Branches master
No related tags found
No related merge requests found
......@@ -6,7 +6,7 @@ package fzj.matse.tictactoe;
*/
public class PlayingField {
private int[][] feld;
TicTacToeView view;
private TicTacToeView view;
private static final int size = 3;
public int size() {return size;}
......
......@@ -9,14 +9,14 @@ import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import android.view.*;
import android.view.View.*;
import android.support.constraint.ConstraintLayout.LayoutParams;
/**
* TODO: document your custom view class.
* custom view: Spielfeld fuer TicTacToe
*/
public class TicTacToeView extends View
{
private static final int strokew=20;
private static final int strokew=40;
private PlayingField spielfeld;
private Paint paint = new Paint();
private ArrayList<UserSelectionListener> listener = new ArrayList<UserSelectionListener>();
......@@ -28,6 +28,17 @@ public class TicTacToeView extends View
this.setOnTouchListener( (v,event) -> onTouch(event) );
}
/** Diese Methode wird nur benoetigt, wenn die View nur ein Teil des Bildschirms ist. Dann muss die gewuenschte Groesse angegeben werden */
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
int max = Math.min( width, height );
setMeasuredDimension( max, max );
}
public void setData(PlayingField s) {
spielfeld = s;
}
......@@ -43,26 +54,26 @@ public class TicTacToeView extends View
@Override
protected void onDraw(Canvas canvas)
{
// Gelben Hintergrund zeichnen
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.YELLOW);
canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
canvas.drawRect(0, 0, 500,500, paint);
// gruenes Gitternetz zeichnen
paint.setStrokeWidth(strokew);
paint.setStyle(Paint.Style.STROKE);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.GREEN);
System.out.println("hier" + getHeight() +" "+ getWidth() +","+getRight());
int width = getWidth();
int s=strokew/2;
int width = getWidth();
canvas.drawRect(s, s, width-s, getHeight()/3, paint);
canvas.drawRect(s, getHeight()*2/3, width-s, getHeight()-s, paint);
canvas.drawRect(s, s, width-s, width/3, paint);
canvas.drawRect(s, width*2/3, width-s, width-s, paint);
canvas.drawRect(s, s, width/3,width-s, paint);
canvas.drawRect(width*2/3, s, width-s, width-s, paint);
//System.out.println("hier1 "+getLeft()+" "+getRight());
canvas.drawRect(s, s, width/3, getHeight()-s, paint);
canvas.drawRect(width*2/3, s, width-s, getHeight()-s, paint);
int max = Math.min( getWidth(), getHeight() );
int fieldWidth = (max - 4*strokew) / 3 * 7/10;
// Kreise fuer die Spielsteine zeichnen
if (spielfeld != null) {
for (int i=0; i<spielfeld.size(); i++) {
for (int j=0; j<spielfeld.size(); j++) {
......@@ -73,11 +84,11 @@ public class TicTacToeView extends View
int y = (int) ((j+0.5)*len) + strokew/2;
if (value == 1) {
paint.setColor(Color.BLUE);
canvas.drawCircle(x, y, 30, paint);
canvas.drawCircle(x, y, fieldWidth/2, paint);
}
else {
paint.setColor(Color.RED);
canvas.drawCircle(x, y, 30, paint);
canvas.drawCircle(x, y, fieldWidth/2, paint);
}
}
}
......
......@@ -110,7 +110,6 @@ title __TICTACTOE's Class Diagram__\n
HostCallbacks -up-|> FragmentHostCallback
TicTacToeView -up-|> View
TicTacToeView o-- PlayingField : spielfeld
BaseSavedState -up-|> AbsSavedState
right footer
......
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:id="@+id/MainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".PlayingFieldScreen" >
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".PlayingFieldScreen">
<TextView
android:id="@+id/label1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="92dp"
android:layout_marginTop="16dp"
android:text="@string/hello_world"
android:textAppearance="@style/TextAppearance.AppCompat.Display1" />
android:textAppearance="@style/TextAppearance.AppCompat.Display1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<fzj.matse.tictactoe.TicTacToeView
android:id="@+id/spielfeld_view"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="#fff"
android:paddingBottom="0dp"
android:paddingLeft="0dp" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/label1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spielfeld_view" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment