Android ProgressBar自定义

Android 自定义ProgressBar横向圆角 ProgressBar大家可能项目中都会用到,但是大部分都是根据UI给的符合项目主题的自定义形式的; 下面就是我们项目中一个显示学习进度的横向ProgressBar; 可以看到四个角都是圆角的,本人首先想到的是自定义,但是会发现四个角总是不能够实现,要不左侧会被切成直角,要不进度内侧会被切成直角,也是从网上查找分析,最终实现如下: 结合网上大神的示意,在此作个笔记,方便之后遇到直接拿来用,节省时间. 借鉴ProgressBar 进度条的进度两端是圆角的方法 但是根据自定义的shape 或者是 阅读详情

效果图如下

开发中经常会有自定义进度条需求,下面举例水平和垂直两个方向的进度条如何进行自定义

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@android:color/darker_gray"
tools:context="com.example.progressbardemo.MainActivity">

    <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:max="100"
        android:progress="20"
        android:progressDrawable="@drawable/costom_progress_shape"
        android:secondaryProgress="70" />


    <ProgressBar
        android:id="@+id/progressBar1"
        style="@style/App.Widget.ProgressBar"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginTop="100dp"
        android:layout_gravity="center"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:indeterminate="false"
        android:interpolator="@android:anim/linear_interpolator" />
</LinearLayout>

水平方向的自定义
定义一个costom_progress_shape放到drawable目录下

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 背景色 -->
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <solid android:color="@android:color/white" />
        </shape>
    </item>


    <!-- 第二条进度条设置 -->
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="10dip" />

                <solid android:color="@android:color/holo_blue_dark" />
            </shape>
        </clip>
    </item>


    <!-- 默认进度条设置 -->
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <solid android:color="@android:color/background_dark" />
            </shape>
        </clip>
    </item>

</layer-list>

最后直接在布局文件引用即可。并且默认引用的样式为水平方向的

<ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:max="100"
        android:progress="20"
        android:progressDrawable="@drawable/costom_progress_shape"
        android:secondaryProgress="70" />

垂直loding的自定义

1.同样新增一个progressbar_rotate_shape文件
表示将图片进行360度的旋转

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/common_ic_loading_icon"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360"></rotate>

2.style.xml文件添加样式

<style name="App.Widget.ProgressBar" parent="@android:style/Widget.ProgressBar">
        <item name="android:indeterminateDrawable">@drawable/progressbar_rotate_shape</item>
        <item name="android:indeterminateDuration">1000</item>
</style>

注:扩展样式

<style name="code" class="java">    
     <style name="Widget.ProgressBar.Horizontal">  
        <item name="android:indeterminateOnly">false</item>  
        <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>  
        <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>  
        <item name="android:minHeight">20dip</item>  
        <item name="android:maxHeight">20dip</item>  
        <item name="android:mirrorForRtl">true</item>  
    </style>  

3.同样在布局文件引用即可

<ProgressBar
        android:id="@+id/progressBar1"
        style="@style/App.Widget.ProgressBar"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginTop="100dp"
        android:layout_gravity="center"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:indeterminate="false"
        android:interpolator="@android:anim/linear_interpolator" />
掌握Android中ProgressBar的使用与自定义 在Android开发中,自定义ProgressBar样式和属性是增强用户体验的重要方式。通过XML布局文件,我们可以轻松地定义ProgressBar的基本属性。以下是一些关键的XML属性和它们的作用:android:id: 为ProgressBar设置一个唯一标识符。: 指定ProgressBar的宽度,通常使用或。: 指定ProgressBar的高度,同上。: 设置为true则显示不确定进度的ProgressBar,通常用于后台任务未确定完成时间的情况。 阅读详情

相关推荐

Unity3D Lua与C#的相互调用与性能剖析详解

在游戏开发中,经常会遇到Lua与C#之间的相互调用的情况。本文将详细介绍Unity3D中Lua与C#的相互调用的方式,并对其性能进行剖析。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!一、Lua与C#的相互调用方式Lua调用C#在Unity3D中,可以通过Lua调用C#的方式来实现Lua与C#的相互调用。具体步骤如下:(1)首先需要在Unity3D项目中导入Lua的相关库,例如tolua或者xlua。

weixin_49669470的博客 1215

Android ProgressBar自定义图片进度,自定义渐变色进度条

↳    android.view.View 3        ↳    android.widget.ProgressBar 4 直接子类 5 AbsSeekBar 6 间接子类

strliu的专栏 2689

