1. Layout
File main.xml
2. Java Code
File: TENTURTActivity.java
package us.blackturtle.tenturt; import java.util.Random; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.RectF; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; public class TENTURTActivity extends Activity implements OnTouchListener{ private float x,y; private float[] xpts= {0,0,0,0,0,0,0,0,0,0}; private float[] ypts= {0,0,0,0,0,0,0,0,0,0}; private int curr; public int colors[] = {Color.RED, Color.CYAN, Color.WHITE, Color.MAGENTA, Color.YELLOW, Color.LTGRAY, Color.GREEN, Color.BLUE}; Random r; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); FunnyPanel view = new FunnyPanel(this); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); addContentView(view, params); view.setOnTouchListener(this); } private class FunnyPanel extends View{ public FunnyPanel(Context context) { super(context); r=new Random(); } @Override public void draw(Canvas canvas){ Paint p = new Paint(); int c = Color.RED; for(int i = 0; i<10; i++){ p.setStrokeWidth(2); p.setStyle(Style.STROKE); if(xpts[i]>0 && ypts[i]>0){ c = colors[r.nextInt(colors.length)]; p.setColor(c); RectF skull = new RectF(xpts[i]+33,ypts[i]-25,xpts[i]+57,ypts[i]+15); canvas.drawArc(skull, 180, 180, true, p); p.setColor(Color.BLACK); canvas.drawLine(xpts[i]+33, ypts[i]-5, xpts[i]+57, ypts[i]-5, p); p.setColor(c); canvas.drawLine(xpts[i]+35, ypts[i], xpts[i]+32, ypts[i]-6, p); canvas.drawLine(xpts[i]+52, ypts[i]+5, xpts[i]+57, ypts[i]-6, p); canvas.drawLine(xpts[i]+52, ypts[i]+5, xpts[i]+28, ypts[i]+5, p); canvas.drawLine(xpts[i]+35, ypts[i], xpts[i]+28, ypts[i], p); canvas.drawLine(xpts[i]+28, ypts[i]+5, xpts[i]+25, ypts[i], p); //eyes canvas.drawCircle(xpts[i]+40, ypts[i]-10, 3, p); canvas.drawCircle(xpts[i]+49, ypts[i]-10, 3, p); //mouth RectF mouth = new RectF(xpts[i]+38,ypts[i]-8,xpts[i]+52,ypts[i]); canvas.drawArc(mouth, 0, 180, true, p); p.setColor(Color.BLACK); canvas.drawLine(xpts[i]+38,ypts[i]-4,xpts[i]+52,ypts[i]-4,p); //front leg p.setColor(c); canvas.drawLine(xpts[i]+20, ypts[i], xpts[i]+25, ypts[i]+10, p); canvas.drawLine(xpts[i]+15, ypts[i], xpts[i]+10, ypts[i]+10, p); canvas.drawLine(xpts[i]+10, ypts[i]+10, xpts[i]+25, ypts[i]+10, p); //back leg canvas.drawLine(xpts[i]-10, ypts[i], xpts[i]-5, ypts[i]+10, p); canvas.drawLine(xpts[i]-15, ypts[i], xpts[i]-20, ypts[i]+10, p); canvas.drawLine(xpts[i]-20, ypts[i]+10, xpts[i]-5, ypts[i]+10, p); //tail canvas.drawLine(xpts[i]-20, ypts[i], xpts[i]-40, ypts[i]+10, p); canvas.drawLine(xpts[i]-30, ypts[i], xpts[i]-40, ypts[i]+10, p); //draw shell p.setStyle(Style.FILL); p.setColor(colors[r.nextInt(colors.length)]); RectF shell = new RectF(xpts[i]-30,ypts[i]-30,xpts[i]+30,ypts[i]+30); canvas.drawArc(shell, 180, 180, true, p); p.setColor(Color.BLACK); p.setTextSize(28); if(i<9) canvas.drawText(""+(i+1), xpts[i]-8, ypts[i]-4, p); else canvas.drawText(""+(i+1), xpts[i]-13, ypts[i]-4, p); } } } } public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP){ x = event.getX(); y = event.getY(); if(curr>9) curr=0; xpts[curr]=x; ypts[curr]=y; curr++; v.invalidate(); } return true; } }
Screen Shot: