Android編程簡單實(shí)現(xiàn)雷達(dá)掃描效果
本文實(shí)例講述了Android編程簡單實(shí)現(xiàn)雷達(dá)掃描效果。分享給大家供大家參考,具體如下:
在eoe看到有一篇關(guān)于雷達(dá)掃描的文章,然后看了下,很簡單,但是覺得還有很多可以優(yōu)化的地方,下面貼出來
package com.example.wave;
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.util.AttributeSet;
import android.widget.FrameLayout;
public class RadarView extends FrameLayout {
private int viewSize = 500;
private Paint mPaintLine;
private Paint mPaintSector;
private boolean isStart = false;
private ScanThread mThread;
private int start = 0;
private final int paintWidth = 10;
public RadarView(Context context) {
super(context);
init();
}
public RadarView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
initPaint();
mThread = new ScanThread();
setBackgroundColor(Color.TRANSPARENT);
}
private void initPaint() {
mPaintLine = new Paint();
mPaintLine.setStrokeWidth(paintWidth);
mPaintLine.setAntiAlias(true);
mPaintLine.setStyle(Style.STROKE);
mPaintLine.setColor(0xffff0000);
mPaintSector = new Paint();
mPaintSector.setColor(0x9D00ff00);
mPaintSector.setAntiAlias(true);
}
public void setViewSize(int size) {
this.viewSize = size;
mShader = new SweepGradient(viewSize >> 1, viewSize >> 1, Color.TRANSPARENT, Color.GREEN);
setMeasuredDimension(viewSize, viewSize);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(viewSize, viewSize);
}
public void start() {
mThread.start();
isStart = true;
}
public void stop() {
if (isStart) {
Thread.interrupted();
isStart = false;
}
}
private Shader mShader = new SweepGradient(viewSize >> 1, viewSize >> 1, Color.TRANSPARENT, Color.GREEN);
private Matrix matrix = new Matrix();
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int halfRadaSize = viewSize >> 1;
canvas.drawCircle(halfRadaSize, halfRadaSize, halfRadaSize >> 1, mPaintLine);
canvas.drawCircle(halfRadaSize, halfRadaSize, halfRadaSize - (paintWidth >> 1), mPaintLine);
canvas.drawLine(halfRadaSize, 0, halfRadaSize, viewSize, mPaintLine);
canvas.drawLine(0, halfRadaSize, viewSize, halfRadaSize, mPaintLine);
mPaintSector.setShader(mShader);
canvas.concat(matrix);
canvas.drawCircle(halfRadaSize, halfRadaSize, halfRadaSize - paintWidth, mPaintSector);
}
protected class ScanThread extends Thread {
int halfRadaSize = viewSize >> 1;
@Override
public void run() {
while (isStart) {
start = start + 2;
matrix.reset();
matrix.postRotate(start, halfRadaSize, halfRadaSize);
postInvalidate();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
希望本文所述對大家Android程序設(shè)計(jì)有所幫助。
- Android Shader應(yīng)用開發(fā)之雷達(dá)掃描效果
- Android仿微信雷達(dá)掃描效果的實(shí)現(xiàn)方法
- Android仿微信、QQ附近好友雷達(dá)掃描效果
- Android雷達(dá)掃描動態(tài)界面制作
- Android自定義ViewGroup實(shí)現(xiàn)絢麗的仿支付寶咻一咻雷達(dá)脈沖效果
- Android仿支付寶上芝麻信用分雷達(dá)圖
- Android動畫之雷達(dá)掃描效果
- Android仿微信雷達(dá)輻射搜索好友(邏輯清晰實(shí)現(xiàn)簡單)
- 基于Android自定義控件實(shí)現(xiàn)雷達(dá)效果
相關(guān)文章
Android實(shí)現(xiàn)帶附件的郵件發(fā)送功能
這篇文章主要介紹了Android實(shí)現(xiàn)帶附件的郵件發(fā)送功能的相關(guān)資料,android發(fā)送郵件有兩種方式,本文重點(diǎn)介紹基于JMail實(shí)現(xiàn)郵件發(fā)送功能,感興趣的小伙伴們可以參考一下2016-01-01
Android O實(shí)現(xiàn)Framework層CENTER鍵長按功能方法
這篇文章主要為大家介紹了Android O實(shí)現(xiàn)Framework層CENTER鍵長按功能方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
關(guān)于Android 4.4相機(jī)預(yù)覽、錄像花屏的問題的解決方法
這篇文章主要介紹了關(guān)于Android 4.4相機(jī)預(yù)覽、錄像花屏的問題的解決方法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2016-12-12
Android BroadcastReceiver傳輸機(jī)制詳解
Android開發(fā)的四大組件分別是:活動(activity),用于表現(xiàn)功能;服務(wù)(service),后臺運(yùn)行服務(wù),不提供界面呈現(xiàn);廣播接受者(Broadcast Receive),勇于接收廣播;內(nèi)容提供者(Content Provider),支持多個應(yīng)用中存儲和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫,本篇著重介紹廣播組件2023-01-01
Android 通過網(wǎng)絡(luò)圖片路徑查看圖片實(shí)例詳解
這篇文章主要介紹了Android 通過網(wǎng)絡(luò)圖片路徑查看圖片實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06

