iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android自定义wheelview随机选号效果
  • 742
分享到

Android自定义wheelview随机选号效果

wheelviewAndroid 2022-06-06 05:06:49 742人浏览 薄情痞子
摘要

先看下利用wheelview实现滚动随机选择号码效果: 直接上代码 首页就是dialog显示不在描述 主要看dialog代码 package com.yskj.jh.

先看下利用wheelview实现滚动随机选择号码效果:

直接上代码

首页就是dialog显示不在描述
主要看dialog代码


package com.yskj.jh.wheeldemo;
import Android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.yskj.jh.wheeldemo.wheel.adapters.AbstractWheelTextAdapter;
import com.yskj.jh.wheeldemo.wheel.views.OnWheelChangedListener;
import com.yskj.jh.wheeldemo.wheel.views.OnWheelScrollListener;
import com.yskj.jh.wheeldemo.wheel.views.WheelView;
import java.util.ArrayList;
import java.util.List;

public class SnatchDialog extends Dialog implements View.OnClickListener, OnWheelChangedListener {
 private Context context;
 private TextView tvNumberL, tvNumberC, tvNumberR;
 //数字控件
 private WheelView wvLeft;
 private WheelView wvCenter;
 private WheelView wvRight;
 //数字集合
 private List<String> list = new ArrayList<String>();
 //选中的数字信息
 private String strLeft;
 private String strCenter;
 private String strRight = "1";
 private TextView btnSure;//确定按钮
 private ImageView btnCancle;//取消按钮
 private TextView btnRandom;//随机
 //回调函数
 private OnSnatchCListener onSnatchCListener;
 private NumberAdapter adapter;
 //显示文字的字体大小
 private int maxsize = 26;
 private int minsize = 18;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.dialog_snatch);
 initView();
 }
 public SnatchDialog(Context context){
 super(context, R.style.ShareDialog);
 this.context = context;
 }
 private void initView() {
 tvNumberL = (TextView) findViewById(R.id.tv_number1);
 tvNumberC = (TextView) findViewById(R.id.tv_number2);
 tvNumberR = (TextView) findViewById(R.id.tv_number3);
 for (int i = 0; i < 10; i++) {
  list.add(i + "");
 }
 wvLeft = (WheelView) findViewById(R.id.wv_snatch_left);
 wvCenter = (WheelView) findViewById(R.id.wv_snatch_center);
 wvRight = (WheelView) findViewById(R.id.wv_snatch_right);
 btnSure = (TextView) findViewById(R.id.tv_sure);
 btnCancle = (ImageView) findViewById(R.id.img_cancel);
 btnRandom = (TextView) findViewById(R.id.tv_random);
 btnSure.setOnClickListener(this);
 btnCancle.setOnClickListener(this);
 btnRandom.setOnClickListener(this);
 wvLeft.addChangingListener(this);
 wvCenter.addChangingListener(this);
 wvRight.addChangingListener(this);
 wvLeft.setCyclic(true);
 wvRight.setCyclic(true);
 wvCenter.setCyclic(true);
 wvLeft.setVisibleItems(3);
 wvCenter.setVisibleItems(3);
 wvRight.setVisibleItems(3);
 wvLeft.addScrollingListener(new OnWheelScrollListener() {
  @Override
  public void onScrollingStarted(WheelView wheel) {
  }
  @Override
  public void onScrollingFinished(WheelView wheel) {
  String currentText = (String) adapter.getItemText(wheel.getCurrentItem());
  strLeft = (String) adapter.getItemObject(wheel.getCurrentItem());
  setTextViewSize(strLeft, adapter);
  tvNumberL.setText(strLeft);
  }
 });
 wvCenter.addScrollingListener(new OnWheelScrollListener() {
  @Override
  public void onScrollingStarted(WheelView wheel) {
  }
  @Override
  public void onScrollingFinished(WheelView wheel) {
  String currentText = (String) adapter.getItemText(wheel.getCurrentItem());
  strCenter = (String) adapter.getItemObject(wheel.getCurrentItem());
  setTextViewSize(strCenter, adapter);
  tvNumberC.setText(strCenter);
  }
 });
 wvRight.addScrollingListener(new OnWheelScrollListener() {
  @Override
  public void onScrollingStarted(WheelView wheel) {
  }
  @Override
  public void onScrollingFinished(WheelView wheel) {
  String currentText = (String) adapter.getItemText(wheel.getCurrentItem());
  strRight = (String) adapter.getItemObject(wheel.getCurrentItem());
  setTextViewSize(strRight, adapter);
  tvNumberR.setText(strRight);
  }
 });
 
 adapter = new NumberAdapter(context, list, 0, maxsize, minsize);
 wvLeft.setViewAdapter(adapter);
 wvLeft.setCurrentItem(0);
 wvCenter.setViewAdapter(adapter);
 wvCenter.setCurrentItem(0);
 wvRight.setViewAdapter(adapter);
 wvRight.setCurrentItem(1);
 }
 @Override
 public void onChanged(WheelView wheel, int oldValue, int newValue) {
 }
 public interface OnSnatchCListener {
 void onClick(String strLeft, String strCenter, String strRight);
 }
 @Override
 public void onClick(View v) {
 if (v == btnSure) {
  if (onSnatchCListener != null) {
  onSnatchCListener.onClick(strLeft, strCenter, strRight);
  }
  if (strLeft == null) {
  strLeft = "0";
  }
  if (strCenter == null) {
  strCenter = "0";
  }
  if (strRight == null) {
  strRight = "0";
  }
  if ((strLeft + strCenter + strRight).equals("000")) {
  Toast.makeText(context, "不能为0", Toast.LENGTH_SHORT).show();
  } else {
  if (Integer.parseInt(strLeft + strCenter + strRight) > 0 && Integer.parseInt(strLeft + strCenter + strRight) <= 999) {
  }
  }
 }
 if (v == btnCancle) {
  dismiss();
 }
 if (v == btnRandom) {
  int a = (int) (Math.random() * 5000 + 1);
  int b = (int) (Math.random() * 5000 + 1);
  int c = (int) (Math.random() * 5000 + 1);
  wvLeft.scroll(a, 500);
  wvRight.scroll(b, 500);
  wvCenter.scroll(c, 500);
 }
 }
 //适配器
 public class NumberAdapter extends AbstractWheelTextAdapter {
 List<String> list;
 protected NumberAdapter(Context context, List<String> list, int currentItem, int maxsize, int minsize) {
  super(context, R.layout.item_birth_year, NO_RESOURCE, currentItem, maxsize, minsize);
  this.list = list;
  setItemTextResource(R.id.tempValue);
 }
 @Override
 public View getItem(int index, View cachedView, ViewGroup parent) {
  View view = super.getItem(index, cachedView, parent);
  return view;
 }
 @Override
 protected CharSequence getItemText(int index) {
  if (list != null && list.size() > 0) {
  return list.get(index);
  }
  return "";
 }
 @Override
 protected Object getItemObject(int index) {
  if (list != null && list.size() > 0) {
  return list.get(index);
  }
  return null;
 }
 @Override
 public int getItemsCount() {
  if (list != null) {
  return list.size();
  }
  return 0;
 }
 }
 public void setTextViewSize(String curriteItemText, NumberAdapter adapter) {
 ArrayList<View> arrayList = adapter.getTestViews();
 int size = arrayList.size();
 String currentText;
 for (int i = 0; i < size; i++) {
  TextView textview = (TextView) arrayList.get(i);
  currentText = textview.getText().toString();
  if (curriteItemText.equals(currentText)) {
  textview.setTextSize(maxsize);
  } else {
  textview.setTextSize(minsize);
  }
 }
 }
 public void setOnSnatchCListener(OnSnatchCListener onSnatchCListener) {
 this.onSnatchCListener = onSnatchCListener;
 }
}

