学习Dialog(一)------基础

Android Dialog详解 在Android开发过程中我们经常会遇到如下的场景: 在界面上弹出一个弹框,对用户进行提醒,并让用户做出某些选择性的操作                                                               删除某个应用的系统级别的Dialog                                                           ... 阅读详情

注:记录学习启舰大神的博客,此博客只做学习总结之用。

一、标准Dialog的基本知识

首先需要创建AlertDialog.Builder对象,它是用来设置dialog的各种参数的。

1、icon、消息(Message)、标题(title)
//添加icon
builder.setIcon(R.mipmap.ic_launcher);
//添加title
builder.setTitle("退出");
//添加Message
builder.setMessage("你确定要离开吗?");
//创建Dialog
builde.create();
//显示Dialog
builder.show();
2、按钮

Dialog有三个按钮可以选择:左按钮,中间按钮和右按钮。三者的位置与代码位置无关。

builder.setPositiveButton("确定",new DialogInterface.OnClickListener());
builder.setNegativeButton("取消",new DialogInterface.OnClickListener())
builder.setNeutralButton("中间按钮",new DialogInterface.OnClickListener())

具体使用如下:

=builder.setPositiveButton("确定",new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                //点击响应
                Toast.makeText(MainActivity.this, "ok click", Toast.LENGTH_SHORT).show();
            }
        });

        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                //点击响应
                Toast.makeText(MainActivity.this, "cancel click", Toast.LENGTH_SHORT).show();
            }
        });

        builder.setNeutralButton("中间BTN", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                //点击响应
                Toast.makeText(MainActivity.this,"center click",Toast.LENGTH_SHORT).show();
            }
        });

二、自定义布局

在AlertDialog中使用builder.setView(view)可以添加我们自己定义的布局视图

1、静态构建布局
  • 创建一个布局文件,比如my_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_view_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/dog"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="小狗图片"
        android:textSize="30sp" />
</LinearLayout>
  • 布局文件写好之后可以通过LayoutInflater获取view对象,然后通过builder.setView(view)加载到Dialog中
LayoutInflater inflater = getLayoutInflater();
View view - inflater.inflate(R.layout.my_view,false);
builder.setView(view);
2、动态构建布局

        LinearLayout root_lin = new LinearLayout(MainActivity.this);
        root_lin.setOrientation(LinearLayout.HORIZONTAL); //设置LInearLayout的排列方向
        LinearLayout.LayoutParams LP_FW = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        root_lin.setLayoutParams(LP_FW);

        ImageView imageView = new ImageView(MainActivity.this);
        imageView.setImageResource(R.drawable.dog);
        imageView.setLayoutParams(LP_FW);
        root_lin.addView(imageView);

        TextView textView = new TextView(MainActivity.this);
        textView.setText("可爱的小狗");
        textView.setTextSize(20);
        textView.setLayoutParams(LP_FW);
        root_lin.addView(textView);

首先创建一个顶层容器LinearLayout,并为其设置布局,然后创建一个ImageView用来放置图片,布局样式和父控件相同,TextView也是如此。

Dialog 学习笔记 和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、Dialog 简介二、Dialog 基本样式解析三、简单对话框的实现四、多选按钮对话框五、单选按钮对话框六、列表对话框七、水平进度条对话框八、圆形进度条对话框九、自定义图文对话框十、自定义输入对话框十一、自定义样式对话框十二、自定义Loading样式对话框十三、继承 DialogFragment 实现对... 阅读详情

相关推荐

Android弹窗探究之Dialog(一)—— Dialog的基本使用

在android里面,可视化视图除了最常见的Activity和Fragment外,还有一个就是今天我们要讲的主角Dialog了,虽然说Dialog的重要性和频率没有Activity那么高,但是在实际开发过程中Dialog依旧拥有着不可或缺的地位。 Dialog中文可以翻译为对话,意味着它更多充当的是一种提醒的作用,比如用户点击退出APP谈一个框进行确认操作,比如首页弹出一个APP用户隐私等等,尽管Google官方推出了DialogFragment来代替Dialog,但是我们仍然有必要去学习一下Dialog。

zhoufan11132的博客 1654

Android学习笔记(四)

今天将好好分以下关于Android的对话框的问题和在Android中使用ListView遇到的一些问题。 一、关于对话框我们并不陌生(Dialog),但是对于Android中的Dialog也是使用起来十分的方便,就只是调用一个名为AlertDialog的类。 在使用中可以这么写 new AlertDialog.Builder(Context context).setTitle("我是标题")

jokeHello的专栏 921

python dialog使用_dialog的使用方法

dialog的使用方法发布时间:2020-06-03 14:09:01来源:亿速云阅读:563作者:Leah今天小编给大家分享的是dialog的使用方法的介绍,相信大部分人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,话不多说,一起往下看吧。一、基础知识1. dialog简介窗口是GUI设计中不可获取的一部分,方便用户和程序直接交互,简化使用;Qdialog主要包含QInputDial...

