Android 仿微信雷达搜索好友

先上效果图:

这里写图片描述

先说下实现思路:

  • 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() {
        @Override
        public 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);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(width,height);
    }

    @Override
    protected 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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android仿微信源码是一种模仿微信功能和界面的Android应用程序源代码。通过使用这个源码,开发者可以基于微信的特性和设计思路,快速构建出一个类似微信的应用程序。 Android仿微信源码一般会包含以下几个主要功能和模块: 1. 登录和注册功能:用户可以通过手机号码或者邮箱注册和登录账号。 2. 消息功能:包括文本消息、语音消息、图片消息、表情消息以及文件消息。用户可以发送和接收消息,并且支持定位信息的发送。 3. 朋友圈功能:允许用户发表和查看好友的动态,可以发布文字、图片和视频等内容,并且支持点赞和评论。 4. 通讯录功能:显示用户的好友列表,可以查找新的好友并添加。 5. 个人信息功能:用户可以编辑和查看自己的个人信息,包括昵称、头像、性别、个性签名等。 6. 设置功能:用户可以修改密码、绑定手机号码、更改系统设置等。 7. 实时聊天功能:支持好友之间的实时聊天,并且可以发送语音和图片消息。 8. 推送通知功能:当有新消息或者好友发表动态时,可以通过推送通知提醒用户。 除了以上功能之外,还可以根据需求添加其他功能模块,比如群聊、支付、音视频通话等。 通过使用Android仿微信源码,开发者可以快速搭建起一个类似微信的社交应用,节约开发时间和成本。但是需要注意的是,为了避免侵权问题,开发者在使用仿微信源码时需谨慎,并且遵守相关法律法规。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值