Android---绘图机制---单位转换

Android进阶——性能优化之布局渲染原理和底层机制机详解及卡顿根源探究(四) 引言 UI 全称User Interaction,我第一次听到这个名词是在大学的时候,当时候上人机交互课,我们教授说他认为iPhone的i 就是代表Interaction的意思,暂且不必争辩是非。回到我们软件开发中来,UI是用户感知与交互的第一且唯一的途径,是影响用户体验最关键的一部分。而在Android中每一个写在布局中的组件都需要初始化,进行布局,绘制的过程从而实现各种酷炫的UI效果,而实现... 阅读详情

根据屏幕的分辨率不同我们可以写一个单位转换的工具类:

public class DisplayUtils {
    //将PX值转换为dip或者dp的值 保证尺寸大小不变
    public static int px2dip(Context context,float pxValue){
        final float scale=context.getResources().getDisplayMetrics().density;
        return (int) (pxValue/scale+0.5f);
    }
    //dip或者dp转换为px值 保证尺寸大小不变
    public static int dip2px (Context context,float dipValue){
        final float scale=context.getResources().getDisplayMetrics().density;
        return (int) (dipValue*scale+0.5f);
    }
    //px转换为sp的值     保证文字大小不变
    public static int px2sp (Context context,float pxValue){
        final float fontScale=context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue*fontScale+0.5f);
    }
    //sp转换为px值,保证文字大小不变
    public static int sp2px (Context context,float spValue){
        final float fontScale=context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue*fontScale+0.5f);
    }
}
RK3588 平台部署实战:OpenCV + LibTorch + FFmpeg 环境搭建与深度学习推理全流程解析 现在,你已经掌握了在RK3588上搭建OpenCV+LibTorch+FFmpeg环境的完整流程,也完成了深度学习模型的部署测试。不妨从一个具体的应用场景入手(如检测自家宠物的品种),亲手打造属于你的第一个边缘智能应用——当你看到模型在RK3588上精准输出结果时,你会发现:嵌入式深度学习的门槛,其实并没有想象中那么高。这些依赖是编译OpenCV、FFmpeg的基础,安装过程中若提示权限不足,可在命令前加。若能输出预测的类别索引,则说明环境搭建成功,模型推理流程通畅。文件,实现模型加载、图像预处理与推理。 阅读详情

相关推荐

浙政钉H5应用上架实战:从环境配置到发布避坑指南

本文详细解析浙政钉H5应用上架全流程,从环境配置到发布避坑指南。重点介绍Vue 2.6 + Node 14.21.3的稳定开发环境搭建、项目结构规范及常见报错解决方案,帮助开发者高效完成浙政钉H5应用上架流程。

weixin_27943395的博客 286

如何处理FTIR数据(傅里叶红外光谱)-omnic软件+origin绘图

背景图片来自文献:Sun T , Levin B D A , Guzman J J L , et al. Rapid electron transfer by the carbon matrix in natural pyrogenic carbon[J]. Nature Communications, 2017, 8:14873. 本文是FTIR数据入门级的数据处理,读者可以快速学习简单处理FTIR数据。 1)准备材料: 文件为csv后缀,如果发现数据在一列,适当分列处理数据 ...

Z_crystal 2万+

深入解析数据通信中的码元速率与比特率:从基础到实战应用

本文深入解析了数据通信中的核心概念码元速率与比特率,通过生动的比喻和公式(比特率=波特率×log₂(M))揭示其本质关系。文章结合BPSK、QPSK、16QAM等调制技术,剖析了从4G/5G到LoRa等实战场景中如何权衡速率、距离与可靠性,并提供了软考真题解析与系统设计建议,帮助读者从理论到应用全面掌握数据速率优化。

weixin_29324877的博客 213

电化学表征技术丨傅里叶红外光谱(FTIR)测试原理、制样要求以及常见问题深度解密!

傅里叶变换红外光谱(Fourier Transform infrared spectroscopy,简称FTIR),大家应该都十分熟悉,广泛应用于塑料、涂层、填料、纤维等众多高分子及无机非金属材料的定性与定量分析。

元素魔方科研服务 2万+

python DEA: 基于非径向距离NDDF的Malmquist-Luenberger 指数及其分解

点赞发Nature 关注中Science Malmquist-Lenberger指数(ML指数)是距离函数与DEA计算中常用的指数,ML指数可以进一步分解为技术进步technological progress和效率改善effeciency change. 技术进步常被当做增长模型中的全要素生产率,用到许多计量经济研究中,探讨影响技术进步的环境变量。这里我分享一个考虑非期望产出下的NDDF方法计算ML指数。 该ML指数为global ML(区别于sequential ML) import numpy as

Cmmmmm丶的博客 5296

做蛋白组学数据分析,竟然还不会使用DIA-NN软件,走过路过不要错过,进来免费学习!!!

蛋白组学分析工具DIA-NN使用

wcy1995427的博客 9865

