android 自定义paint,Android自定义View中Paint、Rect、Canvas介绍(一)
自定义View对于新手而言貌似是一个很复杂的东西。格式,各函数的意义。对于大神经常忘记各函数及一些参数的具体写法及意义,刚好在做一个风车效果,把过程及遇到的问题都写下来
1、如何自定义一个View
public class LeafView extends View {
private String TAG = "--------LeafView";
public LeafView(Context context,AttributeSet attrs) {
super(context,attrs);
Log.i(TAG,"我是自定义View: LeafView");
}
}
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="vertical"
android:background="@color/colorPrimary"
>
android:id="@+id/leafView"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
/>
上面就是自定义了一个LeafView最简单的写法。当然界面上什么都不会显示,除了LinearLayout的背景色
2、onDraw(Canvas canvas)方法
我们现来看下面一段代码,画出一个红色的正方形
public class MyView extends View {
private String TAG = "--------MyView";
private int width,height;
public MyView(Context context,attrs);
}
@Override
protected void onSizeChanged(int w,int h,int oldw,int oldh) {
super.onSizeChanged(w,h,oldw,oldh);
width = w;
height = h;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Rect rect = new Rect(0,width,height);
Paint paint = new Paint();
paint.setColor(Color.RED);
canvas.drawRect(rect,paint);
}
}
通过看上面代码,有一个onSizeChanged()、onDraw()、canvas.drawRect()方法,有一个Paint,Rect,Canvas类
1、onSizeChanged() 当View的大小发生改变时,会调用此方法。这里我们获取View的长和宽
2、onDraw(Canvas canvas) 这个方法就是自定义View的核心。绘制各种图形
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Rect rect = new Rect(0,paint);
}
Canvas(画布)类
可以用来实现各种图形的绘制工作,如绘制直线、矩形、圆等等
1、绘制直线:canvas.drawLine();
2、绘制矩形:canvas.drawRect();
3、绘制圆形:canvas.drawCircle();
4、绘制字符:canvas.drawText();
5、绘制图形:canvas.drawBirmap();
Paint(画笔)类
要绘制图形,首先得调整画笔,按照自己的开发需要设置画笔的相关属性
1、setAntiAlias():设置画笔的锯齿效果
2、setColor():设置画笔的颜色
3、setARGB():设置画笔的A、R、G、B值
4、setAlpha():设置画笔的Alpha值
5、setTextSize():设置字体的尺寸
6、setStyle():设置画笔的风格(空心或实心)
7、setStrokeWidth():设置空心边框的宽度
8、getColor():获取画笔的颜色
Rect(尺寸)类
设置画布大小new Rect(int left,int top,int right,int bottom)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
android 自定义paint,Android自定义View中Paint、Rect、Canvas介绍(一)相关推荐
- Android通过onDraw实现在View中绘图操作
2019独角兽企业重金招聘Python工程师标准>>> <RelativeLayout xmlns:android="http://schemas.android.c ...
- Android 触摸事件机制(三) View中触摸事件详解
本文将对View中触摸事件相关的内容进行介绍.重点介绍的是dispatchTouchEvent(), onTouchEvent()这两个API以及OnTouchListener接口. 注意:本文是基于 ...
- Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件(转)
一.概述 在App中,经常会出现侧滑菜单,侧滑滑出View等效果,虽然说Android有很多第三方开源库,但是实际上 咱们可以自己也写一个自定义的侧滑View控件,其实不难,主要涉及到以下几个要点: ...
- Android自定义View之Paint绘制文字和线
Android自定义View系列 Android自定义View注意事项 Android自定义View之图像的色彩处理 Android自定义View之Canvas Android自定义View之轻松实现 ...
- Android 自定义View 通过Paint和Canvas实现动态打勾对号效果
效果图 一开始是使用的最下面一种,发现canvas绘制线,一个点一个点绘制会非常的慢,于是改进成第一个,另外把对号单独提取出来了. 设计稿 分为一个圆和两条线,中间小的方框的边长就是代码中的hookS ...
- Android中实现Bitmap在自定义View中的放大与拖动
一基本实现思路: 基于View类实现自定义View –MyImageView类.在使用View的Activity类中完成OnTouchListener接口,实现对MotionEvent事件的监听与处理 ...
- android sqlite自定义函数,Android中自定义一个View的方法详解
本文实例讲述了Android中自定义一个View的方法.分享给大家供大家参考,具体如下: Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到 ...
- Android开发-将自定义View布局到Layout中并调用
写程序的时候,关于布局方面遇到并解决的问题 1.自定义View及其layout属性. 自定义View: [java] view plaincopy public class DrawView exte ...
- Android弹性滑动在自定义View中的高级应用
本文出自门心叼龙的博客,属于原创类容,转载请注明出处. 好久没有更新博客了,特意的看了博客最后的更新时间为2019年7月21日,今天是10月24日掐指一算已经有三个月时间了,自从上篇<开发杂谈: ...
最新文章
- Lambda表达式(简单解析)
- html交互式添加线要素,HTML5 Canvas绘制交互式交叉线
- Soring冲刺计划第三天(个人)
- jenkins基本使用
- mysql 实例复制_MYSQL教程MySQL 复制详解及简单实例
- 技术实践丨Prometheus+Grafana搭建HBase监控仪表盘
- 苹果正式推送iPadOS 13.1、iOS 13.1,修复大量Bug,速升!
- mongodb java and or,【MongoDB】-Java实现对mongodb的And、Or、In操作
- mysql备份到制定目录_写一个脚本定时自动备份mysql到指定目录
- python int_Python int()
- Atitit.java线程池使用总结attilax 1.1. 动态更改线程数量	1 1.2. code	1 三、线程池的原理 其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下
- Java 迭代实现归并排序
- 《Rework》读书笔记
- hazelcast 搭建_hazelcast Management Center 源码分析
- 红米k50至尊版参数 红米k50至尊版评测值得买吗
- Contabs日志中报错:No MTA installed, discarding output
- PO1382(贪心)
- ch.ethz.ganymed包ganymed-ssh2的使用
- 关于这些年做的 图片上传下载做的处理总结(including根据图片url上传文件)
- 问题 I: 自然数拆分Lunatic版
热门文章
- 震惊!谷歌专家爆料:Python和AI这回真的玩大了!网友:好方法!
- 亚马逊机器学习工程师面试怎么过?
- 港科大郑光廷院士问诊未来,探讨 AI 最新应用与实践
- 携号转网移动用户转出最多;微软称 8 万台电脑感染病毒;TensorFlow 2.1 rc0 发布 | 极客头条...
- 新手入坑自动驾驶,我是这么学习的......
- const 并不能加快 C 代码的运行速度?
- 吴军:站在浪潮之巅,5G 和 IoT 才是未来 10 年的浪潮 | 人物志
- 为什么说:“你不合适学Python?”醍醐灌顶!
- 一根烟上热搜,先让 AI 看看你的肺
- Google All in AI 都做了什么?