mainActivity如下:

package com.cn;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Activity {    private SurfaceViewTest mSurfaceViewTest;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mSurfaceViewTest=new SurfaceViewTest(MainActivity.this);        setContentView(mSurfaceViewTest);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}


SurfaceViewTest如下:

package com.cn;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.view.SurfaceHolder;import android.view.SurfaceView;//注意//1 矩形构造方法//RectF rectF=new RectF(10, 10, 100, 100);//RectF(float left, float top, float right, float bottom)//must ensure that left <= right and top <= bottom//第一个,第二个参数float left, float top//表示矩形的起始点(即左上角的点)//第一个,第二个参数float right, float bottom//表示矩形的终止点(即右下角的点)//2 绘制椭圆//并没有想象中的"直接"绘制椭圆的方法//而是在一个矩形中绘制了椭圆//因为一个矩形就定位了椭圆public class SurfaceViewTest extends SurfaceView implements SurfaceHolder.Callback{private Context mContext;private Paint mPaint;public SurfaceViewTest(Context context) {super(context);this.mContext=context;//设置生命周期回调接口的实现this.getHolder().addCallback(this);mPaint=new Paint();//抗锯齿mPaint.setAntiAlias(true);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);//-------->绘制白色矩形背景//设置画笔颜色mPaint.setColor(Color.WHITE);//绘制白色矩形背景canvas.drawRect(0, 0, 350, 450, mPaint);mPaint.reset();//-------->绘制直线mPaint.setColor(Color.RED);//设置线条宽度mPaint.setStrokeWidth(10);canvas.drawLine(30, 10, 200, 70, mPaint);mPaint.reset();//-------->绘制带边框的空心矩形(实心矩形)mPaint.setStrokeWidth(5);mPaint.setARGB(50, 0, 255, 0);//注释掉下一句即为实心矩形mPaint.setStyle(Style.STROKE);RectF rectF1=new RectF(10, 10, 150, 150);canvas.drawRect(rectF1, mPaint);mPaint.reset();//-------->绘制空心圆(实心圆)mPaint.setColor(Color.GREEN);mPaint.setAntiAlias(true);//注释掉下一句即为实心圆mPaint.setStyle(Style.STROKE);canvas.drawCircle(150, 200, 30, mPaint);mPaint.reset();//-------->绘制椭圆充满矩形mPaint.setColor(Color.YELLOW);RectF rectF2=new RectF(10, 230, 200, 300);canvas.drawOval(rectF2, mPaint);mPaint.reset();//-------->绘制文字mPaint.setColor(Color.BLACK);mPaint.setTextSize(25);//设置文字下划线mPaint.setUnderlineText(true);canvas.drawText("大家好,Hello world", 50, 340, mPaint);mPaint.reset();}//实现SurfaceHolder.Callback中的方法public void surfaceCreated(SurfaceHolder holder) {Canvas canvas=holder.lockCanvas();try {synchronized (holder) {   onDraw(canvas);}} catch (Exception e) {}finally{if (canvas!=null) {holder.unlockCanvasAndPost(canvas);}}}//实现SurfaceHolder.Callback中的方法public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}//实现SurfaceHolder.Callback中的方法public void surfaceDestroyed(SurfaceHolder holder) {}}


更多相关文章

  1. Paint类介绍
  2. 使用View绘制虚线时demo,方便复习
  3. Android跟随手指运动的小球 …
  4. Android(安卓)圆角&圆形图片
  5. Android学习之抽象类AbsListView
  6. Android(安卓)图片添加水印
  7. android.graphics.Rect类的详解
  8. 绘制直角坐标系
  9. [Android] 零碎知识汇总 - RecyclerView 顶部悬浮

随机推荐

  1. Android 中RxPermissions 的使用
  2. Android中照相机的使用
  3. 程序小白----AndroidStudio之飞机大战
  4. eclipse下载androidSDK
  5. Android之计时器(Chronometer)的用法
  6. cocos2d-x tutorials: Start with Androi
  7. Android项目开发中如何处理Home键
  8. 2010.12.27——— android service
  9. Android为按钮添加相应事件的代码
  10. Android项目研发之多分辨率适配