布局


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="385dp"
 android:layout_marginBottom="5dp"
 android:layout_marginLeft="5dp"
 android:layout_marginRight="5dp"
 android:background="#00000000"
 android:gravity="bottom"
 android:layout_gravity="bottom"
 android:orientation="vertical">
 <LinearLayout
 android:id="@+id/ly_myinfo_changeaddress_child"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:background="@drawable/address_edit_delete_ensure_bg"
 android:orientation="vertical"
 >
 <FrameLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content">
  <TextView
  android:layout_width="match_parent"
  android:layout_height="45dp"
  android:gravity="center"
  android:textSize="16sp"
  android:textColor="#7a7a7c"
  android:text="选择幸运号" />
  <ImageView
  android:id="@+id/img_cancel"
  android:layout_width="16dp"
  android:layout_height="16dp"
  android:layout_gravity="right|center"
  android:layout_marginRight="17dp"
  android:clickable="true"
  android:src="@mipmap/cha" />
 </FrameLayout>
 <View
  android:layout_width="match_parent"
  android:layout_height="1dp"
  android:background="#f5f5f5" />
 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="110dp"
  android:gravity="center_vertical"
  android:orientation="horizontal">
  <com.yskj.jh.wheeldemo.wheel.views.WheelView
  android:id="@+id/wv_snatch_left"
  android:layout_width="0dp"
  android:layout_height="match_parent"
  android:layout_gravity="center_vertical"
  android:layout_weight="1" />
  <com.yskj.jh.wheeldemo.wheel.views.WheelView
  android:id="@+id/wv_snatch_center"
  android:layout_width="0dp"
  android:layout_height="match_parent"
  android:layout_gravity="center_vertical"
  android:layout_weight="1" />
  <com.yskj.jh.wheeldemo.wheel.views.WheelView
  android:id="@+id/wv_snatch_right"
  android:layout_width="0dp"
  android:layout_height="match_parent"
  android:layout_gravity="center_vertical"
  android:layout_weight="1" />
 </LinearLayout>
 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:orientation="vertical">
  <LinearLayout
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_marginTop="8dp"
  android:orientation="horizontal">
  <TextView
   android:id="@+id/tv_number"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="当前选中的号码是: "
   android:textColor="#faa701"
   android:textSize="11sp"/>
  <TextView
   android:id="@+id/tv_number1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="11sp"
   android:textColor="#faa701"
   android:text="0"/>
  <TextView
   android:id="@+id/tv_number2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="11sp"
   android:textColor="#faa701"
   android:text="0"/>
  <TextView
   android:id="@+id/tv_number3"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="11sp"
   android:textColor="#faa701"
   android:text="1"/>
  </LinearLayout>
  <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal">
  <TextView
   android:id="@+id/tv_random"
   android:layout_width="0dp"
   android:layout_height="27dp"
   android:layout_weight="1"
   android:layout_margin="10dp"
   android:background="@drawable/round_corner_blue"
   android:gravity="center"
   android:text="我要随机选号"
   android:clickable="true"
   android:textSize="13sp"
   android:textColor="#45a3f3" />
  <TextView
   android:id="@+id/tv_sure"
   android:layout_width="0dp"
   android:layout_height="27dp"
   android:layout_weight="1"
   android:layout_margin="10dp"
   android:background="@drawable/round_corner_blue_btn"
   android:gravity="center"
   android:clickable="true"
   android:text="确定"
   android:textSize="15sp"
   android:textColor="#ffffff" />
  </LinearLayout>
 </LinearLayout>
 </LinearLayout>
