首页 > 系统 > Android > 正文

Android简单实现圆盘抽奖界面

2020-04-11 11:02:23
字体:
来源:转载
供稿:网友

闲来无事,做了一个简单的抽奖转盘的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;  } } 

希望本文所述对大家学习Android程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表