自定义view+图片混合
来源:互联网 发布:如何做销售数据分析表 编辑:程序博客网 时间:2024/04/28 07:04
一:概括
自定义view的知识点有:
自定义属性,ondraw,onmeasure等,图片混合主要就是对画笔的定义,和对PorterDuffXfermode类的理解;
二:关于自定义属性不说,怕自己讲不好,网上有很多好的教程,推荐鸿翔的博客,简单透彻,就说下onMeasure;
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec,heightMeasureSpec); }
这是系统提供的,它传进的两个参数,熟悉下,然后回顾我们写layout的时候,关于layout的宽高是怎么设置的呢?不外乎三种“wrap_content”,“match_parent”,”确定值”,这也就是系统测量的时候需要处理的三种情况,分别为EXACTLY,AT_MOST,UNSPECIFIED,有关这些尺寸和模式都定义在MeasureSpec中,这是一个view的内部静态类,顺便看下我们怎处理onMeasure吧,
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int heightMode =MeasureSpec.getMode(heightMeasureSpec);
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
int width;
int height ;
if (widthMode == MeasureSpec.EXACTLY)
{
width = widthSize;
} else
{
//todo
//获取在wrap_content的模式下的view的width
}
if (heightMode == MeasureSpec.EXACTLY)
{
height = heightSize;
} else
{
//todo
//获取在wrap_content的模式下的view的height
}
setMeasuredDimension(width, height);
}
三:关于onDraw想分享之前做水波动画的时候用到的图片混合,
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int saveFlags = Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG |Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG;
canvas.saveLayer(getWidth()/2-mBound.width()/2,getHeight()/2-mBound.height()/2,getWidth()/2+mBound.width()/2,getHeight()/2+mBound.height()/2,null,saveFlags);
canvas.drawText(text,getWidth()/2-mBound.width()/2,getHeight()/2+mBound.height()/3,paint);
Paint paint3 = new Paint(); paint3.setAntiAlias(true); paint3.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP)); canvas.drawBitmap(bmp1,getWidth()/2mBound.width()/2,getHeight()/2-mBound.height()/2,paint3); paint3.setXfermode(null); canvas.restore();}
第一次写博客,不知道怎么排版,大家见谅,就写几个关键词,大家要是遇到留意一下,都不难,一个时canvas.savelayer();一个时理解PorterDuffXfermode的几种模式,引用里列了几篇我收藏的博客,谢谢!
- 自定义view+图片混合
- 简单的混合自定义View
- 自定义View,绘制图文混合
- 自定义view圆形图片
- 自定义view:图片显示指示器
- 自定义View实现图片缩放
- 自定义View显示超大图片
- Android自定义view-图片选色器
- Android自定义view圆形图片
- 自定义View学习之12/7(进度条之混合模式)
- ios 获取一个view上的图片,iphone混合图片 合成图片 任意范围截图 截屏
- 自定义View——图片指示器
- Android实现自定义view---绘制图片
- 自定义View之圆角图片
- 自定义View之图片放大、缩小、移动
- Android自定义view之图片加载进度
- 自定义View实现安卓裁剪图片
- 自定义View实现图片的缩放
- 【通讯术语】NAT
- SBT和Lightbend Activator的使用
- 一个简单的tab点选动画控件(带文字效果)
- [leetcode] 223. Rectangle Area
- Lua cocos2d
- 自定义view+图片混合
- sql server 不同机器备份还原
- GPT分区
- 应用服务器挂载文件服务器文件
- 单个字符串转Json格式
- CSU 1159: 中南才女
- 透视投影变换矩阵推导学习笔记
- 普及量子点技术,推动显示行业发展
- 如何提高百度云客户端的下载速度