一、概述

       百度地图现在在不断滴做很多的各种功能,可能是面向客户的开发,所以在不断开发出新颖的功能,以取得更多的用户。最近出了一个“身边雷达”的新的功能。感觉十分的酷炫。不去评论这个功能是谁先开发出来的(快播)。既然好看,就试着动手做一个了。直接也用百度的资源文件了。这样效果就会更加逼真。
       首先先看下百度他们做的:

二、开发前充电

1. SweepGradient:

      

2. 将Drawable中的资源文件转变成Bitmap

Resources r = getResources();Bitmap bp = BitmapFactory.decodeResource(r,R.drawable.component_radar_light_point);

三、代码实现

       设计的思路就是使用渲染中的SweepGradient进行颜色的旋转。设计思路的来源是,颜色是Int值正好资源文件也是int值。于是用图片去替代颜色值。(因为百度的雷达的时候其实就是旋转图片)
       1. 新建一个项目,应该大家都没有问题。于是已经可以不用操作主Avtivity了。
       2. 配置布局xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><FrameLayoutandroid:layout_width="320dp"android:layout_height="320dp"android:layout_gravity="center"android:background="@drawable/component_radar_board" ><cn.com.sric.android_radio.SampleViewandroid:layout_width="wrap_content"android:layout_height="wrap_content" ></cn.com.sric.android_radio.SampleView></FrameLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ></LinearLayout></LinearLayout>

3.看见自定义的View了吗。接下来实现这个自定义的SampleView。代码如下:

package cn.com.sric.android_radio;import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
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.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;public class SampleView extends View {private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);private float mRotate;private Matrix mMatrix = new Matrix();private Shader mShader;private boolean mDoTiming;float x = 160;// 旋转的原点xfloat y = 160;// 旋转的原点ypublic SampleView(Context context) {super(context);}public SampleView(Context context, AttributeSet paramAttributeSet) {super(context, paramAttributeSet);setFocusable(true);setFocusableInTouchMode(true);mShader = new SweepGradient(x, y, new int[] {R.drawable.component_radar_pointer, Color.TRANSPARENT }, null);mPaint.setShader(mShader);}@Overrideprotected void onDraw(Canvas canvas) {Paint paint = mPaint;Paint ppPaint = new Paint();ppPaint.setColor(Color.WHITE);canvas.drawColor(Color.TRANSPARENT);// canvas.setBitmap(getResources().getDrawable(R.drawable.component_radar_board));mMatrix.setRotate(mRotate, x, y);mShader.setLocalMatrix(mMatrix);mRotate += 2.5;// 设置旋转速度if (mRotate >= 360) {mRotate = 0;}invalidate();if (mDoTiming) {long now = System.currentTimeMillis();for (int i = 0; i < 30; i++) {canvas.drawCircle(x, y, 80, paint);}now = System.currentTimeMillis() - now;android.util.Log.d("skia", "sweep ms = " + (now / 20.));} else {// canvas添加的图层也有一个堆载的形式,先绘制的图像在底层canvas.drawCircle(x, y, 118, paint);canvas.drawCircle(x, y, 3, ppPaint);Resources r = getResources();Bitmap bp = BitmapFactory.decodeResource(r,R.drawable.component_radar_light_point);canvas.drawBitmap(bp, 100, 120, paint);canvas.drawBitmap(bp, 120, 130, paint);canvas.drawBitmap(bp, 170, 110, paint);canvas.drawBitmap(bp, 180, 100, paint);canvas.drawBitmap(bp, 230, 199, paint);canvas.drawBitmap(bp, 200, 249, paint);canvas.drawBitmap(bp, 158, 210, paint);}}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_D:mPaint.setDither(!mPaint.isDither());invalidate();return true;case KeyEvent.KEYCODE_T:mDoTiming = !mDoTiming;invalidate();return true;}return super.onKeyDown(keyCode, event);}
}

四、实现效果图

      首先感谢百度地图,提供的资源文件。
      接下来是效果图:
     
      

