您的位置:首页 > 移动开发 > 微信开发

防微信雷达扫描加好友控件实现

2015-09-15 14:55 666 查看
效果图如下:



RadarView.java

import android.annotation.SuppressLint;
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.SweepGradient;
import android.os.Handler;
import android.util.AttributeSet;
import android.widget.FrameLayout;

public class RadarView extends FrameLayout {
private int w, h;
private Matrix matrix;
private Paint mPaintLine;// 画普通圆和线的画笔
private Paint mPaintSector;// 画有渐变效果的圆的画笔
public boolean isstart = false;
private int start;
private Handler handler = new Handler();
private Runnable run = new Runnable() {

public void run() {
// TODO Auto-generated method stub
start = start + 1;
matrix = new Matrix();
matrix.postRotate(start, w / 2, h / 2);
RadarView.this.invalidate();
handler.postDelayed(run, 50);
}
};

public RadarView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
initPaint();
setBackgroundResource(R.drawable.a1v);
w = context.getResources().getDisplayMetrics().widthPixels;
h = context.getResources().getDisplayMetrics().heightPixels;
handler.post(run);
}

private void initPaint() {
// TODO Auto-generated method stub
mPaintLine = new Paint();
mPaintLine.setColor(Color.parseColor("#A1A1A1"));
mPaintLine.setStrokeWidth(3);
mPaintLine.setAntiAlias(true);
mPaintLine.setStyle(Style.STROKE);

mPaintSector = new Paint();
mPaintSector.setColor(0x9D00ff00);
mPaintSector.setAntiAlias(true);
matrix = new Matrix();
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
setMeasuredDimension(w, h);
}

@SuppressLint("DrawAllocation")
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.drawCircle(w / 2, h / 2, w / 6, mPaintLine);// 小圆
canvas.drawCircle(w / 2, h / 2, 2 * w / 6, mPaintLine);// 中圆
canvas.drawCircle(w / 2, h / 2, 11 * w / 20, mPaintLine);
canvas.drawCircle(w / 2, h / 2, 7 * h / 16, mPaintLine);// 大圆
SweepGradient mShader = new SweepGradient(w / 2, h / 2,
Color.TRANSPARENT, Color.parseColor("#AAAAAAAA"));
mPaintSector.setShader(mShader);
canvas.concat(matrix);
canvas.drawCircle(w / 2, h / 2, 7 * h / 16, mPaintSector);
super.onDraw(canvas);
}
}


activity:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

public class CustomerRadarViewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_customer_radar_view);
}
public void quit(View v){
finish();
}
}


布局文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<com.tz.dream.customer.view.RadarView
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:layout_marginTop="15dp"
android:src="@drawable/girl" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="30dp"
android:layout_marginLeft="5dp"
android:background="@drawable/back_selector"
android:paddingBottom="3dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="3dp"
android:text="退出"
android:textColor="#A1A1A1"
android:onClick="quit"/>

</FrameLayout>


整理自源代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: