全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android抽奖轮盘的制作方法

本文实例为大家分享了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小时内与您取得联系。