您的位置:首页 > 其它

绘制一个简单的实现接口盘

2015-08-12 13:03 489 查看
闲来无事,做一个简单的抽奖转盘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 com.microchange.lucky;

import android.app.Activity;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.Interpolator;
import android.view.animation.RotateAnimation;

public class MainActivity extends Activity {
RectF rect;
int radius = 300;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
HalfCircle circle = new HalfCircle(getApplicationContext());
circle.setOval(getRectF());
//		circle.setStartAngle(90);
circle.setUseCenter(true);
circle.setCount(9);
Animation animation = new RotateAnimation(0, 135*10, getRectF().centerX(),  getRectF().centerY());
animation.setDuration(5000);
animation.setInterpolator(new DecelerateInterpolator());
//		animation.setRepeatCount(-1);
circle.setAnimation(animation );
//		animation.start();
setContentView(circle);
}

public RectF getRectF(){
if (rect==null){
//			getWindow().getDecorView().getWidth()
int width = getResources().getDisplayMetrics().widthPixels;
int height = getResources().getDisplayMetrics().heightPixels;
int top = (height - radius)/2;
int left = (width - radius)/2;
rect = new RectF(left, top, left+radius, top+radius);
}
return rect;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: