本文实例讲述了Android编程简单实现雷达扫描效果。分享给大家供大家参考,具体如下:

在eoe看到有一篇关于雷达扫描的文章,然后看了下,很简单,但是觉得还有很多可以优化的地方,下面贴出来

package com.example.wave;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Matrix;

import android.graphics.Paint;

import android.graphics.Paint.Style;

import android.graphics.Shader;

import android.graphics.SweepGradient;

import android.util.AttributeSet;

import android.widget.FrameLayout;

public class RadarView extends FrameLayout {

private int viewSize = 500;

private Paint mPaintLine;

private Paint mPaintSector;

private boolean isStart = false;

private ScanThread mThread;

private int start = 0;

private final int paintWidth = 10;

public RadarView(Context context) {

super(context);

init();

}

public RadarView(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}

private void init() {

initPaint();

mThread = new ScanThread();

setBackgroundColor(Color.TRANSPARENT);

}

private void initPaint() {

mPaintLine = new Paint();

mPaintLine.setStrokeWidth(paintWidth);

mPaintLine.setAntiAlias(true);

mPaintLine.setStyle(Style.STROKE);

mPaintLine.setColor(0xffff0000);

mPaintSector = new Paint();

mPaintSector.setColor(0x9D00ff00);

mPaintSector.setAntiAlias(true);

}

public void setViewSize(int size) {

this.viewSize = size;

mShader = new SweepGradient(viewSize >> 1, viewSize >> 1, Color.TRANSPARENT, Color.GREEN);

setMeasuredDimension(viewSize, viewSize);

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

setMeasuredDimension(viewSize, viewSize);

}

public void start() {

mThread.start();

isStart = true;

}

public void stop() {

if (isStart) {

Thread.interrupted();

isStart = false;

}

}

private Shader mShader = new SweepGradient(viewSize >> 1, viewSize >> 1, Color.TRANSPARENT, Color.GREEN);

private Matrix matrix = new Matrix();

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

int halfRadaSize = viewSize >> 1;

canvas.drawCircle(halfRadaSize, halfRadaSize, halfRadaSize >> 1, mPaintLine);

canvas.drawCircle(halfRadaSize, halfRadaSize, halfRadaSize - (paintWidth >> 1), mPaintLine);

canvas.drawLine(halfRadaSize, 0, halfRadaSize, viewSize, mPaintLine);

canvas.drawLine(0, halfRadaSize, viewSize, halfRadaSize, mPaintLine);

mPaintSector.setShader(mShader);

canvas.concat(matrix);

canvas.drawCircle(halfRadaSize, halfRadaSize, halfRadaSize - paintWidth, mPaintSector);

}