《双剑合璧:双 IMU 驱动的高精度 AHRS 实战宝典(基于 ROS2)》

本文系统阐述了基于双IMU的高精度姿态与航向参考系统(AHRS)设计与实现方法。文章首先分析了传统单IMU系统的局限性,提出通过双IMU冗余配置实现性能互补的方案。从硬件设计要点(包括IMU选型策略、电路降噪方法、PCB布局规范),到算法实现方案(互补滤波、卡尔曼滤波等融合算法),再到ROS2软件架构与调优策略,全方位展示了双IMU系统的技术实现路径。特别强调快速性与高精度平衡的方法,包括动态参数调整、双IMU权重优化等核心技巧。最后总结了硬件降噪、算法调优等实用心法。

bother3000的博客 2026

简单的自定义一个ProgressBar进度条

简单的自定义一个ProgressBar进度条

oAiYinSiTan12的博客 1214

SEED-VII 实战指南:如何利用多模态脑电图数据提升情感识别精度

本文提供了SEED-VII多模态脑电图数据集的实战指南,详细介绍了如何利用该数据集提升情感识别精度。内容涵盖数据获取、预处理、特征提取,以及构建多模态融合神经网络模型的关键步骤,并强调了被试者独立评估的重要性,为情感计算研究者提供了从数据到模型的全流程解决方案。

weixin_29196891的博客 318

PS2硬盘启动终极指南:从FMCB到OPL,告别光驱打造游戏博物馆

在计算机存储与数据读取领域,硬盘启动技术通过将操作系统或应用程序从本地硬盘直接加载,绕过了传统光驱等外部介质,实现了速度与可靠性的双重提升。其核心原理在于利用引导程序接管系统初始化流程,直接访问硬盘上的特定分区与文件镜像。这项技术的价值在于极大提升了数据读取效率、降低了物理介质损耗,并扩展了存储容量与管理的灵活性。在怀旧游戏硬件改造、嵌入式系统定制等场景中,硬盘启动技术被广泛应用,以实现老旧设备的功能焕新与性能优化。本文聚焦于索尼PS2游戏主机的硬盘启动方案,深入探讨了如何利用FMCB(Free MCBoo

weixin_34295316的博客 1778

安卓ProgressBar自定义样式

效果就和美工的差不多了,美中不足的就是这里是直线结尾,美工做的是圆形结尾。创建loading_drawable.xml代码如下。

阿文的博客 347

第二十届全国大学生智能汽车竞赛极速光电组:MicroPython与恩智浦RT1021的硬件编程实战指南

本文为参加第二十届全国大学生智能汽车竞赛极速光电组的同学提供了一份详尽的MicroPython与恩智浦RT1021硬件编程实战指南。文章深入剖析了选择MicroPython与RT1021这对组合的优势,详细讲解了从开发环境搭建、基础硬件控制(如GPIO、PWM、编码器、CCD)到系统集成(平衡控制、循迹算法)与多任务调试的全过程,旨在帮助参赛者降低嵌入式开发门槛,高效备赛。

wdx0123456的博客 846

Android基础--自定义ProgressBar

ProgressBar为进度条控件,有Indeterminate不确定模式和Determinate确定模式两种:①不确定模式通常使用圆形循环动画来表示类似“正在加载”的过程,进度无法确定,具有不确定性;②确定模式是通过将已发生的进度与总量的百分比显示在进度条上,比如下载或上传文件的数量等。

star_nwe的博客 2943

【100%通过率】2023华为od机试C卷【电脑病毒感染】C语言 实现

一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1.

MISAYAONE的博客 1043

多周期路径约束(set_multicycle_path )

1.由慢到快的多周期约束 如下图所示,发射时钟周期是接受时钟周期的4倍。默认情况下,按照1T原则来进行静态时序分析和布局布线的。即建立时间是在发射沿后的第一个捕获沿检查,而保持时间是同一时刻下源时钟和捕获时钟的触发边沿下检查的(建立时间检查边沿的前一个触发沿)。 但是这样导致的问题就是该路径过于苛刻,为了满足这条路径的要求,不得不放弃其他路径。或者根本没办法保证这个默认的约束。总之最终造成...

Arist. 5507

android ProgressBar自定义

自定义Android ProgressBar 在Android开发中,ProgressBar是一种常见的控件,用于展示任务的进度。Android提供了默认的ProgressBar样式,但有时候我们需要根据项目需求自定义ProgressBar的外观。本文将介绍如何自定义Android ProgressBar,并提供代码示例。...

weixin_42160398的博客 350

Python 爬虫实战:赛事分析平台构建与比赛数据抓取

在体育赛事日益丰富的今天,对比赛数据的收集与分析对于运动员、教练团队以及体育爱好者都具有重要意义。通过构建一个赛事分析平台,我们可以系统地抓取、整理和展示各类比赛数据,为用户提供全面的赛事洞察。本文将深入讲解如何利用 Python 爬虫技术实现这一平台的构建,涵盖从目标网站分析到数据可视化展示的全过程。

u014481728的博客 3181

Android之自定义ProgressBar

本文简单介绍下Android之自定义ProgressBar。

冰点蓝欣的专栏 2244

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android 自定义Progressbar,任何图片都能当成progressbar转动起来

今天群里边有人问怎么自定义Android holo主题下的Progressbar; 我想到之前做过自定义Progressbar,通过自己写动画和Style可以用任何图片当作progressbar来转动; 分享下我是如何做的,其实很简单的三步就能完成: 1.找到一张图片,写一个动画: <animated-rotate xmlns:android="http://schemas.android

金禅的专栏 8205

深度学习工具包 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的ProgressBar自定义入门

Android ProgressBar 本文主要围绕android.widget.ProgressBar,对样式自定义的部分细节进行描述。 XML属性 首先,来了解一下ProgressBar到底在xml配置中到底有何属性,大家可以看看Android官网对ProgressBar的介绍 http://developer.android.com/reference/android/wid

Zenip的专栏 9837

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android自定义progressbar样式,Android自定义ProgressBar,仿IOS ASProgressPopUpView

progress = 200.pngprogress = 500.png之前在做一个app中,发现IOS有一个ASProgressPopUpView的第三方控件满足需求的效果。可能因为我人比较懒,所以也没去详细地找出android是否有具体的一个第三方框架可以做到这样的一个效果。我自己具体分析了一下,发现做一个这样的自定义View好像并不难,也算是本人第一个小小的自定义View。在一个师兄提醒和a...

weixin_42367557的博客 955

android 自定义横向progressbar,Android自定义横向的ProgressBar

废话少说,先看一下效果吧,颜色有点丑,不过基本功能都有提到,实际使用中修改一下就ok。 其实很简单,上代码!在res下创建drawable文件夹,新建文件drawable/progressbar_color.xmlandroid:angle="90.0"android:centerColor="#ac6079"android:centerY="0.45"android:endColor="#6c2...

weixin_28937395的博客 449

Android 自定义谷歌风格ProgressBar

speed);.getFloat(speed);false);break;break;break;default:// colors= 0) {= null) {if (colors!else= 0) {if (colors!0));0));.getFloat(0));false));false));false)) {break;break;break;break;

