Android图形绘制基础(二)

简介: mainActivity如下: package com.cn; import android.os.Bundle; import android.

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);
	}

	@Override
	protected 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) {
	}

}


 

 

相关文章
|
4月前
|
XML 搜索推荐 Java
Android App开发之自定义图形中位图与图形互转、剪裁图形内部区域、给图形添加部件的讲解及实战(附源码 简单易懂)
Android App开发之自定义图形中位图与图形互转、剪裁图形内部区域、给图形添加部件的讲解及实战(附源码 简单易懂)
54 0
|
4月前
|
XML 前端开发 Java
Android Studio App自定义控件中自定义视图的绘制讲解及实战(附源码 包括自定义绘制各种图形)
Android Studio App自定义控件中自定义视图的绘制讲解及实战(附源码 包括自定义绘制各种图形)
74 1
|
4月前
|
前端开发 API vr&ar
Android开发之OpenGL绘制三维图形的流程
即将连载的系列文章将探索Android上的OpenGL开发,这是一种用于创建3D图形和动画的技术。OpenGL是跨平台的图形库,Android已集成其API。文章以2D绘图为例,解释了OpenGL的3个核心元素:GLSurfaceView(对应View)、GLSurfaceView.Renderer(类似Canvas)和GL10(类似Paint)。通过将这些结合,Android能实现3D图形渲染。文章介绍了Renderer接口的三个方法,分别对应2D绘图的构造、测量布局和绘制过程。示例代码展示了如何在布局中添加GLSurfaceView并注册渲染器。
175 1
Android开发之OpenGL绘制三维图形的流程
|
4月前
|
XML 编解码 Android开发
Android Studio App开发入门之图形定制Drawable的讲解及实战(附源码 超详细必看)
Android Studio App开发入门之图形定制Drawable的讲解及实战(附源码 超详细必看)
89 1
|
4月前
|
XML Java Android开发
【Android App】勾勒出三维立方体和球体以及它们的转动图形讲解及实战(附源码和演示视频 超详细)
【Android App】勾勒出三维立方体和球体以及它们的转动图形讲解及实战(附源码和演示视频 超详细)
90 0
|
搜索推荐 Java Linux
Android基础入门教程
Android是一种基于Linux的自由及开放源代码的操作系统,Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
234 0
|
XML 存储 安全
Android四大组件全面解析,夯实基础。(下)
Android四大组件 lay a solid foundation 夯实基础
195 0
|
Java Android开发
移动应用程序设计基础——Android环境构建与Activity生命周期
安装智能手机开发相关软件平台,并在此基础上测试Activity的生命周期过程。 5、 完成智能手机开发平台安装、以及相关配置; 6、 并实现Hello World; 7、 添加Log日志,通过Log日志验证Ac 1、 安装JAVA JDK 2、 安装Android Studio,熟悉AS的基本操作,改变AS的字体,显示方式;截图和文字说明。 3、 建立新项目,实现Hello World。说明各个文件的作用,以及各个关键语句的作用或含义,给出程序的运行结果。 4、 设置生命周期的Log日志,分别执行相关操作
283 0
移动应用程序设计基础——Android环境构建与Activity生命周期
|
存储 缓存 Java
Android OpenGL 显示基本图形及相关概念解读
Android OpenGL 显示基本图形及相关概念解读
Android OpenGL 显示基本图形及相关概念解读
|
XML 存储 移动开发
Android基础 | 关于Activity你应该明白的一切
Activity 作为一个老生常谈的话题,它是我们刚接触Android开发就遇到,虽然已有一段时间开发经验,但谈起完全搞懂Activity相关,不敢妄言,故结合个人理解及书籍参考,简单总结一下 Activity基础相关知识,其中也留出了一些有意思的问题。
191 0