实现百度地图的身边雷达的功能效果相关推荐

  1. 【Springboot】集成百度地图实现定位打卡功能

    目录 第一章 需求分析 第二章 概要设计 第三章 详细设计 3.1 环境搭建 3.1.1 获取百度地图ak 3.1.2 创建springboot项目 3.2 配置application.propert ...

  2. vue项目中使用百度地图api完成自定义搜索功能(包含搜索详细地理位置)

    需求描述: 在vue项目中,有时候,我们需要自定义百度地图的一些功能.譬如,现在的需求,就是需要自定义搜索内容和结果展示. 类似如下页面的功能: 首先在vue项目中,我们可以使用 vue-baidu- ...

  3. 在百度地图上开启 测距的功能

    百度地图 本来api不带测距的功能 不过在开源库中存在一个 测距的工具类库 DistanceTool 工具 这个是工具类的地址 http://api.map.baidu.com/library/Dis ...

  4. 百度地图离线_高德地图与百度地图有啥区别?功能只是其次,定位才是重点

    如今,生活离不开手机,而行程又离不开导航app,中国那么大,许多人都有过这样的疑问?那就是在没有导航的时代,人们是怎样出行的呢?在小编看来,那是由于当时道路线较少,故此,走的人多了,也就熟了. 现在, ...

  5. 百度地图场所联系信息采集器功能介绍

    该工具依赖百度地图检索系统接口,快速实现对关键词的查询检索,以获取用户需要关注的关键词名称.关键词地址.关键词电话等信息,并可动态设置获取的检索页面数量.        为了便于客户更好的利用采集下来 ...

  6. Android百度地图之周边雷达

    android–百度地图周边雷达实战 在过这块的时候大概花了我3天的时间,其中的曲折这里我就不吐槽了,没有坑的世界就不精彩.自己造轮子就是这样,浪费时间,消磨耐性.废话又多说了,好了,开干. 首先先把 ...

  7. 百度地图路书(移动轨迹)功能

    现在的互联网+,智能电子产品,特别的车载智能系统,大部分会在手机端有一个功能,就是产品的移动轨迹,这种功能怎么实现呢?用百度地图的路书功能可以完美的实现这个功能 下面是路书功能的主要代码: 1:在页面 ...

  8. 基于android studio的百度地图(放大缩小搜索功能)

    首先我们需要下载百度SDK包 百度网盘提取码1234 这个复制在这里 还有百度官方的代码也已经打好了. 百度网盘 请输入1234 自行导入.直接复制全部java,之后粘贴在工程里面 这是布局 布局.x ...

  9. Android 通过百度地图实现膜拜单车首界面效果

    最近在学习一些百度地图相关的API应用,中间有一个功能是实现类似膜拜单车首页的效果.本文将介绍通过百度地图来实现膜拜单车首界面的效果.先看下膜拜单车效果图(本文截取的是微信小程序的效果图) 效果分析 ...

最新文章

  1. LeetCode刷题记录2——217. Contains Duplicate(easy)
  2. iOS Masonry的使用详解
  3. .NET零基础入门06:面向对象入门
  4. python第三方库安装-python第三方库安装在哪
  5. 原字体_在包装上玩转字体
  6. 用java制作心理测试软件_0基础学习制作app
  7. Some Fiori offline screenshot in Mac
  8. 研讨会 | 知识图谱引领认知智能+
  9. VLSM(可变长子网掩码)图表
  10. Java学习笔记:创建线程的两种方法
  11. linux 可定义信号数,Linux系统编程(20)——信号基本概念
  12. java链表的用法_数据结构(java语言描述)链表的使用
  13. Unix环境高级编程的学习环境的搭建
  14. visio2013激活软件
  15. Android 屏幕旋转流程分析
  16. 白杨SEO:淘宝客、淘客是什么、赚钱方式及怎么入门和推广引流?
  17. android源码AOSP AOKP CM及下载
  18. 高亮蓝光油溶性ZnCdS/ZnS量子点(硫化锌镉/硫化锌)
  19. 【Audio】声临其境——杜比音效介绍
  20. czl蒻蒟的OI之路7

热门文章

  1. centos 6.4 java环境变量_CentOS中JAVA_HOME的环境变量设置
  2. NUll 不是 []
  3. 谷歌浏览器JSON格式化插件JSONVue安装使用
  4. linux vma 是什么
  5. DolphinScheduler海豚调度教程
  6. linux(凝思系统)进入单用户模式
  7. 产品经理如何发现大多数“沉默”用户的需求
  8. 汇编语言实现十六进制数转换成十进制数
  9. 计算机如何使用手机网络设置密码,自己家的wifi密码用手机怎么改?
  10. excel中怎么生成指定年份的日期