I would like each time I press one of the buttons the rectangles on the screen to change position. Or the entire SurfaceView to refresh.
The app seems to run but the rectangles do not change position with the counter.
Thank you very much.
Hare is the xml code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<SurfaceView
android:id="@+id/surface"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
tools:context=".MainActivity" />
<Button
android:id="@+id/l"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="16dp"
android:text="L" />
<Button
android:id="@+id/r"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_alignParentTop="true"
android:layout_marginLeft="19dp"
android:text="R" />
</RelativeLayout>
Here is the Java:
package com.example.rectangle;
import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
DrawView drawView;
Paint paint = new Paint();
int w, h, edge, axis_w;
int counter;
Button add, sub;
TextView display;
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
counter = 0;
add = (Button) findViewById(R.id.r);
sub = (Button) findViewById(R.id.l);
display = (TextView) findViewById(R.id.textView1);
add.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
counter += 10;
display.setText("Total is" + counter);
}
});
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
counter -= 10;
display.setText("Total is" + counter);
}
});
SurfaceView surface = (SurfaceView) findViewById(R.id.surface);
surface.getHolder().addCallback(new Callback() {
public void surfaceCreated(SurfaceHolder holder) {
Canvas canvas = holder.lockCanvas();
w = canvas.getWidth();
h = canvas.getHeight();
edge = 5;
axis_w = 3;
// canvas.drawRect(left, top, right, bottom, paint)
// Background
paint.setColor(Color.rgb(255, 255, 255));
canvas.drawRect(0, 0, w, h, paint);
// Canvas Background Color
paint.setColor(Color.rgb(0, 206, 209));
// Borders
canvas.drawRect(0, 0, w, edge, paint);
canvas.drawRect(0, h - edge, w, h, paint);
canvas.drawRect(0, 0, edge, h, paint);
canvas.drawRect(w - edge, 0, w, h, paint);
// Axis
canvas.drawRect(((w - axis_w) / 2) + counter, 0,
((w + axis_w) / 2) + counter, h, paint);
canvas.drawRect(0, (h - axis_w) / 2, w, (h + axis_w) / 2, paint);
holder.unlockCanvasAndPost(canvas);
}
public void surfaceDestroyed(SurfaceHolder holder) {
}
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
}
});
}
}