Android自定义SurfaceView实现抽奖转盘实例源代码
2016-06-17 13:32:26 By: shinyuu
分享一款自定义Surfaceview实现幸运大抽奖的Demo、界面比较简单、代码也不复杂、可以根据自己项目的需求修改界面、下面是Demo的截图
绘制盘块图片代码
private void drawIcon(float tmpAngle, Bitmap bitmap) { //设置图片的宽度为直径的1/8 int imgWidth = mRadius/8; float angle = (float) ((tmpAngle 360/itemCount/2)*Math.PI/180); int x = (int) (mCenter mRadius/2/2*Math.cos(angle)); int y = (int) (mCenter mRadius/2/2*Math.sin(angle)); //确定那个图片的位置 Rect rect = new Rect(x-imgWidth/2, y-imgWidth/2, x imgWidth/2, y imgWidth/2); canvas.drawBitmap(bitmap, null, rect,null); }
绘制文本代码
private void drawText(float tmpAngle, float sweepAngle, String string) { Path path = new Path(); path.addArc(mRange, tmpAngle, sweepAngle); // 利用水平偏移量让文字居中 float textWidth = mTextPanit.measureText(string); int hOffset = (int) (mRadius*Math.PI/itemCount/2 - textWidth/2); //垂直偏移量 int vOffset = mRadius/2/6; canvas.drawTextOnPath(string, path, hOffset, vOffset, mTextPanit); }
public void luckyStart(int index){ //计算每一项的角度 float angle = 360/itemCount; //计算每一项中奖范围(当前index) //1-->150~210 //0-->210~270 float from = 270-(index 1)*angle; float end = from angle; //设置停下来需要旋转的距离 float targetFrom = 4*360 from; float targetEnd = 4*360 end; float v1= (float) ((-1 Math.sqrt(1 8*targetFrom))/2); float v2= (float) ((-1 Math.sqrt(1 8*targetEnd))/2); mSpeed = v1 Math.random()*(v2-v1); isShouldEnd = false; }
android抽奖转盘源代码下载链接: android抽奖转盘代码 密码: khwt
若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力
想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)
或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)
如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教
为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)
感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