课程/Android/移动开发
带您完成神秘的涟漪按钮效果-入门篇
-
-
慕粉5号
2017-05-16
- 继承Button后,有4个构造方法,第四个构造方法是API21以上才有的。
-
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- 颜色结合产生的效果
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- blue
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- 调换位置即可
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- ***为什么之前的文字不见了呢?因为在我们这边的onDraw()方法中,我们首先是调用了super的onDraw()方法,然后我们又去调用了自己自定义的Drawable里面的draw()方法来draw并将之前经过super的draw()方法画过的画布作为参数传了进去,然后由于我们自定义的draw()方法是最後draw该画布的,根据层级关系,最後draw的会覆盖在最前面
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- ***在这里我们需要触发自定义drawable中的onDraw()方法,然后实现我们想要的效果。那么我们就要在自定义控件的类中去复写这个方法。然后接着把画布给传进去。
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- !!!效果图
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- !!!在自定义的控件中实现自定义的drawable
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- ***Drawable是把可绘制的资源绘制到界面的一个过程
***Canvas是一个画布,我们把需要画的东西画到画布上
***setAlpha()是设置drawable的透明度
***setColorFilter()设置颜色过滤器
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- 现在自定义一个Drawable
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- 把自定义控件配置到xml文件中
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- 实现前三个构造方法
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- ***首先自定义一个控件,那么新建一个类为:Ripple Button
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-11
- 本节课需掌握
-
截图
0赞 · 0采集
-
-
xzhang76
2017-03-15
- 一、在view中实现一个简单的Drawable
1.先创建一个自定义的drawable,在draw(canvas)中写一些定制化的东西
(1)在控件中调用setBackgroundDrawable(drawable)
(2)在控件中重写onDraw(canvas),调用drawable的draw()
但注意调用位置,最后调用的draw()会出现在最前面。
以上两种方式均可
二、完善Drawable的基本参数
1.需要做如下三步:
(1)弄清楚Drawable中实现的方法
(2)添加一些涟漪效果所需的元素到Drawable
(3)动态更新Drawable
2.弄清楚接口
(1)最重要的一个draw()方法,这个用来绘图的
可以借助一个画笔,绘制想要的任何东西
(2)setAlpha()设置透明度
注意因为这里是用了画笔Paint,所以当透明度变化时要为paint重新设置透明度
if (mAlpha != 255) {
int alpha = mPaint.getAlpha();
int realAlpha = (int) (alpha * (mAlpha / 255f));
mPaint.setAlpha(realAlpha);
}
(3)setColorFilter()滤镜,主要对图片而言
(4)getOpacity()得到透明度属性
这里就是拿到画笔paint的透明度属性,PixelFormat.OPAQUE,PixelFormat.TRANSPARENT,PixelFormat.TRANSLUCENT
2.添加涟漪效果
so easy,直接用画笔画一个圆就行了
public void draw(Canvas canvas) {
canvas.drawCircle(mCenterX, mCenterY, mRadius, mPaint);
}
3.添加动态更新
思路是按钮按下时圆的半径变大,并且重新绘制圆。
这步操作需要借助drawable的invalidateSelf()
(1)如果控件直接设置背景setBackgroundDrawable(),直接设置一个ontouch事件就行了
回调事件中调用drawable的touch处理
-
截图
0赞 · 2采集
-
-
冯冬冬
2017-01-03
- 实现步骤
-
截图
1赞 · 0采集