</LinearLayout>

源码下载:http://xiazai.jb51.net/201612/yuanma/AndroidWheelDemo(jb51.net).rar

您可能感兴趣的文章:Android自定义WheelView地区选择三级联动Android自定义可循环的滚动选择器CycleWheelViewAndroid自定义实现循环滚轮控件WheelViewWheelView实现上下滑动选择器


--结束END--

本文标题: Android自定义wheelview随机选号效果

本文链接: https://www.lsjlt.com/news/22764.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android自定义选项卡切换效果
    本文实例为大家分享了Android自定义选项卡切换效果的具体代码,供大家参考,具体内容如下 一、实际使用的效果 二、自定义可切换的标题栏 1、布局 <?xml v...
    99+
    2024-04-02
  • Android自定义日历效果
    要实现Android自定义日历效果,可以按照以下步骤进行:1. 创建一个自定义的CalendarView控件,继承自ViewGrou...
    99+
    2023-08-15
    Android
  • Android自定义加载框效果
    本文实例为大家分享了Android自定义加载框效果的具体代码,供大家参考,具体内容如下 效果图 菊花图标(mipmap-xxhdpi) 加载框圆角背景drawable <...
    99+
    2024-04-02
  • Android自定义轮播图效果
    本文实例为大家分享了Android自定义轮播图效果的具体代码,供大家参考,具体内容如下 概述 1、写一个布局,其中有ViewPager,TextView,LinearLayout. ...
    99+
    2024-04-02
  • Android自定义弹框Dialog效果
    本文实例为大家分享了Android自定义弹框Dialog效果的具体代码,供大家参考,具体内容如下 1.dialog_delete.xml <xml version=...
    99+
    2024-04-02
  • Android自定义弹出框dialog效果
    项目要用到弹出框,还要和苹果的样式一样(Android真是没地位),所以就自己定义了一个,不是很像(主要是没图),但是也还可以。废话不多说了,直接上代码先看布局文件<?xml version="1.0" encoding="u...
    99+
    2023-05-31
    android 弹出框 dialog
  • Android自定义悬浮按钮效果
    本文实例为大家分享了Android自定义悬浮按钮效果的具体代码,供大家参考,具体内容如下 以下:内容没有参考,写的也是一个比较简单的例子,主要就是应用切换前后台时会显示/隐藏悬浮窗。...
    99+
    2024-04-02
  • Android自定义弹窗提示效果
    本文实例为大家分享了Android 自定义弹窗提示的具体代码,供大家参考,具体内容如下 Java文件: private void showSetDeBugDialog() { ...
    99+
    2024-04-02
  • Android studio自定义对话框效果
    本文实例为大家分享了Android studio自定义对话框效果的具体代码,供大家参考,具体内容如下 实现步骤: 第一步:自定义.xml布局文件 <?xml ver...
    99+
    2024-04-02
  • Android怎么自定义日历效果
    要自定义Android日历效果,可以使用Android中的CalendarView或者自定义View来实现。以下是一种简单的自定义日...
    99+
    2023-08-16
    Android
  • Android自定义View实现随机数验证码
    目录前言效果自定义 View 分类步骤1.自定义属性2.添加构造方法3.在构造里获取自定义样式4.重写 onDraw 计算坐标绘制5.重写 onMeasure 测量宽高6.设置点击事...
    99+
    2024-04-02
  • Android自定义圆形进度条效果
    本文实例为大家分享了Android自定义圆形进度条效果的具体代码,供大家参考,具体内容如下 1 控件 RoundProgress package listview.tianhet...
    99+
    2024-04-02
  • Android自定义ViewGroup多行多列效果
    本文实例为大家分享了Android自定义ViewGroup多行多列的具体代码,供大家参考,具体内容如下 先看下效果图 每行两个子孩子 每行一个子孩子 实现思路 自定义viewGr...
    99+
    2024-04-02
  • Android自定义scrollview实现回弹效果
    在ios手机上经常看到页面上下滑动回弹效果,安卓中没有原生控件支持,这里自己就去自定义一个scrollview实现回弹效果 1. 新建MyScrollView并继承ScrollVie...
    99+
    2024-04-02
  • Android怎么自定义弹框Dialog效果
    今天小编给大家分享一下Android怎么自定义弹框Dialog效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。具体效果如下...
    99+
    2023-06-30
  • Android自定义Drawable实现圆角效果
    Drawable是一种可绘制资源的载体,如图形、图像等。在实际开发中可以作为view的背景。主要有静态和动态两种方式,静态通过xml描述使用,动态即自定义Drawable。本文实现一个圆形和圆角的背景图片效果。效果图:实现方式:初始化一个B...
    99+
    2023-05-30
    drawable 圆角 roi
  • Android自定义View实现扫描效果
    本文实例为大家分享了Android自定义View实现扫描效果的具体代码,供大家参考,具体内容如下 演示效果如下: 实现内容: 1、控制动画是竖向或者横向 2、控制动画初始是从底部/...
    99+
    2024-04-02
  • android自定义进度条移动效果
    本文实例为大家分享了android实现进度条移动效果的具体代码,供大家参考,具体内容如下 自定义进度条,效果如下: CustomViewActivity.java public...
    99+
    2024-04-02
  • Android自定义View实现时钟效果
    本文实例为大家分享了Android自定义View实现时钟效果的具体代码,供大家参考,具体内容如下 自定义时钟 初学自定义View,先画一个不太成熟的时钟(甚至只有秒针) 时钟效果 ...
    99+
    2024-04-02
  • android自定义左侧滑出菜单效果
    这里给大家提供一个类似QQ聊天那种可以左侧滑出菜单的自定义控件。希望对大家有帮助。参考了一些网友的做法,自己整理优化了一下,用法非常简单,就一个类,不需要自己写任何的代码,只要添加上...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作