2501_90499523的博客 885

android 简单自定义progressBar

android系统提供了少量的progressBar样式,但是样式有限,而且不够美观。所以这就需要我们自已定义progressBar的风格。提高应用UI的美观。这里简单的介绍自定义progressBar的两种方式。

yzw9925的专栏 584

android 如何自定义ProgressBar

以下博文,阅读时,建议参考android官方文档  http://developer.android.com/guide/topics/resources/drawable-resource.html#Clip 1. 在res/values/colors.xml中定义ProgressBar要用的图片颜色          #00000000 #ffff

jonemill的专栏 618

安卓实习生之——自定义ProgressBar

现有需求,根据服务端获取到的数据,进行百分比展示,如下图所示: 若要使用自定义View来实现,有几个步骤,第一步,创建资源文件attrs.xml:首先添加 &amp;amp;amp;amp;amp;lt;resources xmlns:tools=&amp;amp;amp;amp;quot;http://schemas.android.com/tools&amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;gt; &amp

菜鸟程序员的博客 540

Android 自定义progressbar

android:width="0.75dp"                 android:color="#DDDDDD" >                                                  android:bottomLeftRadius="8dp"                 android:bottomRightRadius="8dp"

行吟阁 807

【android自定义控件】ProgressBar自定义

ProgressBar分为垂直和水平 经常在数据加载过程中,为了让用户感觉友好,弹出一个提示圆形的加载框 水平的经常在下载应用的时候用到,还伴随着下载进度。 ProgressBar的样式有四种: android:progressBarStyle:默认进度条样式,不确定模式 android:progressBarStyleHorizontal

猫的阁楼 1612
上一篇: Android 全局异常处理之UncaughtExceptionHandler
西瓜cc
博客等级 码龄12年 29粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值