Android模仿微信、云播雷达扫描动画效果
来源:互联网 发布:轩辕剑战印进阶数据 编辑:程序博客网 时间:2024/04/29 18:49
Android模仿微信、云播雷达扫描动画效果的一个小例子的简单实现,先上效果图。
主要通过绘图及自定义控件来实现。上代码~
package com.example.radar;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Shader;import android.graphics.SweepGradient;import android.os.Handler;import android.util.AttributeSet;import android.view.View;public class RadarView extends View {private int w;private int h;private Paint mPaint;private Paint radarPaint;private Matrix mMatrix;private int start = 0;private Handler mHandler = new Handler();Runnable run = new Runnable() { @Overridepublic void run() {start += 5; // 每次旋转5度mMatrix = new Matrix();mMatrix.setRotate(start, w / 2, h / 2);RadarView.this.invalidate(); mHandler.postDelayed(run, 20); // 隔20ms重复执行}};public RadarView(Context context, AttributeSet attrs) {super(context, attrs);w = this.getResources().getDisplayMetrics().widthPixels;h = this.getResources().getDisplayMetrics().heightPixels;initPaint();mHandler.post(run); // 开始执行}private void initPaint() {mPaint = new Paint(); // 创建圆环画笔mPaint.setStrokeWidth(3);mPaint.setAntiAlias(true); // 抗锯齿mPaint.setColor(Color.parseColor("#A1A1A1"));mPaint.setStyle(Paint.Style.STROKE);radarPaint = new Paint(); // 创建扫描线画笔radarPaint.setAntiAlias(true);Shader shader = new SweepGradient(w / 2, h / 2, Color.TRANSPARENT, Color.parseColor("#AA000000")); // 扫描边由透明->#AA000000进行渐变radarPaint.setShader(shader);}@Overrideprotected void onDraw(Canvas canvas) {// 绘制圆环。这些宽度高度设置仅供参考canvas.drawCircle(w / 2, h / 2, w / 6, mPaint);canvas.drawCircle(w / 2, h / 2, 2 * w / 6, mPaint);canvas.drawCircle(w / 2, h / 2, 11 * w / 20, mPaint);canvas.drawCircle(w / 2, h / 2, h / 2, mPaint);// 绘制扫描线canvas.concat(mMatrix);canvas.drawCircle(w / 2, h / 2, h / 2, radarPaint);super.onDraw(canvas);}}在布局中,把自定义控件加载进来~
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" > <com.example.radar.RadarView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" /></FrameLayout>
大功告成~
附上源码下载链接:Android模仿微信、云播雷达扫描动画效果源码
2 0
- Android模仿微信、云播雷达扫描动画效果
- Android例子源码模仿安卓微信、云播雷达扫描动画效果
- android仿安卓微信、云播雷达扫描动画效果
- Android 雷达扫描动画效果实现
- Android 雷达扫描效果、动画SweepGradient
- Android 雷达扫描效果
- 模仿新浪微博雷达搜索动画效果
- Android 雷达扫描效果实现
- 【Android】实现雷达扫描效果
- Android使用动画实现微信扫描线效果
- TWaver动画之雷达扫描效果
- 安卓雷达扫描动画效果实现
- Android: 动画实现雷达效果
- Android仿新浪微博雷达扫描效果
- Android自定义View实现雷达扫描动画
- Android自定义View实现雷达扫描动画
- android:模仿微信联系人效果
- Android:自定义view 实现雷达扫描效果
- Linux下的有名管道(03)---使用函数创建和删除有名管道
- quick lua加密
- H5学习之旅-H5的框架(13)
- iOS—NSLog各种打印格式
- LoghtOj1201(最大独立集)
- Android模仿微信、云播雷达扫描动画效果
- 04 试一下,编写第一个JAVA程序
- ubuntu一键安装LAMP 及一键卸载
- 解决xManager、putty等工具ssh连接linux中文乱码
- Openssl的安装
- Launcher3源码分析
- gets函数哈scanf函数的区别
- Xcode里-ObjC, -all_load, -force_load
- android OkHttp上传文件,selvelt服务端