weixin_42526417的博客 4585

工具类之自定义的弹出框

1. 带按钮的弹出框(带一个确定按钮) private void showDialog(String content){ View view = LayoutInflater.from(mContext).inflate(R.layout.dialog_licence,null,false); final AlertDialog dialog = new Ale...

liuye066的专栏 286

一步步追踪Dialog的创建流程(一)

想搞明白Dialog到底是怎么创建的,打开Dialog.java,看看里面都做了什么? 一.Dialog的构造函数 从构造函数出发,所有的构造函数都会调用下面这个构造函数: public Dialog(Context context, int theme) { this(context, theme, true); } Dialog(Context c

阳光玻璃杯 3206

qt之一个登陆dialog界面

在Qt design下,先设计下界面 分别把伙伴关系、信号/槽关系、响应函数设计出来:             接下来编写代码: //dialog.h #ifndef DIALOG_H #define DIALOG_H #include #include "ui_dialog.h" #include class Dialog : public QMainWindow { Q_

Yuippe的专栏 2385

android—使用AlertDialog.Builder对话框

每个人在使用手机的时候,如果点到一些不该点的东西,系统将会自动弹出一个对话框,对话框内的内容会提示你不该点击这个,并让你关闭。这就是对话框,这也是对话框的其中一个用途。这次我说的是一些简单的使用。 上代码: View view=getLayoutInflater().inflate(R.layout.empty,null);//首先先创建一个View,引入对话框的布局 builder

凌晨四点的洛杉矶 683

Tessent IJTAG ICL:从规范到实践的硬件描述语言指南

本文深入解析Tessent IJTAG ICL语言在硬件测试中的应用,从规范到实践提供全面指南。通过模块化设计、网络提取与编辑等实战技巧,帮助工程师高效构建标准化测试网络,显著提升芯片测试效率与覆盖率。特别分享TDR/SIB/TAP的ICL实现方法及调试策略,适用于SoC、车载芯片等复杂场景。

weixin_33606346的博客 300

AlertDialog.Builder弹出自定义Layout窗口

使用AlertDialog.Builder加载自定义View,按照上面的步骤,使用的是默认的AlertDialog.Builder的窗口显示方式,如果想要显示内容丰富的弹出窗口,如里面有一些输入框之类的,如下面的图片所示,那么,就需要我们使用AlertDialog.Builder.setView(View v)方法加载自定义的View来作为窗口的显示方式了.

一路到黑 7108

FPGA 核脉冲梯形成型 Verilog 实现:从 MATLAB 到 50MHz 采样率部署

本文详细解析了FPGA实现核脉冲梯形成型的完整流程,从MATLAB仿真到50MHz采样率的Verilog硬件部署。重点探讨了梯形成型算法对负指数信号的优化处理,包括定点数量化、流水线架构设计及资源优化技巧,为核辐射探测与高能物理实验提供高效解决方案。

weixin_30920513的博客 389

小智AI语音控制实战:从工具注册到音量调节的MCP交互全流程

本文详细拆解了基于小智AI与MCP协议实现本地智能语音控制的完整交互流程。以ESP32平台为例,从开发环境搭建、MCP服务器初始化、工具注册,到用户语音指令的接收、解析、硬件执行与结果反馈,提供了全链路实战代码。重点阐述了如何通过MCP协议将AI的意图理解与设备功能执行在本地高效耦合,实现毫秒级响应的音量调节等控制,为嵌入式AI开发者提供了清晰的实现路径。

weixin_29165725的博客 347

【AlertDialog添加自定义view流程详解】

Dialog: 与dialog相关的类的基类AlertDialog:继承自Dialog类。AlertDialog.Builder: AlertDialog内置的Builder类,用于构建alertDialog。AlertController:AlertDialog对象构建和显示的实际操作者。AlertController.AlertParams:AlertController与AlertDialog类之间的桥梁。

despicablemme的博客 955

风光储互补微电网在偏远地区的应用实践:从建模到仿真全解析

本文深入解析了风光储互补微电网在偏远地区的应用实践,从系统设计到仿真建模全流程。通过Simulink等工具进行动态仿真,验证了系统在多种工况下的可靠性,并结合实际案例展示了其显著的经济和环保效益。文章为从业者提供了从技术路径到实施优化的全面指导。

weixin_29047545的博客 269

ABAP开发学习记录——DIALOG屏幕开发一

元素清单(Element List) 包含界面中定义的所有构成元素,可编辑元素属性,OK_CODE(要定义接收变量),在layout中创建了相关按钮及名称后会自动显示在此处。用户可以访问的部分是Screen,用户对界面进行操作,相应的操作是通过Screen中的逻辑流控制,而数据声明和界面逻辑代码实现部分是在ABAP程序中。在Screen Flow Logic中设定在Screen显示的逻辑处理和显示后对界面进行相应操作的逻辑处理。PAI中的处理逻辑控制用户对界面操作后的处理,如按回车键对输入数据进行检查。

m0_64077397的博客 1298

ArcMap学习笔记(三)地图数字化

地图数字化前言地图数字化实现步骤1.加载地形图2.新建要素图层3.开启编辑环境4.设置捕捉环境5.选择数字化图层6.数字化控制点7.数字化等高线8.数字化图幅边框9.保存数字化成果总结 前言 使用软件:ArcMap10.4.1中文版 如果出现侵权,请在评论留言,我会及时删除,谢谢。 地图数字化 空间数据采集(输入)是将现有的地图、外业观测成果、航空像片、遥感图片数据、文本资料等转换成GIS可以直接...

JayWang博客 1万+

FPGA笔试题知识点汇总(21~40)

FPGA笔试题知识点汇总(21~40)

weixin_52487896的博客 5871

【android基础学习之五】——基础控件Menu,Dialog,ImageView,ImageButton

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误还请大家多多批评。一、    按钮(Button) 按钮控件已经在之前的例子学习中使用到,主要的是一个setOnClickListener事件。 二、    菜单(Menu)         一般 Android手机

jercy的专栏 6083

IEC103协议实战指南:报文解析与传输优化策略

本文深入解析IEC103协议在电力自动化系统中的核心应用,重点拆解其固定帧与可变帧两种报文格式,并详细阐述了主从问答与非平衡传输机制。文章结合实战经验,针对报文解析中的常见问题(如字节序、超时重发)提供了解决方案,并探讨了传输层优化策略,旨在帮助工程师实现更可靠、高效的通信链路。

r2s3t4的博客 541

【安卓学习之UI学习】Dialog的使用总结

█ 【安卓学习之UI学习】Dialog的使用总结 █ 相关文章: -   ● 【android学习开源项目之BasePopup】BasePopup(PopupWindow)进行二次封装  ● 【android学习开源项目之AndroidAutoSize】AndroidAutoSize和DialogFragment的适配  ● 【安卓学习之UI学习】 自定义组合控件View 的开发  ● 【安卓学习之UI学习】 自定义 弧形等级进度条  ● 【安卓学习之UI学习】RecyclerView的使用总

任我飞的博客 441

教师模型与学生模型:知识蒸馏的核心概念

知识蒸馏,教师模型,学生模型,模型压缩,迁移学习,深度学习 1. 背景介绍 深度学习模型在图像识别、自然语言处理等领域取得了显著的成就,但其巨大的模型规模和高昂的计算成本限制了其在资源有限的设备上的部署。知识蒸馏(Knowledge Distillation)作为一种模型压缩技术,旨

AI架构师小马 2770

efm32 入门.pdf

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

Dialog学习笔记

感觉对Dialog了解很少,今天看书学习一下,顺便更新一下blog(吐槽一下,

湛江下暴雨 1116

深度学习工具包 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 Dialog 的使用

今天无聊的时候学习了android中的Dialog的使用,在这里记录下Dialog的使用方法: package com.ceo.activity; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.

Richard.Dai的专栏 930

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

HandyControl Dialog 基础使用技巧

本文介绍了如何在 WPF 中使用 HandyControl 的 Dialog 控件创建自定义弹窗。主要内容包括: 基本使用方法:通过 Dialog.Show() 显示自定义用户控件作为弹窗内容,并提供了示例代码和效果图。 弹窗父级窗口机制:详细解析了 Dialog 控件的两种父级查找方式 - 默认查找当前活动窗口或通过 Token 指定目标窗口。 Token 指定功能:演示了如何通过定义常量 Token 来精确控制弹窗在特定窗口中显示。

关关长语 1043

点击dialog空白处禁止关闭dialog

//点击空白处不关闭dialog dialog.setCancelable(false); dialog 完整代码package com.developer.jim.wizard.views; import android.app.Activity; import android.app.DialogFragment; import android.graphics.Color; import ...

qq_38373150的博客 4686

Dialog学习实例

1调用部分 public class RenameDialog { private Context context; public RenameDialog(Context context){ this.context = context; } public void showExitsDialog() { final Dialog dialog = new Di

sada09的专栏 791

android全局Dialog

项目开发有一个需求要用到全局dialog,即不依赖activity,何时都可以弹出dialog。整理了一下有两种方法,一种是开启一个service,在上面建dialog,另一种是利用windowManager来显示dialog。 无论哪种方式多需要先设定权限: uses-permission android:name="android.permission.SYSTEM_ALERT_WI

young21234的博客 3196
上一篇: Fragment学习之旅(三)
下一篇: Dialog学习(二)------列表
guotao967
博客等级 码龄11年 1粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值