Android自定义view水波纹效果案例
想必做安卓的小伙伴都知道,在一个项目中或多或少的会使用到自定义view,因为原生框架始终满足不了UI-UE的需求,入不了他们的法眼。下面简单写一个自定义view。以水波纹效果为例
需求是写一个水波纹的效果,类似于pc上的点击效果。
需求分析:点击效果剖析:圆(实心、空心都可)+透明度越来越低+半径越来越大
理清需求以后就很好实现了,下面上代码:
/** * 半径越来越大--圆环锯齿等于半径的1/3----透明度越来越低 * Created by Administrator on 2017/12/25. */ public class WaterView extends View{ private Paint paint; private float x = 0; private float y = 0; private float radio=30; private float stroke=20; private int alpha=255; public WaterView(Context context) { super(context); } public WaterView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); initPaint(); } private void initPaint(){ paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.RED); paint.setStyle(Paint.Style.FILL); paint.setStrokeWidth(radio/3); paint.setAlpha(alpha); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (x==0 && y==0){ return; } canvas.drawCircle(x,y,radio,paint);//参数:坐标+半径 } Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); initPaint(); alpha=alpha-20;//透明度降低 radio=radio+10;//半径增大 if (alpha <= 20){ alpha=0; paint.setAlpha(alpha); }else { sendEmptyMessageDelayed(0,40); } invalidate();//强制重绘 } }; @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: radio=30; stroke=20; alpha=255; x = event.getX(); y = event.getY(); //利用handler机制,设置画笔属性,在很短的时间内重新绘制,达到波纹效果 handler.sendEmptyMessage(0); break; } return true; } }
XML中直接引用即可
<com.example.administrator.mycustomview.MyView android:layout_width="match_parent" android:layout_height="match_parent" />
另外一些背景的点击效果也可以使用这种自定义,像cardview等一些做的比较好的控件都自带了点击的水波纹效果。代码逻辑很清晰。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
[雪峰磁针石博客]软件测试专家工具包3移动端
UI Automator UI Automator提供了一组API来构建基于交互UI的测试。API允许你执行操作,如打开设置菜单,非常适合黑盒自动化测试,在测试代码不依赖于应用的内部实现 uiautomatorviewer提供了一个方便的图形用户界面进行扫描和分析在Android设备上当前显示的UI组件。您可以使用此工具来检查的布局层次和查看UI组件。 UiDevice类可以访问设备并进行操作。你可以调用它的方法来访问设备属性,如当前的方向或显示尺寸。该UiDevice类也让您执行操作,例如:旋转设备;按下D-pad按钮;按Back、Home、Menu等;打开通知树栏;当前窗口截图等。 应用相关的API: UiCollection枚举容器的UI元素以计数,或通过文字(或属性等)针定位子元素; UIObject表示是在设备上可见的UI元素; UiScrollable?:为可滚动UI容器提供查找支持; UiSelector?:查询一个或者多个UI元素; Configurator: 设置参数。 示例:更改语言 #!/usr/bin/env python # -*- coding: utf-8...
- 下一篇
Android Parcelable数据序列化详解
什么是什么是Parcelable Parcelable是Android sdk提供的用实现于数据序列化的一个接口,不同于Java中的基于磁盘或者网络的Serializable,Parcelable是基于内存的,由于内存的读写速度高于磁盘,因此在Android中跨进程对象传递一般使用Parcelable。 如何使用Parcelable 要想使用Parcelable并不容易,需要编写很多代码,如下: package com.itfitness.androidparcelabletest; import android.os.Parcel; import android.os.Parcelable; public class BookBean implements Parcelable { private int bookId; private String bookName; private String bookAuthor; private String bookPrice; @Override public int describeContents() { return 0; } @...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Hadoop3单机部署,实现最简伪集群
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2更换Tomcat为Jetty,小型站点的福音