android Canvas的简单用法

Canvas在安卓的实际开发还是经常用到的,它能够画出各种各样

崔飞 1050

Cadence Sigrity PowerSI实战:从.brd到S参数提取的完整避坑指南

本文详细介绍了使用Cadence Sigrity PowerSI进行信号完整性分析的完整流程,从.brd文件预处理到S参数提取的关键技巧。通过实战案例和避坑指南,帮助工程师高效解决高速PCB设计中的信号质量问题,提升仿真精度和设计效率。

carrot的博客 694

android关于屏幕画图的一些度量单位及概念(sp,dp,px,dpi,density)

对android的布局文件中常常用到的度量单位比较困惑,因此网上了解了一下,根据自己的了解,作如下整理和解释,有一些概念可能解释有误,留作日后改进。 1. 概念解释 (1)px--pixel, 像素,是一个数量单位,屏幕上实际的像素点单位,比如设定一个按钮的长度是100px,屏幕分辨率HVGA代表320×480 pixel。 (2)dpi--dot per inch,(dot是否可以理解为p

Lynn1050的专栏 1552

【FPGA教程案例49】控制案例1——基于FPGA的PID控制器verilog实现

PID控制器产生于1915年,PID控制律的概念最早是由LYAPIMOV提出的,到目前为止,PID控制器以及改进的PID控制器在工业控制领域里最为常见。PID控制器(比例-积分-微分控制器),由比例单元 P、积分单元 I 和微分单元 D 组成。通过Kp,Ki和Kd三个参数的设定。PID控制器主要适用于基本线性和动态特性不随时间变化的系统。图1为PID控制器的基本结构框图。PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。...

FPGA/MATLAB学习教程/源码/项目合作开发 4530

YOLOv8人工智能与深度学习——强化学习

本文介绍了将YOLOv8目标检测模型与强化学习结合的方法。主要应用包括自适应目标检测(动态调整检测参数)、主动学习(智能选择标注样本)和多目标跟踪优化。实现方案采用深度Q网络策略,通过定义状态表示、动作空间和奖励函数,使检测系统能根据环境反馈优化性能。该方法具有自适应优化、资源高效、持续改进等优势,能构建更智能的计算机视觉系统。文章详细说明了强化学习环境的构建、策略网络的实现以及训练过程,并提供了代码示例。

u010117029的博客 259

Android 系统当中各种尺寸单位的定义及使用

一,Android 各种标尺单位的含义: px:表示屏幕实际的象素。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。 pt:表示一个点,是屏幕的物理尺寸。大小为1英寸的1/72。 in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是

fulinwsuafcie的专栏 1万+

[Dify] 实现“多知识库切换”功能的最佳实践

知识库切换是提升AI问答系统精准度的关键技术。本文介绍了Dify平台实现多知识库切换的三种方式:静态配置、元数据过滤和动态切换,分析了各自的优缺点。最佳实践建议包括:合理分库设计、意图分类、主库优先检索等。文章还提供了示例工作流程和注意事项,帮助构建更智能、精准的知识驱动型问答系统。通过合理切换知识库,可显著提升回答相关性和系统性能。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 441

复制简书上一篇基础文章

复制简书上一篇基础文章,很基础但是很受用  原文地址 本章主要介绍的是Android的绘图机制和处理技巧 1.屏幕尺寸的信息: 屏幕参数有屏幕大小即屏幕对角线的长度,用“寸”来表示、分辨率、PPI即每英寸像素,它由对角线的像素点除以屏幕大小获得。系统屏幕密度如下 ldpi---120---240X320分辨率 mdpi---160---320X480分辨率 hd

ning_gg的个人笔记 1581

深度学习工具包 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")

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android绘图机制(一)--屏幕尺寸信息

前言:在看完Android群英传这本书后,感觉自己还是空落落的,整本书看的很快,追求速度,和里面的代码实现,想着知道怎么用就行了,后来到了整个项目的开发时就觉得,确实是知道怎么做,却很难脱离书本,或者是源码去写自己的东西,所以我打算停下目前这种赶进度的心态,真正的沉下来,把这本数好好的回味一遍.也希望和我有同样想法的朋友,不要急于求成,这样不仅不能学好,而且会让自己感受不到Android的魅力,而渐

devY的博客 631

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android绘图机制与处理技巧

PPT下载:http://download.youkuaiyun.com/detail/qq_26787115/9480064 Demo下载:http://download.youkuaiyun.com/detail/qq_26787115/9480072 笔记下载:http://pan.baidu.com/s/1c0U7k2W 密码:9v0g

startingc的博客 648

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Android简单的绘图机制与技巧

导语 为了用户体验更好,优美的界面必不可少,所以,绘图就很重要了。 主要内容 Android屏幕相关知识 Android 2D绘图基础 Android XML绘图 Android绘图简单技巧 具体内容屏幕的尺寸信息主要还是因为Android的屏幕确实五花八门,所以在一定程度上的适配问题也是很捉急的,所以我们要对这块屏幕充分的认识。屏幕参数一块屏幕通常具备以下的几个参数: - 屏幕大小:指屏幕对

Super丶C 542

Android群英传知识点回顾——第六章:Android绘图机制与处理技巧

Android群英传知识点回顾——第六章:Android绘图机制与处理技巧知识点目录 6.1 屏幕的尺寸信息 6.1.1 屏幕参数 6.1.2 系统屏幕密度 6.1.3 独立像素密度dp 6.1.4 单位转换 6.2 2D绘图基础 6.3 Android XML绘图 6.3.1 Bitmap 6.3.2 Shape 6.3.3 Layer 6.3

点击置顶文章查看博客目录(全站式导航) 2970

Material Menu源码解析:深入理解Android自定义Drawable的实现原理

想要为你的Android应用添加流畅的Material Design图标动画吗?Material Menu库提供了一个优雅的解决方案,让开发者可以轻松实现汉堡菜单、箭头、关闭和勾选图标之间的平滑过渡动画。今天我们将深入解析这个库的源码,理解其自定义Drawable的实现机制。 ## 项目概述与核心功能 🚀 Material Menu是一个专注于Android Material Design图

gitblog_00758的博客 612

Android群英传学习-Android绘图机制与处理技巧

屏幕的尺寸信息屏幕参数 屏幕大小,指屏幕对角线的长度 分辨率,手机的像素点的个数 PPI,每英寸像素 系统屏幕密度独立像素密度dp使用mdpi作为标准,此情况下1px=1dp 密度越高,1dp所对应的px就会越大单位转换/** * 将px转换为dip * @param context * @param pxValue * @return */

是谁叫我 345

Android群英传笔记——第六章:Android绘图机制与处理技巧

Android群英传笔记——第六章:Android绘图机制与处理技巧 一直在情调,时间都是可以自己调节的,不然世界上哪有这么多牛X的人 今天就开始读第六章了,算日子也刚好一个月了,一个月就读一半,这效率也确实有点低了,自己还要加把劲,争取四月底全部看完,第六章讲的是Android的绘图机制,应该算是比较核心的东西了,不管什么功能,最终都是以图形的方式呈现给用户的,因此,掌握Androi

刘桂林的博客 8220

Android绘图机制与处理技巧-更新中

概述这里我们主要来探讨下 Android屏幕的相关只是 Android绘图技巧 Android图像处理技巧 SurfaceView的使用 绘图技巧中,医生讲的比较粗略,更多的细节参考了 Keegan小钢的博文屏幕的尺寸信息Android手机屏幕,不管是分辨率还是大小,五花八门。。。要想在不同的屏幕上保持绘图的准确性,需要对屏幕有充分的认识.屏幕参数 屏幕大小 指屏幕对角线的长度,通常用寸来表示。比

小工匠 2万+

Android群英传》读书笔记 (3) 第六章 Android绘图机制与处理技巧 + 第七章 Android动画机制与使用技巧...

第六章 Android绘图机制与处理技巧 1.屏幕尺寸信息屏幕大小:屏幕对角线长度,单位“寸”;分辨率:手机屏幕像素点个数,例如720x1280分辨率;PPI(Pixels Per Inch):即DPI(Dots Per Inch),它是对角线的像素点数除以屏幕大小得到的;系统屏幕密度:android系统定义了几个标准的DPI值作为手机的固定DPI独立像素密度(DP):android系统使用md...

weixin_34290390的博客 140

学习笔记《Android群英传》——第六章 Android绘图机制与处理技巧:自定义控件、绘图、色彩特效处理

学习笔记《Android群英传》——第六章 Android绘图机制与处理技巧 章节目录 知识点 1.dp、sp转换为px的工具类 import android.content.Context; /** * dp、sp转换为px的工具类 */ public class DisplayUtil { /** * 将px值转换为dip或dp值,...

芒果蜜桃π 402

Android群英传笔记——摘要,概述,新的出发点,温故而知新,可以为师矣!

Android群英传笔记——摘要,概述,新的出发点,温故而知新,可以为师矣! 当工作的越久,就越感到力不从心了,基础和理解才是最重要的,所以买了两本书,医生的《Android群英传》和主席的《Android开发艺术探索》,主要是再全面点的把自己所学的知识消化,这样也就不枉自己天天熬夜学习了,现在群英传快看完了,准备重新再看一遍...

weixin_33831673的博客 183

Android中dip(dp)和pix互相转化

今天在项目中用到这个功能点,于是找了Utils包的类,发现以前就有写好的转化类,嘿嘿,贴出来。 package com.fabriqate.android.cnngo.utils; import android.content.Context; public class DipPxUtils { // private static final int CNNGO_METRI

gzsword的专栏 7193
上一篇: Android--Drawable
下一篇: Android---绘图机制---Canvas与Paint
张文靖同学
博客等级 码龄10年 43粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值