自定义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介绍(一)相关推荐

  1. Android通过onDraw实现在View中绘图操作

    2019独角兽企业重金招聘Python工程师标准>>> <RelativeLayout xmlns:android="http://schemas.android.c ...

  2. Android 触摸事件机制(三) View中触摸事件详解

    本文将对View中触摸事件相关的内容进行介绍.重点介绍的是dispatchTouchEvent(), onTouchEvent()这两个API以及OnTouchListener接口. 注意:本文是基于 ...

  3. Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件(转)

    一.概述 在App中,经常会出现侧滑菜单,侧滑滑出View等效果,虽然说Android有很多第三方开源库,但是实际上 咱们可以自己也写一个自定义的侧滑View控件,其实不难,主要涉及到以下几个要点: ...

  4. Android自定义View之Paint绘制文字和线

    Android自定义View系列 Android自定义View注意事项 Android自定义View之图像的色彩处理 Android自定义View之Canvas Android自定义View之轻松实现 ...

  5. Android 自定义View 通过Paint和Canvas实现动态打勾对号效果

    效果图 一开始是使用的最下面一种,发现canvas绘制线,一个点一个点绘制会非常的慢,于是改进成第一个,另外把对号单独提取出来了. 设计稿 分为一个圆和两条线,中间小的方框的边长就是代码中的hookS ...

  6. Android中实现Bitmap在自定义View中的放大与拖动

    一基本实现思路: 基于View类实现自定义View –MyImageView类.在使用View的Activity类中完成OnTouchListener接口,实现对MotionEvent事件的监听与处理 ...

  7. android sqlite自定义函数,Android中自定义一个View的方法详解

    本文实例讲述了Android中自定义一个View的方法.分享给大家供大家参考,具体如下: Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到 ...

  8. Android开发-将自定义View布局到Layout中并调用

    写程序的时候,关于布局方面遇到并解决的问题 1.自定义View及其layout属性. 自定义View: [java] view plaincopy public class DrawView exte ...

  9. Android弹性滑动在自定义View中的高级应用

    本文出自门心叼龙的博客,属于原创类容,转载请注明出处. 好久没有更新博客了,特意的看了博客最后的更新时间为2019年7月21日,今天是10月24日掐指一算已经有三个月时间了,自从上篇<开发杂谈: ...

最新文章

  1. Lambda表达式(简单解析)
  2. html交互式添加线要素,HTML5 Canvas绘制交互式交叉线
  3. Soring冲刺计划第三天(个人)
  4. jenkins基本使用
  5. mysql 实例复制_MYSQL教程MySQL 复制详解及简单实例
  6. 技术实践丨Prometheus+Grafana搭建HBase监控仪表盘
  7. 苹果正式推送iPadOS 13.1、iOS 13.1,修复大量Bug,速升!
  8. mongodb java and or,【MongoDB】-Java实现对mongodb的And、Or、In操作
  9. mysql备份到制定目录_写一个脚本定时自动备份mysql到指定目录
  10. python int_Python int()
  11. Atitit.java线程池使用总结attilax 1.1. 动态更改线程数量 1 1.2. code 1 三、线程池的原理 其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下
  12. Java 迭代实现归并排序
  13. 《Rework》读书笔记
  14. hazelcast 搭建_hazelcast Management Center 源码分析
  15. 红米k50至尊版参数 红米k50至尊版评测值得买吗
  16. Contabs日志中报错:No MTA installed, discarding output
  17. PO1382(贪心)
  18. ch.ethz.ganymed包ganymed-ssh2的使用
  19. 关于这些年做的 图片上传下载做的处理总结(including根据图片url上传文件)
  20. 问题 I: 自然数拆分Lunatic版

热门文章

  1. 震惊!谷歌专家爆料:Python和AI这回真的玩大了!网友:好方法!
  2. 亚马逊机器学习工程师面试怎么过?
  3. 港科大郑光廷院士问诊未来,探讨 AI 最新应用与实践
  4. 携号转网移动用户转出最多;微软称 8 万台电脑感染病毒;TensorFlow 2.1 rc0 发布 | 极客头条...
  5. 新手入坑自动驾驶,我是这么学习的......
  6. const 并不能加快 C 代码的运行速度?
  7. 吴军:站在浪潮之巅,5G 和 IoT 才是未来 10 年的浪潮 | 人物志
  8. 为什么说:“你不合适学Python?”醍醐灌顶!
  9. 一根烟上热搜,先让 AI 看看你的肺
  10. Google All in AI 都做了什么?