Android编程简单实现雷达扫描效果

 更新时间:2015年10月27日 12:01:32   作者:freesonhp  
这篇文章主要介绍了Android编程简单实现雷达扫描效果,涉及Android图形绘制及显示的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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音乐播放器

    这篇文章主要教大家轻松制作Android音乐播放器,制作一款属于自己的Android音乐播放器,希望大家喜欢。
    2015-11-11
  • android实现手写签名功能

    android实现手写签名功能

    这篇文章主要为大家详细介绍了android实现手写签名功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Android自定义view实现滚动选择控件详解

    Android自定义view实现滚动选择控件详解

    最近在开发中需要实现滚动进行类别的选择,也就是我们所说的滚动选择器,这里我们自定义来实现这个功能,这篇文章主要介绍了Android自定义view实现滚动选择控件
    2022-11-11
  • Android 实现密码输入框动态明文/密文切换显示效果

    Android 实现密码输入框动态明文/密文切换显示效果

    在项目中遇到需要提供给用户一个密码输入框明文/密文切换显示的需求,今天小编借脚本之家平台给大家分享下Android 实现密码输入框动态明文/密文切换显示效果,需要的朋友参考下
    2017-01-01
  • AndroidStudio3.6.1打包jar及AndroidStudio4.0打包jar的一系列问题及用法

    AndroidStudio3.6.1打包jar及AndroidStudio4.0打包jar的一系列问题及用法

    这篇文章主要介绍了AndroidStudio3.6.1打包jar,AndroidStudio4.0打包jar的问题及用法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 朋友圈实现图片+文字转发功能(必看篇)

    朋友圈实现图片+文字转发功能(必看篇)

    下面小编就为大家带来一篇朋友圈实现图片+文字转发功能(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Notification自定义界面

    Notification自定义界面

    这篇文章主要为大家详细介绍了Notification自定义界面的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • android listview初步学习实例代码

    android listview初步学习实例代码

    这篇文章主要介绍了android listview初步学习实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 解决android viewmodel 数据刷新异常的问题

    解决android viewmodel 数据刷新异常的问题

    这篇文章主要介绍了解决android viewmodel 数据刷新异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android仿淘口令复制弹出框功能(简答版)

    Android仿淘口令复制弹出框功能(简答版)

    这篇文章主要介绍了Android仿淘口令复制弹出框功能(简答版)的相关资料,在文章给大家提到了淘口令原理介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11

最新评论