本文实例为大家分享了Android抽奖轮盘的具体代码,供大家参考,具体内容如下

main布局(图片资源请自行寻找,抱歉)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/bigwheelgg"
/>
<ImageView
android:id="@+id/light"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/light"
/>
<ImageView
android:id="@+id/main_wheel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/bigwheel"
/>
<ImageView
android:id="@+id/point"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/point"
/>
</FrameLayout>
main代码
//设置一个时间常量,此常量有两个作用,1.圆灯视图显示与隐藏中间的切换时间;2.指针转一圈所需要的时间,现设置为500毫秒
private static final long ONE_WHEEL_TIME = 500;
//记录圆灯视图是否显示的布尔常量
private boolean lightsOn = true;
//开始转动时候的角度,初始值为0
private int startDegree = 0;
private ImageView lightIv;
private ImageView pointIv;
private ImageView wheelIv;
//指针转圈圈数数据源
private int[] laps = { 5, 7, 10, 15 };
//指针所指向的角度数据源,因为有6个选项,所有此处是6个值
private int[] angles = { 0, 60, 120, 180, 240, 300 };
//转盘内容数组
private String[] lotteryStr = { "索尼PSP", "10元红包", "谢谢参与", "DNF钱包",
"OPPO MP3", "5元红包", };
//子线程与UI线程通信的handler对象
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 0:
if (lightsOn) {
// 设置lightIv不可见
lightIv.setVisibility(View.INVISIBLE);
lightsOn = false;
} else {
// 设置lightIv可见
lightIv.setVisibility(View.VISIBLE);
lightsOn = true;
}
break;
default:
break;
}
};
};
//监听动画状态的监听器
private Animation.AnimationListener al = new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
String name = lotteryStr[startDegree % 360 / 60];
Toast.makeText(MainActivity.this, name, Toast.LENGTH_LONG).show();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupViews();
flashLights();
pointIv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int lap = laps[(int) (Math.random() * 4)];
int angle = angles[(int) (Math.random() * 6)];
//每次转圈角度增量
int increaseDegree = lap * 360 + angle;
//初始化旋转动画,后面的四个参数是用来设置以自己的中心点为圆心转圈
RotateAnimation rotateAnimation = new RotateAnimation(
startDegree, startDegree + increaseDegree,
RotateAnimation.RELATIVE_TO_SELF, 0.5f,
RotateAnimation.RELATIVE_TO_SELF, 0.5f);
//将最后的角度赋值给startDegree作为下次转圈的初始角度
startDegree += increaseDegree;
//计算动画播放总时间
long time = (lap + angle / 360) * ONE_WHEEL_TIME;
//设置动画播放时间
rotateAnimation.setDuration(time);
//设置动画播放完后,停留在最后一帧画面上
rotateAnimation.setFillAfter(true);
//设置动画的加速行为,是先加速后减速
rotateAnimation.setInterpolator(MainActivity.this,
android.R.anim.accelerate_decelerate_interpolator);
//设置动画的监听器
rotateAnimation.setAnimationListener(al);
//开始播放动画
pointIv.startAnimation(rotateAnimation);
}
});
}
private void setupViews(){
lightIv = (ImageView) findViewById(R.id.light);
pointIv = (ImageView) findViewById(R.id.point);
wheelIv = (ImageView) findViewById(R.id.main_wheel);
}
//控制灯圈动画的方法
private void flashLights() {
Timer timer = new Timer();
TimerTask tt = new TimerTask() {
@Override
public void run() {
// 向UI线程发送消息
mHandler.sendEmptyMessage(0);
}
};
// 每隔ONE_WHEEL_TIME毫秒运行tt对象的run方法
timer.schedule(tt, 0, ONE_WHEEL_TIME);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 抽奖轮盘
# Android 实现九宫格抽奖功能
# Android自定义view制作抽奖转盘
# Android自定义View实现抽奖转盘
# Android自定义View实现QQ运动积分转盘抽奖功能
# Android使用surfaceView自定义抽奖大转盘
# Android打造流畅九宫格抽奖活动效果
# Android中利用SurfaceView制作抽奖转盘的全流程攻略
# Android App中实现简单的刮刮卡抽奖效果的实例详解
# Android简单实现圆盘抽奖界面
# Android实现九宫格抽奖
# 自己的
# 索尼
# 布尔
# 设置为
# 停留在
# 大家分享
# 所需要
# 每隔
# 完后
# 具体内容
# 值为
# 大家多多
# 为有
# 播放时间
# 发送消息
# 点为
# 下次
# 有两个
# 请自行
# 是用来
相关文章:
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
Python多线程使用规范_线程安全解析【教程】
如何在橙子建站上传落地页?操作指南详解
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何获取PHP WAP自助建站系统源码?
太原网站制作公司有哪些,网约车营运证查询官网?
,想在网上投简历,哪几个网站比较好?
独立制作一个网站多少钱,建立网站需要花多少钱?
如何用免费手机建站系统零基础打造专业网站?
如何将凡科建站内容保存为本地文件?
如何在宝塔面板中创建新站点?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
如何选择靠谱的建站公司加盟品牌?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
建站之星logo尺寸如何设置最合适?
常州企业网站制作公司,全国继续教育网怎么登录?
宝塔建站后网页无法访问如何解决?
PHP正则匹配日期和时间(时间戳转换)的实例代码
建站之星多图banner生成与模板自定义指南
建站之星代理如何获取技术支持?
高防服务器租用首荐平台,企业级优惠套餐快速部署
设计网站制作公司有哪些,制作网页教程?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
宝塔建站助手安装配置与建站模板使用全流程解析
建站之星代理平台如何选择最佳方案?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
海南网站制作公司有哪些,海口网是哪家的?
如何在云主机上快速搭建多站点网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
网站制作壁纸教程视频,电脑壁纸网站?
*服务器网站为何频现安全漏洞?
完全自定义免费建站平台:主题模板在线生成一站式服务
北京网站制作网页,网站升级改版需要多久?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
如何用狗爹虚拟主机快速搭建网站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
如何快速辨别茅台真假?关键步骤解析
网站制作话术技巧,网站推广做的好怎么话术?
如何用5美元大硬盘VPS安全高效搭建个人网站?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
常州自助建站工具推荐:低成本搭建与模板选择技巧
如何在阿里云域名上完成建站全流程?
江苏网站制作公司有哪些,江苏书法考级官方网站?
建站之星后台密码遗忘?如何快速找回?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
建站主机是否等同于虚拟主机?
*请认真填写需求信息,我们会在24小时内与您取得联系。