Saturday, June 19, 2010

[android-developers] Simple drawing sample, I seem to miss something

Hi,

I must be misunderstanding something. I am trying to draw some simple
stuff, and things appear to clear (so not to display) in moments I don't
expect it. The sample included is a simplified version of a larger
application I'm porting to Android.

What I would expect is a circle in green, with a geometry (looking like
a rather silly satelite) composed out of three red polygons, drawn in
the circle.

Can anyone tell my why this is not happening ?

Thanks,

Danny

package info.backx.testdraw1;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;

public class DrawActivity extends Activity {
public DrawActivity thiz;
Panel p;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

thiz = this;

LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);

Button quit = new Button(this);
quit.setOnClickListener(mDoitClick);
quit.setText("Do it");
ll.addView(quit);

p = new Panel(this);
ll.addView(p);

setContentView(ll);
}

OnClickListener mDoitClick = new OnClickListener() {
public void onClick(View v) {
Log.e("Test", "DoitClick");

p.erase();
p.DrawPolygon(1, 4, new float[] {10, 95, 17, 88, 20, 95,
18, 97});
p.DrawPolygon(1, 4, new float[] {25, 100, 32, 103, 25,
110, 22, 103});
p.DrawPolygon(1, 4, new float[] {25, 90, 30, 95, 20,
105, 15, 100});
}
};


public class Panel extends SurfaceView implements
SurfaceHolder.Callback {
public Panel(Context context) {
super(context);
getHolder().addCallback(this);
}

@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int
arg2, int arg3) {
}

@Override
public void surfaceCreated(SurfaceHolder arg0) {
}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
}

public void DrawPolygon(int filled, int count, float[] points)
{
int i;
Path path = new Path();
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL_AND_STROKE);

Canvas canvas = getHolder().lockCanvas();
path.moveTo(points[0], points[1]);
for (i=1; i<count; i++) {
path.lineTo(points[i*2], points[i*2+1]);
}
path.close();
canvas.drawPath(path, paint);
getHolder().unlockCanvasAndPost(canvas);
}

public void erase() {
Canvas canvas = getHolder().lockCanvas();
Paint paint = new Paint();
paint.setColor(Color.GREEN);
canvas.drawCircle(20, 100, 15, paint);
getHolder().unlockCanvasAndPost(canvas);
}
}
}

--
Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment