闲来无事,做了一个简单的抽奖转盘的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程序设计有所帮助。
本文向大家介绍unity实现简单抽奖系统,包括了unity实现简单抽奖系统的使用技巧和注意事项,需要的朋友参考一下 这段时间工作比较空闲,想做个抽奖系统,发现网上的抽奖系统看不懂,然后自己做了一个可以随意定义奖品概率,不管什么时候停下来指针最终都会转到指定的奖品哪。 废话不多说,动手一步一步来。 这个抽奖系统就使用了两张图片,一个指针,一个圆形的图片。 然后做一个预制体,图片就是圆形图片,imag
本文向大家介绍Android实现抽奖转盘实例代码,包括了Android实现抽奖转盘实例代码的使用技巧和注意事项,需要的朋友参考一下 本文详述了android抽奖程序的实现方法,程序为一个抽奖大转盘代码,里面定义了很多图形方法和动画。 实现主要功能的SlyderView.java源代码如下:
本文向大家介绍js实现可键盘控制的简单抽奖程序,包括了js实现可键盘控制的简单抽奖程序的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js抽奖程序的编写代码,以及编写注意事项,感兴趣的小伙伴们可以参考一下 代码: 注意点: 1.随机数,取数组的其中一个;取0-n之间:Math.random()*(n+1) 2.定时器,开始抽奖时要停止前面的一次抽奖,不然会定时器重叠 3.按键操作
本文向大家介绍python实现大转盘抽奖效果,包括了python实现大转盘抽奖效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现大转盘抽奖的具体代码,供大家参考,具体内容如下 选择转盘中的某一个方框,来进行抽奖 效果图: 就是上图这个界面了: start 开始按钮 stop 结束按钮 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍python实现转盘效果 python实现轮盘抽奖游戏,包括了python实现转盘效果 python实现轮盘抽奖游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现转盘效果的具体代码,供大家参考,具体内容如下 小编再为大家分享一款python模拟轮盘抽奖的游戏 python3.x的版本测试中文的变量名 以上就是本文的全部内容,希望对大家的学习有所帮助,也
本文向大家介绍js简单抽奖代码,包括了js简单抽奖代码的使用技巧和注意事项,需要的朋友参考一下 核心:js的Math对象和Array对象 demo:http://demo.jb51.net/js/2015/choujiang/ github:https://github.com/litengdesign/award