Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)

 更新时间:2016年02月14日 12:03:07   作者:刘某人程序员  
仿微信雷达扫描,仿安卓微信、云播雷达扫描动画效果点击中间的黑色圆圈开始扫描动画,再次点击复位,需要这种效果的朋友可以自己下载看一下

不知不觉这个春节也已经过完了,遗憾家里没网,没能及时给大家送上祝福,今天回到深圳,明天就要上班了,小伙伴们是不是和我一样呢?今天讲的是一个大家都见过的动画,雷达搜索好友嘛,原理也十分的简单,你看完我的分析,也会觉得很简单了,国际惯例,无图无真相,我们先看看效果图,对了,真
测试机送人了,所讲这段时间应该一直用模拟器显示吧!

仿微信雷达扫描,仿安卓微信、云播雷达扫描动画效果点击中间的黑色圆圈开始扫描动画,再次点击复位,需要这种效果的朋友可以自己下载看一下。

效果图如下所示:

这里写图片描述

这个界面相信大家都认识,我们来说下原理,其实就三层

这里写图片描述

中间是一张图片,然后画四个圆,这个应该简单吧,不会的可以看下Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解,然后最上面就是一个渐变的圆了,这个圆我们只要让他不停的旋转就可以了,那我们新建一个工程——RadarSearch

这里写图片描述

layou_main.xml

<RelativeLayout 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="@drawable/photo" >
<com.lgl.radarsearch.RadarView
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/circle_photo" />
</RelativeLayout>

我们新建一个RadarView

RadarView
package com.lgl.radarsearch;
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.os.Handler;
import android.util.AttributeSet;
import android.view.View;
/**
* 雷达搜索
* 
* @author LGL
*
*/
public class RadarView extends View {
/**
* 思路:我们首先初始化画笔,并且获取到控件的宽高,在onMeasure()中设置铺满,然后在onDraw()方法中绘制四个静态圆和一个渐变圆,
* 我们通过Matrix矩阵来让他不停的旋转就达到我们想要的效果了
*/
private Paint mPaintLine, mPaintCircle;
private int w, h;
// 动画
private Matrix matrix;
// 旋转角度
private int start;
// Handler定时动画
private Handler handler = new Handler();
private Runnable run = new Runnable() {
@Override
public void run() {
start = start + 1;
matrix = new Matrix();
// 参数:旋转角度,围绕点坐标的x,y坐标点
matrix.postRotate(start, w / 2, h / 2);
// 刷新重绘
RadarView.this.invalidate();
// 继续循环
handler.postDelayed(run, 60);
}
};
public RadarView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
// 获取高宽
w = context.getResources().getDisplayMetrics().widthPixels;
h = context.getResources().getDisplayMetrics().heightPixels;
// 一致旋转
handler.post(run);
}
private void initView() {
mPaintLine = new Paint();
mPaintLine.setColor(Color.WHITE);
mPaintLine.setAntiAlias(true);
mPaintLine.setStyle(Style.STROKE);
mPaintCircle = new Paint();
mPaintCircle.setColor(Color.RED);
mPaintCircle.setAntiAlias(true);
matrix = new Matrix();
}
/**
* 测量
* 
* @author LGL
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// 设置铺满
setMeasuredDimension(w, h);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 画四个圆形
canvas.drawCircle(w / 2, h / 2, w / 2, mPaintLine);
canvas.drawCircle(w / 2, h / 2, w / 3, mPaintLine);
canvas.drawCircle(w / 2, h / 2, w * 7 / 10, mPaintLine);
canvas.drawCircle(w / 2, h / 2, w / 4, mPaintLine);
// 绘制渐变圆
Shader mShader = new SweepGradient(w / 2, h / 2, Color.TRANSPARENT,
Color.parseColor("#AAAAAAAA"));
// 绘制时渐变
mPaintCircle.setShader(mShader);
// 增加旋转动画,使用矩阵实现
canvas.concat(matrix); // 前置动画
canvas.drawCircle(w / 2, h / 2, w * 7 / 10, mPaintCircle);
}
}

以上所述是小编给大家介绍的Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)的相关知识,希望对大家有所帮助。

相关文章

  • Android利用SAX对XML进行增删改查操作详解

    Android利用SAX对XML进行增删改查操作详解

    在项目中会遇到对于XML的增删改查,下面这篇文章主要给大家介绍了关于Android利用SAX对XML进行增删改查操作的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • Android神兵利器之Image Asset Studio的实现

    Android神兵利器之Image Asset Studio的实现

    这篇文章主要介绍了Android神兵利器之Image Asset Studio的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • PowerManagerService之自动灭屏流程解析

    PowerManagerService之自动灭屏流程解析

    这篇文章主要为大家介绍了PowerManagerService之自动灭屏流程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 如何更改Dialog的标题与按钮颜色详解

    如何更改Dialog的标题与按钮颜色详解

    这篇文章主要给大家介绍了关于如何更改Dialog的标题与按钮颜色的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面跟着小编来一起学习学习吧。
    2017-08-08
  • Android样式的开发:layer-list实例详解

    Android样式的开发:layer-list实例详解

    本文主要介绍Android样式开发layer-list,这里整理了详细的资料,及简单示例代码有兴趣的小伙伴可以参考下
    2016-09-09
  • Android中利用SurfaceView制作抽奖转盘的全流程攻略

    Android中利用SurfaceView制作抽奖转盘的全流程攻略

    这篇文章主要介绍了Android中利用SurfaceView制作抽奖转盘的全流程,从图案的绘制到转盘的控制再到布局,真的非常全面,需要的朋友可以参考下
    2016-04-04
  • Android仿QQ列表左滑删除操作

    Android仿QQ列表左滑删除操作

    这篇文章主要为大家详细介绍了Android仿QQ列表左滑删除操作的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android沉浸式状态栏 + actionBar渐变 + scrollView顶部伸缩效果

    Android沉浸式状态栏 + actionBar渐变 + scrollView顶部伸缩效果

    这篇文章主要介绍了Android沉浸式状态栏 + actionBar渐变 + scrollView顶部伸缩效果即QQ好友动态页面效果,本文通过实例代码给大家介绍的非常详细,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-12-12
  • 详解基于Android的Appium+Python自动化脚本编写

    详解基于Android的Appium+Python自动化脚本编写

    这篇文章主要介绍了详解基于Android的Appium+Python自动化脚本编写,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Android View事件机制 21问21答

    Android View事件机制 21问21答

    这篇文章主要介绍了Android View事件机制 21问21答 的相关资料,需要的朋友可以参考下
    2016-02-02

最新评论