开发者社区> 小弟的谷哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

}


 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android绘制(二):来用Path绘出想要的图形吧!
Android绘制(一):来用shape绘出想要的图形吧! 目录 前言 绘制线 绘制图形 绘制弧 绘制文字 组合 贝塞尔曲线 最后 前言 之前有一篇用shape进行绘制的, 但是那个偏向静态, path结合属性动画可以动起来哦~ path是什么...
1154 0
Android绘制(一):来用shape绘出想要的图形吧!
目录 前言 shape绘制 矩形 椭圆 线 环 用shape绘制SeekBar 最后 前言 在没有UI设计师的时候, 或者是想简单看下效果的时候, 用shape进行快速绘制是极好的! 官方文档.
784 0
Android官方开发文档Training系列课程中文版:OpenGL绘图之图形定义
原文地址:http://android.xsoftlab.net/training/graphics/opengl/shapes.html 使用OpenGL绘制图形的第一步就是要定义一个图形。
575 0
Android图形绘制基础(一)
mainActiviry如下: package com.cn; import android.app.Activity; import android.
565 0
关于Android图形系统的一些事实真相
现在网上满天飞的各类关于Android图像渲染的水文实在让我不爽,下面给大家一些关于Android硬件渲染的事实真相,硬件加速并非大家想的那么完美,而我们也一直在改进! 1. Android 一直在使用硬件加速。
582 0
Android Studio进行APP设计开发之矢量图及XML文件转换
Android Studio进行APP设计开发之矢量图及XML文件转换
0 0
Android studio开发APP时设置更改启动时的主界面程序
Android studio开发APP时设置更改启动时的主界面程序
0 0
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
0 0
+关注
小弟的谷哥
welcome
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载