Android自定义系列(1)——自定义view 仿微信viewPage底部显示图标(整理来自慕课网)
来源:互联网 发布:mac系统pdf转换成word 编辑:程序博客网 时间:2024/05/16 14:40
这里我整理了几个大神的技术博文,结合着来自慕课网的代码,梳理一下自定义view要做的几个步骤。
1.在value中建立一个attr.xml,再声明几个属性:
① 当我们用Canvas绘制位图的时候,如果对位图进行了选择,则位图会出现锯齿。
② 在用View的RotateAnimation做动画时候,如果View当中包含有大量的图形,也会出现锯齿。我们分别以这两种情况加以考虑。
◆ 用Canvas绘制位的的情况。在用Canvas绘制位图时,一般地,我们使用drawBitmap函数家族,在这些函数中,都有一个Paint参数,要做到防止锯齿,我们就要使用到这个参数。如下:首先在你的构造函数中,需要创建一个Paint。 Paint mPaint = new Paint(); 然后,您需要设置两个参数: 1)mPaint.setAntiAlias(); 2)mPaint.setBitmapFilter(true)。第一个函数是用来防止边缘的锯齿,第二个函数是用来对位图进行滤波处理。最后,在画图的时候,调用drawBitmap函数,只需要将整个Paint传入即可。
◆ 有时候,当你做RotateAnimation时,你会发现,讨厌的锯齿又出现了。这个时候,由于你不能控制位图的绘制,只能用其他方法来实现防止锯齿。另外,如果你画的位图很多。不想每个位图的绘制都传入一个Paint。还有的时候,你不可能控制每个窗口的绘制的时候,您就需要用下面的方法来处理——对整个Canvas进行处理。 1)在您的构造函数中,创建一个Paint滤波器。 PaintFlagsDrawFilter mSetfil = new PaintFlagsDrawFilter(0, Paint.FILTER_BITMAP_FLAG);第一个参数是你要清除的标志位,第二个参数是你要设置的标志位。此处设置为对位图进行滤波。 2)当你在画图的时候,如果是View则在onDraw当中,如果是ViewGroup则在dispatchDraw中调用如下函数。 canvas.setDrawFilter( mSetfil );
★ 最后,另外,在Drawable类及其子类中,也有函数setFilterBitmap可以用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果。(以上是来自转载博文。)
void setARGB(int a, int r, int g, int b) 设置Paint对象颜色,参数一为alpha透明通道
void setAlpha(int a) 设置alpha不透明度,范围为0~255
void setAntiAlias(boolean aa) //是否抗锯齿
void setColor(int color) //设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义
.
void setFakeBoldText(boolean fakeBoldText) //设置伪粗体文本
void setLinearText(boolean linearText) //设置线性文本
PathEffect setPathEffect(PathEffect effect) //设置路径效果
Rasterizer setRasterizer(Rasterizer rasterizer) //设置光栅化
Shader setShader(Shader shader) //设置阴影
void setTextAlign(Paint.Align align) //设置文本对齐
void setTextScaleX(float scaleX) //设置文本缩放倍数,1.0f为原始
void setTextSize(float textSize) //设置字体大小
Typeface setTypeface(Typeface typeface) //设置字体,Typeface包含了字体的类型,粗细,还有倾斜、颜色等。
mPaint.setXfermode( new PorterDuffXfermode(PorterDuff.Mode.SCREEN));
Canvas canvas = new Canvas(Src);
paint.setXfermode( new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(Dst, 0f, 0f, paint);
- Android自定义系列(1)——自定义view 仿微信viewPage底部显示图标(整理来自慕课网)
- 自定义View(来自Android API Demo)
- 自定义View之Chart图标系列(1)——点阵图
- 自定义ViewPage+底部指示器(广告图片轮播)
- 自定义View(1):自定义文本显示
- Android自定义View系列(aige)
- 自定义view实现ViewPageIndicator(viewpage指示器) so easy
- android重写系列(1)——titleTag actionbar 重写(整理来自慕课网)
- Android自定义控件系列(三)—底部菜单(上)
- Android自定义控件系列(四)—底部菜单(下)
- 从零开始学Android自定义View之动画系列——属性动画(1)
- Android从零开搞系列:自定义View(1)setContent()台前幕后
- android自定义PopWindow底部显示
- Android自定义底部显示对话框
- android自定义PopWindow底部显示
- android学习整理(一)自定义应用图标方法
- Android自定义View(1)
- android 自定义view(1)
- ecshop调用指定的广告位的方法
- hdu1521 排列组合
- linux学习笔记—杂项2
- MySQL how to show table in a database
- 如果你也面试04 C++虚继承的概念
- Android自定义系列(1)——自定义view 仿微信viewPage底部显示图标(整理来自慕课网)
- ubuntu怎么修改设备名称
- Animation基本功能的实现
- JDK1.6和JDK1.7共存和Eclipse出错
- ANT的一些操作
- lua学习笔记 0 android嵌入Lua
- 在线裁剪图片
- 如果你也面试05 C++中虚函数的作用是什么?它应该怎么用呢?
- Android系统内核cpufreq技术分析