Android百度地图雷达效果,实现百度地图的身边雷达的功能效果

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;// 旋转的原点x

float y = 160;// 旋转的原点y

public 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);

}

@Override

protected 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);

}

}

@Override

public 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);

}

}

四、实现效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值