先上效果图:

先说下实现思路:

  • framelayout布局头像和,退出按钮位置。
  • 除去头像和退出按钮,只剩圆圈和扫描渐变圆外加背景图,而这些圆的圆心都是屏幕中心,所以我们可以做一个自定义控件。

思路很清晰明了,只有两步,下面是代码:
自定义RadarView控件继承framelayout:

package com.lifei.radarview;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.widget.FrameLayout;/*** Created by lifei on 2015/12/29.*/
public class RadarView extends FrameLayout {private Paint mPaintLine;//画圆private Paint mPaintGra;//渐变圆private int width,height;//屏幕宽高
//    Matrix是一个3 x 3的矩阵,他对图片的处理分为四个基本类型:
//    1、Translate————平移变换
//    2、Scale————缩放变换
//    3、Rotate————旋转变换
//    4、Skew————错切变换private Matrix matrix;//矩阵private int start=1;//角度private Handler handler=new Handler();private Runnable runnable=new Runnable() {@Overridepublic void run() {start+=1;matrix=new Matrix();matrix.postRotate(start,width/2,height/2);RadarView.this.invalidate();handler.postDelayed(runnable,60);}};public RadarView(Context context, AttributeSet attrs) {super(context, attrs);initPaint();width=getResources().getDisplayMetrics().widthPixels;height=getResources().getDisplayMetrics().heightPixels;setBackgroundResource(R.mipmap.ax);matrix=new Matrix();handler.post(runnable);}private void initPaint() {mPaintLine=new Paint();mPaintLine.setColor(Color.parseColor("#A1A1A1"));mPaintLine.setStrokeWidth(3);mPaintLine.setAntiAlias(true);mPaintLine.setStyle(Paint.Style.STROKE);mPaintGra=new Paint();mPaintGra.setColor(0X9D00FF00);mPaintLine.setAntiAlias(true);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {setMeasuredDimension(width,height);}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawCircle(width/2,height/2,width/6,mPaintLine);canvas.drawCircle(width/2,height/2,2*width/6,mPaintLine);canvas.drawCircle(width/2,height/2,11*width/20,mPaintLine);canvas.drawCircle(width / 2, height / 2, 7 * height / 16, mPaintLine);//Shader BitmapShader主要用来渲染图像,LinearGradient 用来进行梯度渲染,RadialGradient 用来进行环形渲染,SweepGradient 用来进行梯度渲染,ComposeShader则是一个 混合渲染//扫描渐变---围绕一个中心点扫描渐变就像电影里那种雷达扫描,用来梯度渲染。Shader shader=new SweepGradient(width/2,height/2,Color.TRANSPARENT,Color.parseColor("#AAAAAAAA"));mPaintGra.setShader(shader);//对canvas应用矩阵变换 canvas.concat(matrix);canvas.drawCircle(width / 2, height / 2, 7 * height / 16, mPaintGra );super.onDraw(canvas);}}

main_activity布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:tools="http://schemas.android.com/tools"tools:context=".MainActivity"><com.lifei.radarview.RadarView
        android:layout_width="fill_parent"android:layout_height="fill_parent"></com.lifei.radarview.RadarView><ImageView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:background="@mipmap/ic_launcher"/><Button
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="bottom"android:text="退出"android:layout_marginLeft="5dp"android:layout_marginBottom="30dp"/>
</FrameLayout>

例子下载:http://download.csdn.net/detail/qq1377399077/9383782

Android 仿微信雷达搜索好友相关推荐

  1. android 字母搜索栏,android仿微信通讯录搜索示例(匹配拼音,字母,索引位置)

    前言: 仿微信通讯录搜索功能,通过汉字或拼音首字母找到匹配的联系人并显示匹配的位置 一:先看效果图 字母索引 搜索匹配 二:功能分析 1:汉字转拼音 通讯录汉字转拼音(首个字符当考虑姓氏多音字), 现 ...

  2. android 通讯录 首字母索引,android仿微信通讯录搜索(匹配拼音,字母,索引位置标记颜色)...

