阅读背景:

圆盘抽奖的界面简单实现

来源:互联网 

闲来无事,做了一个简略的抽奖转盘的ui实现,供大家参考


/**
 * 
 */
package com.microchange.lucky;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

public class HalfCircle extends View {

	private Paint paint;
	private RectF oval;
	private float startAngle;
	private float sweepSpeed;
	private float sweepAngle;
	boolean useCenter;
	int count;//  等份
	@Override
	protected void onDraw(Canvas canvas) {
		setSweepAngle(count);
		while (startAngle <= 360) {
			if (startAngle % (count*3) == 0) {
				paint.setColor(Color.BLUE);
			} else if (startAngle % (count*2) == 0){
				paint.setColor(Color.GREEN);
			}else {
				paint.setColor(Color.RED);
			}
			Log.e(""+startAngle, paint.getColor()+"");
			canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint);
			startAngle += count;
		}
		float centerX = oval.centerX();
		float centerY = oval.centerY();
		paint.setColor(Color.WHITE);
//		paint.setStrokeWidth(5);
//		paint.setStyle(Paint.Style.STROKE); //设置空心
		paint.setAntiAlias(true);  //清除锯齿 
		canvas.drawCircle(centerX, centerY, 50, paint);
		String text = "奖";
		paint.setTextSize(20 * getContext().getResources().getDisplayMetrics().density);
		float measureText = paint.measureText(text);
		float textY = paint.descent() - paint.ascent();
		paint.setColor(Color.RED);
//		canvas.drawLine(0, centerY, 480, centerY, paint);
//		canvas.drawText(text, centerX-(measureText/2), centerY, paint);
		canvas.drawText(text, centerX-(measureText/2), centerY+(textY/4), paint);
	}

	private void init() {
		paint = new Paint();
		paint.setColor(Color.BLUE);
		paint.setAntiAlias(true);
		paint.setStrokeWidth(5);
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		return super.onTouchEvent(event);
	}
	
	
	/**
	 * @return the count
	 */
	public int getCount() {
		return count;
	}

	/**
	 * @param count the count to set
	 */
	public void setCount(int count) {
		this.count = 360 / count;
	}

	public Paint getPaint() {
		return paint;
	}

	public void setPaint(Paint paint) {
		this.paint = paint;
	}

	public RectF getOval() {
		return oval;
	}

	public void setOval(RectF oval) {
		this.oval = oval;
	}

	public float getStartAngle() {
		return startAngle;
	}

	public void setStartAngle(float startAngle) {
		this.startAngle = startAngle;
	}

	public float getSweepSpeed() {
		return sweepSpeed;
	}

	public void setSweepSpeed(float sweepSpeed) {
		this.sweepSpeed = sweepSpeed;
	}

	public float getSweepAngle() {
		return sweepAngle;
	}

	public void setSweepAngle(float sweepAngle) {
		this.sweepAngle = sweepAngle;
	}

	public boolean isUseCenter() {
		return useCenter;
	}

	public void setUseCenter(boolean useCenter) {
		this.useCenter = useCenter;
	}

	public HalfCircle(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		init();
	}

	public HalfCircle(Context context, AttributeSet attrs) {
		this(context, attrs, 0);
	}

	public HalfCircle(Context context) {
		this(context, null, 0);
	}

}
/**
 * 
 */
package 




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: