Android自定义View学习笔记03

Android自定义View学习笔记03

预备知识

BitMap

BitMap位图类,其中有一个嵌套类叫Bitmap.Config,内部有四个枚举值。这个类的作用是定义位图存储质量,即存储一个像素的位数,以及是否能显示透明、半透明颜色(Possible bitmap configurations. A bitmap configuration describes how pixels are stored. This affects the quality (color depth) as well as the ability to display transparent/translucent colors)。

A 透明度 R 红色 G 绿色 B 蓝色

Bitmap.Config ALPHA_8 只存储透明度,其他颜色不存储

Bitmap.Config ARGB_4444 16 每个像素 占四位

Bitmap.Config ARGB_8888 32 每个像素 占八位

Bitmap.Config RGB_565 16 R占5位 G占6位 B占5位 没有透明度(A)

参考博客

矩形类

  1. Rect类,通过定义四条(左、上、右、下)边来组成一个矩形。别扭的是,参数代表的是每条边距离x轴或者y轴的距离。
  2. RectF类,同上,不同的是Rect的参数类型的整形,带F的是单精度浮点数。另外Rect对象可以作为参数来构造RectF对象。

一个很重要的类BitmapShader位图渲染器

BitmapShader位图渲染器,用位图当做纹理来画图,通过设置模式来设置不同的渲染效果(Shader used to draw a bitmap as a texture. The bitmap can be repeated or mirrored by setting the tiling mode)。

  • 构造方法BitmapShader(Bitmap bitmap, Shader.TileMode tileX, Shader.TileMode tileY),参数分别是,当做纹理的位图、横轴方向的渲染方式、纵轴方向的渲染方式。
  • 有个嵌套类Shader.TileMode 瓦片模式,里面定义了三个枚举类型的变量。

CLAMP 如果渲染器超出了原始边界范围,会复制原始边界的颜色在范围外渲染。

REPEAT如果显示范围大于图片的大小,则会横向和纵向的重复渲染图片,进行平铺。

MIRROR和上一个类似,只不过是用镜像方式进行平铺。

一般用的时候会用第一个参数。

Paint

该类内有一个设置Shader渲染器对象的方法public Shader setShader(Shader shader)来设置渲染器。

Matrix矩阵类

Matrix内部存有一个3*3的矩阵,里面存有变形信息,没有构造函数。只能通过具体的方法来设置相关参数。这个矩阵被分为四部分,分别是比例旋转、平移、等比例变换、透视变换。运算原理就是矩阵的变换,参考Android Matrix理论与应用详解

- 设置缩放的方法public void setScale(float sx,float sy),参数是水平缩放比例和竖直缩放比例。

未完

时间: 2024-10-18 13:25:35

Android自定义View学习笔记03的相关文章

Android自定义View学习笔记04

Android自定义View学习笔记04 好长时间没有写相关的博客了,前几周在帮学姐做毕设,所以博客方面有些耽误.过程中写了一个类似wp的磁贴的view,想再写个配套的layout,所以昨天看了一下自定义viewGroup的相关知识-晚上睡觉想了一下可行性不是很高-代码量还不如直接自己在xml上写来得快,速度上也是个问题.今天看了一下张鸿洋老师的Android 自定义View (三) 圆环交替 等待效果这篇博文,再加上前一段时间看到的一幅图,结合之前写的一个圆形imageView的实现博文And

Android自定义view学习笔记02

Android自定义view学习笔记02 本文代码来自于张鸿洋老师的博客之Android 自定义View (二) 进阶 学习笔记,对代码进行些许修改,并补充一些在coding过程中遇到的问题.学习的新东西. 相关代码 //CustomImageView.java package mmrx.com.myuserdefinedview.textview; import android.content.Context; import android.content.res.TypedArray; im

Android 自定义View学习(2)

上一篇学习了基本用法,今天学一下稍微复杂一点的,先看一下效果图 为了完成上面的效果还是要用到上一期开头的四步 1,属性应该要有颜色,要有速度 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="speed" format="integer" /> <attr name="circleColor"

【转载】自定义View学习笔记之详解onMeasure

网上对自定义View总结的文章都很多,但是自己还是写一篇,好记性不如多敲字! 其实自定义View就是三大流程,onMeasure.onLayout.onDraw.看名字就知道,onMeasure是用来测量,onLayout布局,onDraw进行绘制. 那么何时开始进行View的绘制流程,这就要从ViewRoot和DecorView的概念说起. ViewRoot对应于ViewRootImpl类,是连接WindowManager和DecorView的纽带,View的三大绘制流程都是通过ViewRoo

Android——自定义View(学习Android开发与艺术探索)

ViewRoot和DecorView ViewRoot对应于ViewRootImpl类,是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的.在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和DecorView建立关联. View的绘制流程从ViewRoot的performTraversals开始,经过

自定义View学习笔记-1

继承View重写onDraw方法 对于直接继承自View的控件,如果不对wrap_content做特殊处理,那么使用wrap_content就相当于mathc_parent. 处理:只需要制定一个wrap_content模式的默认宽/高 代码如下: @Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeas

[Android游戏开发学习笔记]View和SurfaceView

本文为阅读http://blog.csdn.net/xiaominghimi/article/details/6089594的笔记. 在Android游戏中充当主要角色的,除了控制类就是显示类.而在Android中涉及到显示的是View类,及继承自它的SurfaceView类和SurfaceView的其他子类等. 这里先只说View和SurfaceView.SurfaceView的直接子类有GLSurfaceView和VideoView,可以看出GL和视频播放以及CAmera摄像头一般均使用Su

Android自定义View(二、深入解析自定义属性)

转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51468648 本文出自:[openXu的博客] 目录: 为什么要自定义属性 怎样自定义属性 属性值的类型format 类中获取属性值 Attributeset和TypedArray以及declare-styleable ??在上一篇博客<Android自定义View(一.初体验)>中我们体验了自定义控件的基本流程: 继承View,覆盖构造方法 自定义属性 重写onMeasure方法测量宽

Android自定义View(CustomCalendar-定制日历控件)

转载请标明出处: http://blog.csdn.net/xmxkf/article/details/54020386 本文出自:[openXu的博客] 目录: 1分析 2自定义属性 3onMeasure 4onDraw 绘制月份 绘制星期 绘制日期及任务 5事件处理 源码下载 ??应项目需求,需要做一个日历控件,效果图如下: ???? ??接到需求后,没有立即查找是否有相关开源日历控件可用.系统日历控件是否能满足 ,第一反应就是这个控件该怎么画?谁叫咱自定义控件技术牛逼呢O(∩_∩)O哈哈~