热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Android自定义View实现抽奖转盘

这篇文章主要为大家详细介绍了Android自定义View实现抽奖转盘,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android自定义View实现抽奖转盘的具体代码,供大家参考,具体内容如下

public class LuckCircle extends SurfaceView implements SurfaceHolder.Callback,Runnable {
 
 private SurfaceHolder mHolder;
 
 private Canvas mCanvas;
 
 //用于绘制的线程
 
 private Thread mThread;
 
 //线程开关的控制
 
 private boolean isRunning;
 
 private String[] mStr = new String[]{"优惠券","十元话费","恭喜发财","恭喜发财","英雄皮肤","50M流量"};

 //物品的图片
 
 private int[] mImgs = new int[]{R.mipmap.ic_launcher,
 R.mipmap.ic_launcher,R.mipmap.ic_launcher,
 R.mipmap.ic_launcher,R.mipmap.ic_launcher,R.mipmap.ic_launcher};
 
 private int mItemCount = 6;
 
 //盘快的颜色
 
 private int[] mColor = new int[]{0xffffc300,0xFFD9B114,0xFFDC0B2E,0xFF5510A4,0xFF447C42,0xFFEC3636};

 //与图片对应的bitmap数组
 
 private Bitmap[] mImgBitmap;

 //整个盘块的范围
 
 private RectF mRange = new RectF();
 
 //整个盘块的直径

 private int mRadius;
 
 
 //绘制盘块的画笔
 
 private Paint mArcPaint;
 
 
 //绘制文本的画笔
 
 private Paint mTextPaint;
 
 //滚动速度
 
 private double mSpeed = 10;
 
 
 //绘制的角度

 private volatile int mStartAngle = 0;
 
 
 //判断是否点击了停止按钮
 
 private boolean isShouldEnd;
 
 
 //转盘的中心位置

 private int mCenter;
 
 //padding取四个padding中的最小值
 
 private int mPadding;
 
 //背景图
 
 //private Bitmap mBgBitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher);
 
 private float mTextSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,20,getResources().getDisplayMetrics());
 public LuckCircle(Context context) {
 this(context,null);
 }
 
 public LuckCircle(Context context, AttributeSet attrs) {
 super(context, attrs);
 mHolder = getHolder();
 mHolder.addCallback(this);
 // 可获得焦点
 setFocusable(true);
 setFocusableInTouchMode(true);
 // 设置常亮
 setKeepScreenOn(true);
 }
 
 
 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
 super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 int width = Math.min(getMeasuredWidth(),getMeasuredHeight());
 
 mPadding = getPaddingLeft();
 
 mRadius = width - mPadding *2;
 
 mCenter = width / 2;
 setMeasuredDimension(width,width);
 }
 
 @Override
 public void surfaceCreated(SurfaceHolder holder) {
 // 初始化绘制盘块的画笔
 mArcPaint = new Paint();
 mArcPaint.setAntiAlias(true);
 mArcPaint.setDither(true);
 
 // 初始化绘制盘块的画笔
 mTextPaint = new Paint();
 mTextPaint.setColor(0XFF0B25CF);
 mTextPaint.setTextSize(mTextSize);
 
 // 初始化盘块绘制的范围
 mRange = new RectF(mPadding,mPadding,mPadding+mRadius,mPadding+mRadius);
 
 // 初始化图片
 mImgBitmap = new Bitmap[mItemCount];
 for (int i = 0; i 

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • CentOS 7.2 配置防火墙端口开放
    本文介绍如何在 CentOS 7.2 系统上配置防火墙以开放特定的服务端口,包括 FTP 服务的临时与永久开放方法,以及如何验证配置是否生效。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • Git管理工具SourceTree安装与使用指南
    本文详细介绍了Git管理工具SourceTree的安装、配置及团队协作方案,旨在帮助开发者更高效地进行版本控制和项目管理。 ... [详细]
  • 本文详细介绍如何在Linux系统中配置SSH密钥对,以实现从一台主机到另一台主机的无密码登录。内容涵盖密钥对生成、公钥分发及权限设置等关键步骤。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本文将详细介绍如何在没有显示器的情况下,使用Raspberry Pi Imager为树莓派4B安装操作系统,并进行基本配置,包括设置SSH、WiFi连接以及更新软件源。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • 本文详细介绍如何通过设置SSH密钥来获取连接GitHub远程仓库的权限,包括生成密钥、添加到GitHub账户以及验证连接等步骤。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • 最新计算机专业原创毕业设计参考选题都有源码+数据库是近期作品ling取参考你的选题刚好在下面有,有时间看到机会给您发1ssm资源循环利用2springboot校园考勤系统3ssm防 ... [详细]
  • 本指南详细介绍了如何在同一台计算机上配置多个GitHub账户,并使用不同的SSH密钥进行身份验证,确保每个账户的安全性和独立性。 ... [详细]
author-avatar
佩刚坤斌冠如_567
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有