protected class ScanThread extends Thread {

int halfRadaSize = viewSize >> 1;

@Override

public void run() {

while (isStart) {

start = start + 2;

matrix.reset();

matrix.postRotate(start, halfRadaSize, halfRadaSize);

postInvalidate();

try {

Thread.sleep(10);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

希望本文所述对大家Android程序设计有所帮助。

android 雷达扫描动画,Android编程简单实现雷达扫描效果相关推荐

  1. android 雷达搜索动画,Android实现微信雷达辐射搜索好友实例(逻辑清晰实现简单)...

    Android仿微信雷达扫描,仿安卓微信.云播雷达扫描动画效果点击中间的黑色圆圈开始扫描动画,再次点击复位,需要这种效果的朋友快点收藏了吧. 效果图如下: 这个界面大家肯定都非常熟悉了,下面来说一下原 ...

  2. android 上下扫描动画,Android扫描雷达动画

    很简单的一个组合动画,用好基本动画啥子效果都不怕 老规矩先上图 效果图.gif ok 来 既然往下翻那就看看如何实现的吧 首先效果分为两部分 第一部分中间指针(其实这里就是一张图片) 第二部分就是波纹 ...

  3. android 滑动翻转动画,Android编程实现3D滑动旋转效果的方法

    本文实例讲述了Android编程实现3D滑动旋转效果的方法.分享给大家供大家参考,具体如下: 这里我们通过代码实现一些滑动翻页的动画效果. Animation实现动画有两个方式:帧动画(frame-b ...

  4. android+清除循环动画,android自定义View之(4)-一键清除动画

    android自定义View之(四)------一键清除动画 1.前言: 自己也是参考别人的一些自定义view例子,学习了一些基本的自定义view的方法.今天,我参考了一些资料,再结合自已的一些理解, ...

  5. android 指示器平移动画,Android实现带指示器的自动轮播式ViewPager

    前言 最近在做项目的时候,有个需求就是实现自动轮播式的ViewPager,最直观的例子就是知乎日报顶部的ViewPager,它内部有着好几个子view,每个一段时间便自动滑动到下一个item view ...

  6. android覆盖扩散动画,[Android]多层波纹扩散动画——自定义View绘制

    之前整理过一些属性动画的基本操作,这一段时间的动画相关需求都安然度过了.直到这次-- 一.另一种动画需求 多数交互中的动画都是让单个页面元素动起来,这种就很适合用属性动画实现.但是对于 多个元素.非页 ...

  7. Android Studio属性动画,Android开发-RecyclerView-AndroidStudio(六)属性动画(3)AddDuration

    RecyclerView增加数据: MyAdapter.java: package com.iwanghang.recyclerviewdemo; import android.content.Con ...

  8. android studio实现动画,android studio上的基本动画实现(第一篇)

    hello,各位小伙伴们,在不少小伙伴们刚刚开始学习android的时候,经常会有一些project里面须要有一些基本动画的插入,那么具体是要怎么实现呢?咱们接下一块儿分析一下在android中的几种 ...

  9. android 载入svg动画,Android 加载SVG动画

    Android 加载SVG动画 SVG 可以说是目前比较流行的图片格式,使用领域也十分广泛,例如:web 前端页面,Android ios 等移动应用.都可以使用 SVG 的图片格式.今天就要和大家谈 ...

  10. android 清理缓存动画,Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解...

    最近接了一个项目其中有功能要实现一个清理内存,要求和微信的效果一样.于是想到用surfaceView而不是继承view.下面小编给大家解析下实现思路. surfaceView是为了解决频繁绘制动画产生 ...

最新文章

  1. 系列四、SpringMVC响应数据和结果视图
  2. VLC 关键模块结构分析
  3. RHEL7 下双网卡绑定做主备(冗余)
  4. AA065VD时序的确定
  5. 【MongoDB学习笔记7】深入MongoDB的删除(remove/drop)操作
  6. 嵌入式系统的知识体系、学习误区及学习建议
  7. 配置文件中的数据库连接串加密了,你以为我就挖不出来吗?
  8. 题目1452:搬寝室(dp题目)
  9. day11【过渡】SpringBoot
  10. 85、android handler的警告Handler Class Should be Static or Leaks Occur
  11. 如何一边训练一遍验证
  12. macOS应用程序打开时出现崩溃的情况,怎样处理?
  13. 一个根据SortOrder控制排序的存储过程
  14. 通过jQuery Ajax使用FormData对象上传文件
  15. Fiddler中文乱码
  16. MyBatis mysql 字符串拼接
  17. 使用电信光猫+华为路由器实现内网穿透,外网访问内网 之 光猫超级管理员密码获取并设置桥接模式
  18. 抖音短剧本应该怎么写
  19. 计算机维修5级,电脑芯片级维修教程
  20. 使用EasyExcel的坑

热门文章

  1. BASE32编码--记录
  2. 爬取今日头条新闻,并导入execle中(主要用了selenium)
  3. 放大图片模糊如何变清晰?
  4. Linux之文件通配符
  5. PHP架构师“精简”进阶路线规划
  6. MySQL5.5安装步骤
  7. 二分类最优阈值确定_结合mRMR选择和IFCM聚类的遥感影像分类算法
  8. html5红外遥控,自己写的单片机万能红外遥控解码
  9. opencv双目测距
  10. 使用vim 改变文件编码格式