Android -- 自定义View小Demo,关于Rect绘制Android机器人(一)
1,关于Rect和RectF类的区别以前一直没有去关注它,刚刚了解了一下才知道都是用来确定矩形的区域,不过Rect是int类型的坐标而RectF是float类型的坐标,所以说RectF要更加精确。现在是要使用paint画出一个机器人的图片,如下图机器人的图片:

2, 看一下我们做出来的效果

再看看代码,基本上都是使用的RectF这个类来操作
package com.wangjitao.myview.view; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View; /**
* Created by wangjitao on 2016/10/10 0010.
* 主要是对矩形的使用
*/
public class MyRectFView extends View {
public MyRectFView(Context context) {
super(context);
} public MyRectFView(Context context, AttributeSet attrs) {
super(context, attrs);
} public MyRectFView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} @Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(0xFFA4C739); //绘制机器人的头部(一个半圆弧)
RectF rectF_head = new RectF(10, 10, 100, 100);
//设置偏移量
rectF_head.offset(100, 20);
//绘制曲线,且去掉最中间的圆心
canvas.drawArc(rectF_head, -10, -160, false, paint); //绘制眼睛(眼睛是两个白色的小圆)
paint.setColor(Color.WHITE);
canvas.drawCircle(135, 53, 4, paint);
canvas.drawCircle(175, 53, 4, paint); //绘制两根天线(就是两个直线)
paint.setColor(0xFFA4C739);
paint.setStrokeWidth(2);
canvas.drawLine(120, 15, 135, 35, paint);
canvas.drawLine(190, 15, 175, 35, paint); //绘制身体(一个简单的圆角矩形,使用的是两个矩形,第一个矩形是正常的矩形,第二个矩形是待圆角的矩形)
canvas.drawRect(110, 75, 200, 150, paint); //绘制矩形
RectF rectf_body = new RectF(110, 140, 200, 160);
canvas.drawRoundRect(rectf_body, 10, 10, paint); //绘制圆角矩形 //绘制胳膊(带圆弧的矩形)
RectF rectf_arm = new RectF(85, 75, 105, 140);
canvas.drawRoundRect(rectf_arm, 10, 10, paint); //绘制左侧的胳膊
rectf_arm.offset(120, 0); //设置在X轴上偏移120像素
canvas.drawRoundRect(rectf_arm, 10, 10, paint); //绘制右侧的胳膊 //绘制两条腿(也是两个带矩形的矩形)
RectF rectf_leg = new RectF(125, 150, 145, 200);
canvas.drawRoundRect(rectf_leg, 10, 10, paint); //绘制左侧的腿
rectf_leg.offset(40, 0); //设置在X轴上偏移40像素
canvas.drawRoundRect(rectf_leg, 10, 10, paint); //绘制右侧的腿
}
}
Android -- 自定义View小Demo,关于Rect绘制Android机器人(一)的更多相关文章
- Android -- 自定义View小Demo,绘制四位数随机码(一)
1,现在有这样一个需求,实现显示随机随机数可能在代码中直接很简单的就实现了,但是现在我们直接自定义View来实现这个效果,那么我们来分析一波吧,我们允许开发者自己设置这个textview的大小,颜色, ...
- Android -- 自定义View小Demo,绘制钟表时间(一)
1,昨天刚看了hongyang大神推荐的自定义时钟效果(传动门:http://www.jianshu.com/users/a45d19d680af/),效果还是不错的,自己又在github上找了找,发 ...
- Android -- 自定义View小Demo,动态画圆(一)
1,转载:(http://blog.csdn.NET/lmj623565791/article/details/24500107),现在如下图的效果: 由上面的效果图可以看到其实是一个在一个圆上换不同 ...
- Android -- 自定义View小Demo,关于Path类的使用(一)
1,在我们知道自定义view中onDraw()方法是用于绘制图形的,而Path类则是其中的一个重要的类,如下图效果: 代码也没有什么难度,直接贴出来吧 @Override protected void ...
- Android -- 自定义View小Demo(一)
1,现在要实现下图的简单效果,很简单 ,就是使用paint在canvas上绘制5中不同颜色的圆圈,效果图如下: 这是绘制基本图形一种最简单的方法,下面是它的代码 ,注释写的很详细,也就不去讲解了 M ...
- 【朝花夕拾】Android自定义View篇之(六)Android事件分发机制(中)从源码分析事件分发逻辑及经常遇到的一些“诡异”现象
前言 转载请注明,转自[https://www.cnblogs.com/andy-songwei/p/11039252.html]谢谢! 在上一篇文章[[朝花夕拾]Android自定义View篇之(五 ...
- 【朝花夕拾】Android自定义View篇之(五)Android事件分发机制(上)Touch三个重要方法的处理逻辑
前言 转载请注明,转自[https://www.cnblogs.com/andy-songwei/p/10998855.html]谢谢! 在自定义View中,经常需要处理Android事件分发的问题, ...
- 【朝花夕拾】Android自定义View篇之(七)Android事件分发机制(下)滑动冲突解决方案总结
前言 转载请声明,转自[https://www.cnblogs.com/andy-songwei/p/11072989.html],谢谢! 前面两篇文章,花了很大篇幅讲解了Android的事件分发机制 ...
- Android自定义View 画弧形,文字,并增加动画效果
一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类 B ...
随机推荐
- 在windows下创建一个Mongo服务
首先需要下载mongo的安装包 cmd.exe 这个需要用管理员权限打开 进入到mongo的安装目录 首先到C盘根据下面的命令手动创建一个 Data 文件夹 在Data 里面创建一个db文件夹一个lo ...
- js弹出确认框,挺全
一种: <a href="javascript:if(confirm('确实要删除该内容吗?'))location='http://www.google.com'">弹 ...
- 【VC6】【集成工具】将输入信息集成到VC工具中
1.首先写一个工具,可以接受外部参数, 并且输入格式必须是固定的“"%s(%d):\n", __FILE__, __LINE__”形式. 2.编译生成EXE准备进行使用: 3.在V ...
- 20145211 《Java程序设计》第6周学习总结——三笑徒然当一痴
教材学习内容总结 I/O--InputStream与OutStream Java中I/O操作主要是指使用Java进行输入,输出操作.这与c++中的iostream并无太大区别. Java所有的I/O机 ...
- Selenium2学习-007-WebUI自动化实战实例-005-解决 Firefox 版本不兼容:org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary
此文主要讲述 Java 运行 Selenium 脚本时,因 Friefox 浏览器版本与 selenium-server-standalone-x.xx.x.jar 不兼容引起的 org.openqa ...
- 解决在.ashx文件中判断Session 总是NULL的方法
实现IHttpHandler接口的同时必须继承IRequiresSessionState接口,才能拿到session public class HttpHandler: IHttpHandler, I ...
- .NET 中的委托
1.1.1 定义 委托是一种引用方法的类型.一旦为委托分配了方法,委托将与该方法具有完全相同的行为.委托方法的使用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示: //Code in C# ...
- 另一个SqlParameterCollection中已包含SqlParameter
一般情况下,我们定义的一个SqlParameter参数数组,如: SqlParameter[] parms = { new SqlParamete ...
- C语言语句分类:大致可分为六大类
#include <stdio.h> void main() { int sign, i, n; float sum; printf("please input an integ ...
- angularjs 获取地址传参
.controller('CityCtrl', function ($scope, $location,$ionicModal) { 注入location服务 $scope.name = $locat ...