仿淘宝双色球走势图自定义控件

Html5 canvas 绘制彩票走势图 因需要 要实现一个类似彩票走势图的功能,初次学Html5 ,很多地方不明白,前段时间也发帖请教过这个问题,也是没给个明确说话,在网上搜了很多,也没有实现的例子,今天仔细研究了下,发现其实也不是很难,现将代码贴出来,共同学习! 先来一张效果图: 实现的代码: table { border: 0; margin: 0; bor 阅读详情

博主爱玩彩票,今早刚好看到淘宝手机端彩票走势图表效果非常nice,于是乎code一上午,大致效果还是出来了,碍于数据就没有细调UI,效果图如下


实现思路也比较简单:几个recyclerView+手势分发,布局如下

整体布局是一个FrameLayout+上面的布局+自定义手势分发控件:LotteryTouchView

adapter需要实现item不同的背景,可以通过layoutPosition解决

               var drawableResId = 0
                when (item.isStatisticsDate) {//是否是统计相关数据
                    true -> {//历史间隔、遗漏分层等相关数据
                        drawableResId = when (helper.layoutPosition % 2 == 0) {
                            true -> {
                                R.drawable.shape_date_f6f0f3
                            }
                            false -> {
                                R.drawable.shape_date_ecc3c3
                            }
                        }
                    }
                    false -> {//开奖号相关数据
                        when (helper.layoutPosition % 2 == 0) {
                            true -> {
                                drawableResId = R.drawable.shape_date_ffffff
                            }
                            false -> {
                                drawableResId = R.drawable.shape_date_f7f7f7
                            }
                        }
                    }
                }
                name.setBackgroundResource(drawableResId)

recyclerView绑定适配器后发现HorizontalScrollView嵌套垂直滑动的recyclerView,recyclerView嵌套水平滑动的recyclerView横向滑动会有问题,重写垂直滑动recyclerView修改recyclerView的宽度

override fun onMeasure(widthSpec: Int, heightSpec: Int) {
        super.onMeasure(widthSpec, heightSpec)
        var params = layoutParams
        params.width = dip2px(context, 30f) * 33//双色球33个数字对应item个数*固定item宽度
        layoutParams = params
    }

单个模块的滑动没问题了,再来调整ui显示细节问题,根据返回数据约定值判断显示的文字颜色和背景色



class LotteryBean {
    /**
     * 期数
     */
    var dateName = ""

    /**
     * 是否是统计数据
     */
    var isStatisticsDate = false

    /**
     * 相关号码数据集合
     */
    var lotteryList : ArrayList<Lottery>? = null
    
       class Lottery {
       /**
        * 当前号码
        */
       var number = 0

       /**
        * 是否是中奖号码
        */
       var isLotteryNumber = false

       /**
        * 是否是连续号码
        */
       var isContinuousNumber = false

       /**
        * 是否是统计数据
        */
       var isStatisticsDate = false
   }
}

view.scrollBy(dx,dy) 函数可以实现view滑动指定距离值,自定义的LotteryTouchView根据DOWN、MOVE获得dx 、dy分发给需要联动滑动的控件调用scrollBy即可实现,代码如下


class LotteryTouchView @JvmOverloads constructor(
    context: Context?,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : View(context!!, attrs, defStyleAttr) {

    private var lastX = 0f
    private var lastY = 0f

  // .....................................................此处省略.............................................................

    fun bindViews(lotteryDateView: LotteryDateView, lotteryHeaderView: LotteryHeaderView.......)
         // .....................................................此处省略..需要联动的控件传入...........................................................
    {
        this.lotteryContentView = lotteryContentView
       // .....................................................此处省略.............................................................
    }

    override fun onTouchEvent(event: MotionEvent?): Boolean {
        when (event?.action) {
            MotionEvent.ACTION_DOWN -> {
                lastX = event!!.x //float DownX
                lastY = event!!.y //float DownY
            }
            MotionEvent.ACTION_MOVE -> {
                val moveX: Float = event!!.x - lastX //X轴距离
                val moveY: Float = event!!.y - lastY //y轴距离
                scrollXY(-moveX, -moveY)
                lastX = event!!.x //float DownX
                lastY = event!!.y //float DownY
            }
        }
        return true
    }

    private fun scrollXY(dx: Float, dy: Float) {
        lotteryDateView?.scrollBy(0, dy.toInt())
        lotteryHeaderView?.scrollBy(dx.toInt(), 0)
        lotteryContentView?.scrollBy(0, dy.toInt())
        scrollView?.scrollBy(dx.toInt(), 0)
    }

}

以上代码基本实现效果,考虑后续扩展彩种类型,可增加LotteryType,更具type修改固定适配器数据源和recyclerView宽度,至于界面细节调整参考adapter修改即可

Tip: 比较简单没有源码了,博主也比较懒见谅了

前端 JS实现彩票开奖走势图 连线 之前做过一个用canvas实现的走势图效果,这次直接用JS实现吧。(在vue3 + TS的项目中实现的) 一、渲染页面的时候把需要连线的点加上“标记”类名 二、找出所有的“标记”类名 这里要注意,DOM节点没渲染完成是会拿到空的 let eleDots = document.querySelectorAll(".lableNum"); 三、创建连线(画线方法) 这里要注意,创建出来的 i 标签的样式不要写在带有 scoped 的style里 阅读详情

相关推荐

小程序的模拟实战学习大乐透数据展示

最近在写一个小程序练手。准备做个中国体彩的小程序。公开部分代码及思路。 首先参考了体彩官网:http://www.lottery.gov.cn / 准备采用这种风格。制作如下: : 首先需要找到json的免费api接口:http://f.apiplus.net/dlt.json 这个是我度娘查到的一个 数据如下: {"rows":5,"code":"dlt","in

dl0246的博客 4220

安卓项目实战之:RecyclerView实现中奖公告列表信息垂直自动无限滚动效果

效果图 实现的思路 通过调用RecyclerView的smoothScrollToPosition(int position)方法我们可以实现平滑的滚动到参数所指定的position的位置,如果仅仅是调用了该方法那么滚动将会以系统默认的速度来进行,并且该速度通常是非常快的,快到如果将参数position的值设置的很小可能会看不到滚动的过程而直接看到结果,设置稍微大点例如为100时就会看到2秒的滚动...

智玲君 3324

uniapp(vue):js实现双色球开奖走势图带连线

uniapp(vue):js实现双色球开奖走势图带连线

sunluyi的博客 6441

使用canvs绘画彩票或股票走势图

1、先确定需要绘制图走势图的table2、获取table的尺寸,同时制作响应的canvs尺寸,canvs表格尺寸建议和表格尺寸相同,并通过定位覆盖在table之上,统称“设置画布”        let table = $('.chartsTable')    // 通过jquery获取表格对象 // 设置画布 let cvs = document.createEl...

scorpio的世界 6455

彩票走势图

这是一个彩票走势图,根据网上搜索的资源进行更改的,用了画布进行绘画每两点之间的走势,可以进行更改数据接口,以及绘画的格式

Android 彩票走势分析图

Android彩票走势图分析,适合新手学习,通过canvas绘制走势图

前端 彩票开奖走势图的实现

彩票开奖走势图的实现页面结构js 部分效果图 做的是移动端的VUE + Vant。走势图每一条线都是一个canvas实现的 页面结构 部分参数我用“***”打个码,这里tbody动态创建, <table id="zstable"> <thead> <tr> <th

weixin_45461674的博客 5081

纯api画走势图

纯api绘制走势图 vfp 画图的质量真不怎么样

通过SVG实现彩票数据走势图

主要通过html、css、js、svg等实现了彩票的数据走势图,主要利用空闲时间学习了下,请勿作为他用!svg.js 下载: https://download.youkuaiyun.com/download/songanshu/11863230 <!DOCTYPE html> <html> <head> <meta charset="utf-8"&gt...

songanshu的博客 1753

程序源码 双色球走势分析图源码_tend(ASP.NET源码).rar

免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,本人不对所涉及的版权问题或内容负法律责任。如有侵权,请举报或通知本人删除。

jQuery仿双色球开奖抽奖特效代码

jQuery仿双色球开奖抽奖代码是一款jQuery利用css3属性制作数字转盘,点击抽奖按钮随机抽取数字号码中奖结果。

微信小程序彩票号码生成器

彩票号码生成器 一、案例说明 设计一个小程序,生成一注7个彩票号码(1-31),并在圆形图标上显示,加上一个按钮,每点一次重新生成,同时生成不同的颜色圆形图标。 二、案例代码 1)index.wxml文件 <!--index.wxml--> <image src="/image/caipiao.png" style="width: 750rpx; height: 256rpx; display: inline-block; box-sizing: bord......

weixin_45739654的博客 1万+

EEGLAB+ERPLAB实战:从.cnt文件到情绪ERP差异波,一份避坑指南

本文详细介绍了使用EEGLAB和ERPLAB处理Neuroscan的.cnt格式脑电数据的全流程,从数据导入、预处理到情绪ERP差异波生成。重点解决了采样率验证、事件标记检查、重参考选择、滤波策略与ICA组合等实操难题,并提供了情绪图片ERP研究中P1、EPN和LPP成分的分析技巧,帮助研究者避免常见错误,提升数据处理效率。

weixin_26795617的博客 264

前端 Vue实现彩票走势图

Vue结合Jq以及canvas的使用,完成简单的彩票走势图

前端全栈干货分享|小程序|Vue3|CSS 动效|工程化|项目实战 2555

告别代码丢失!用Git+Gitee管理你的Keil5单片机项目(保姆级图文教程)

本文详细介绍了如何利用Git和Gitee高效管理Keil5单片机项目,解决嵌入式开发中的代码丢失问题。通过精准配置.gitignore文件、设计适合团队的协作流程以及搭建安全备份体系,开发者可以轻松实现版本控制,提升工作效率。特别针对Keil工程的特殊文件类型,提供了实用的过滤规则和操作技巧。

weixin_33686714的博客 470

华硕电脑Win10改Win7系统:BIOS设置详解

通过上述步骤,华硕电脑用户可以将系统从Windows 10更改为Windows 7。虽然这个过程可能涉及一些技术细节和潜在的风险(如数据丢失和驱动不兼容),但只要按照指南仔细操作并做好准备工作,大多数用户应该能够成功完成系统回滚。请记住,在进行任何系统更改之前都要备份重要数据,并确保已了解所有潜在的风险和限制。希望本文能够帮助到需要回滚到Windows 7的华硕电脑用户!

nntxthml的博客 2261

为了买彩票,我写了这个控件

0. 最近偶尔会买个双色球,一周买个6块钱的,也不多,就是凑个热闹,为生活添加个小情趣。因为不会选号,每次都是机选,作为一个阴谋论者,我觉得机选可能不够“随机”,为此我决定自己写个程序为我选号,为此我模仿老虎机写了一个控件。先上图 1. 先设计一下 1.1支持从数字和数组获取数据 1.2绘制两个数字,当前数字和下一个数字 1.3设置便宜量,并实现加速 1.4开始和停止,停止时添加回调 1.5支持...

weixin_33788244的博客 255

全网最详细 解决戴维南定理的详细推导

替代定理,戴维南定理详细证明

m0_52555753的博客 3万+

Android仿网易彩票数字奖池动画效果

明显的动画效果,而且是随着时间的推移,前面的数字暂停下来。数字的滚动用线程?!当然可以实现。但是前面的数字停下,这种效果不好处理。我开始想的是从最大的数字开始跑,一直减到0,在跑的过程中比对数字的位数,高位的就截取最终的结果,低位的显示当前的计数。同样的很麻烦,而且控制不了显示的位数,万一显示上亿,GG了。换思路,我发现网易的动画里每个位置上的数字都是很随机的出现,不是规律的递减。那就获取最终结果的位数,然后线程里随机0到9:如果size是5,返回的一直是一个五位数,当很快速的刷新的时候,效果就很动画了。

金戈鐡馬 530

通信模组性能调优

本文介绍了高通平台通信模组性能调优的方法,主要包括硬件加速技术和CPU负载优化。针对CPU负载优化,提出了内核RPS/RFS功能启用、网卡队列调整、中断均衡、CPU性能模式设置等措施。同时建议关闭热管理并加强散热,调整TCP接收/发送缓存大小以解决TCP异常报文问题。这些优化手段可显著提高整机吞吐率测试中的网络性能表现。

四儿家的小祖宗的博客 1358

数据结构之博弈树搜索(深度优先搜索)

数据结构之博弈树搜索(深度优先搜索)

LucianaiB的博客 1523

Android纯手工实现几种数据趋势图的自定义View(超简单,有源码)

不需要依赖第三方框架,直接使用Canvas drawLine,drawPath,drawCircle 复制代码 等几个简单的API即可搞定 效果图 源码:https://github.com/woshiwzy/trendviews 部分代码节选 onDraw protected void onDraw(Canvas canvas) { super.onDraw(canvas); w = getWidth(); h = g..

Sand哥的博客 3022

FakeNewsGPT4:通过知识增强的大规模视觉语言模型推进多模态假新闻检测

当前,多模态假新闻的大量涌现导致了显著的分布差异,这一现状亟需我们开发具备广泛适用性的检测器。然而,现有假新闻检测器因特定领域内的训练方式,难以有效获取开放世界中的事实信息。这种训练的封闭性限制了传统检测器的能力,特别是在面对跨域假新闻时,其表现往往不尽如人意。具体而言,开放世界中的假新闻在两个方面具有显著的分布差异:一方面,其操纵内容多种多样,新闻的任一部分都可能受到创意策略的操控;另一方面,真实背景复杂多变,不同地区的新闻背景和主题焦点存在显著差异。

qq_52053775的博客 822

Python数据分析及可视化(Matplotlib, Plotly,random)实例:双色球根据往期数据产生随机号码

Python数据分析及可视化(Matplotlib, Plotly,random)实例:双色球根据往期数据产生随机号码

曾经的你-2015的博客 3492

【Python机器学习】零基础掌握TweedieRegressor广义线性回归模型

本次文章主要介绍了如何使用Tweedie回归模型预测电动汽车的实际续航里程。基于车速、气温和驾驶习惯等多种因素,模型能够准确地预测出电动汽车的续航里程,从而为生产商和消费者提供有用的信息。优点总结,Tweedie回归模型在处理具有多元性和高度散布的数据方面表现出色,特别适用于需要考虑多种影响因素的预测任务。优点名称对应描述说明多元性强可以同时处理多种类型和维度的数据高度可定制允许用户自定义损失函数和正则项对异常值鲁棒能够较好地处理数据中的异常值易于解释参数和预测结果都相对容易解释。

Mr数据杨 1005

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android 彩票 控件,Android_自我总结(一)之彩票app总结

1.Android Studio引用其他project:APP路径:D:\workspace\AndroidStudio\EnjoyLottery\app\build.gradle2.开机动画,联网操作:new handler.postDelayed(startActivity,2000);延迟操作+startActivity->联网操作。实现方法:封装:okgo框架+RxJava. 关键代...

weixin_35959694的博客 633

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 后台仿京东商城接口设计缺陷吐槽篇
下一篇: CoordinatorLayout实现嵌套滑动吸顶效果
AnalyzeSystem
博客等级 码龄11年 204粉丝 114原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值