开发者社区> 小弟的谷哥> 正文
阿里云
为了无法计算的价值
打开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基础入门教程
Android是一种基于Linux的自由及开放源代码的操作系统,Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
0 0
Android基础 | 关于Activity你应该明白的一切
Activity 作为一个老生常谈的话题,它是我们刚接触Android开发就遇到,虽然已有一段时间开发经验,但谈起完全搞懂Activity相关,不敢妄言,故结合个人理解及书籍参考,简单总结一下 Activity基础相关知识,其中也留出了一些有意思的问题。
0 0
Android四大组件全面解析,夯实基础。(下)
Android四大组件 lay a solid foundation 夯实基础
0 0
Android四大组件全面解析,夯实基础。(中)
Android四大组件 lay a solid foundation 夯实基础
0 0
Android四大组件全面解析,夯实基础。(上)
Android四大组件 lay a solid foundation 夯实基础
0 0
Android多线程编程——线程基础
Android沿用了Java的线程模型,一个Android应用在创建的时候会开启一个线程,我们叫它主线程或者UI线程。
0 0
移动应用程序设计基础——Android环境构建与Activity生命周期
安装智能手机开发相关软件平台,并在此基础上测试Activity的生命周期过程。 5、 完成智能手机开发平台安装、以及相关配置; 6、 并实现Hello World; 7、 添加Log日志,通过Log日志验证Ac 1、 安装JAVA JDK 2、 安装Android Studio,熟悉AS的基本操作,改变AS的字体,显示方式;截图和文字说明。 3、 建立新项目,实现Hello World。说明各个文件的作用,以及各个关键语句的作用或含义,给出程序的运行结果。 4、 设置生命周期的Log日志,分别执行相关操作
0 0
Android动画基础详析 | 概述、逐帧动画、视图动画(附诸多实际运行效果动图)
Android动画基础详析 | 概述、逐帧动画、视图动画(附诸多实际运行效果动图)
0 0
Android动画基础详析 | 属性动画基础及ValueAnimator
Android动画基础详析 | 属性动画基础及ValueAnimator
0 0
Android | AsyncTask基础梳理
Android | AsyncTask基础梳理
0 0
+关注
小弟的谷哥
welcome
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载