    前言: 仿微信通讯录搜索功能,通过汉字或拼音首字母找到匹配的联系人并显示匹配的位置 一:先看效果图 字母索引 搜索匹配 二:功能分析 1:汉字转拼音 通讯录汉字转拼音(首个字符当考虑姓氏多音字), 现 ...

  3. android仿微信点击好友,安卓开发仿微信联系人列表-机器人列表视图仿微通道聊天多久最底部滑动...

    楼主你好!根据你的描述,让我给你答案! :新内容加进来,列表视图重新为setSelection后,定位结束后,拉起一个页面放. . 希望你能有所帮助,如果满意,请记得采纳像下拉条为微信好友如何实现 简 ...

  4. 雷达扫描定位 android,Android仿微信雷达扫描

    废话不多说 先上图(用AS录制的 转换工具不是很好 所以看得效果不是很好) gif5新文件.gif Activity 代码 public class ShapeDrawableActivity ext ...

  5. android仿微信雷达 头像效果 自定义view

    ScreeningRadarView public class ScreeningRadarView extends View {// 定义画笔Paint paint;float radiusDiff ...

  6. android 辐射动画_Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)

    不知不觉这个春节也已经过完了,遗憾家里没网,没能及时给大家送上祝福,今天回到深圳,明天就要上班了,小伙伴们是不是和我一样呢?今天讲的是一个大家都见过的动画,雷达搜索好友嘛,原理也十分的简单,你看完我的 ...

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

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

  8. android的实现关注好友功能,android仿微信好友列表功能

    android studio实现微信好友列表功能,注意有一个jar包我没有放上来,请大家到MainActivity中的那个网址里面下载即可,然后把pinyin4j-2.5.0.jar复制粘贴到项目的a ...

  9. Android仿微信通讯录

    Android仿微信通讯录 分3部: 1.listview实现显示头像.名字(太简单,这里就不写了) 通讯录页面xml布局代码: <LinearLayout xmlns:android=&quo ...

最新文章

  1. Docker源码分析(八):Docker Container网络(下)
  2. 《单线程的build hash table、write rows to chunks、hash join的步骤以及流程图》
  3. 用于 Keras 用户使用的 TensorFlow.js layers API
  4. 2018.9--2019.7 Java开发工作中的经验和教训之db2数据库操作
  5. php时间转两位数年份,PHP常用时间函数资料整理
  6. 十七世纪的常用对数表是怎么算出来的
  7. 高中计算机基础知识,高中计算机基础知识.ppt
  8. 组网学习之什么是链路冗余(二)
  9. 《数字图像处理》:直方图处理的几种方式
  10. Surface Go1 与Surface Go2的不同 (非专业对比)
  11. 忆我的大学老师----(一)
  12. 社交网络崛起带来口碑营销的复兴
  13. Matlab常用图像处理命令108例(二)
  14. (转)逃脱者可获生机(上)
  15. 二进制流序列化(反序列化)和XML序列化(反序列化)
  16. 关于影视剪辑中的pr软件你了解多少?
  17. iOS12-Swift5-Xcode10 Buildtime错误:/xx/Pods/Target Support Files/Pods-xx/Pods-xx.d
  18. 百度CEO 李彦宏 简介
  19. 韩顺平学Java之九九乘法表
  20. 【Nginx】nginx代理视频流hls地址

热门文章

  1. STL之set(集合)详解
  2. 斗破苍穹算法版—萧炎的成长之路(一)
  3. 商城类项目业务简述 可用于面试沟通项目话术 软件测试web项目app项目通用
  4. 泊松分布如何用计算机计算,如何利用泊松分布计算概率
  5. router路由跳转过渡效果
  6. 使用uniapp在微信小程序改变v-model里面的值,视图不更新的解决方案
  7. Mon的Python基础入门
  8. res.setHeader()和res.writeHead()
  9. 2014-11-1 NOIP模拟赛2
  10. 运筹学——图论与最短距离(Python实现)