在页面添加一个透明Layout

本文介绍了一种在Android应用中动态添加自定义布局的方法。通过LayoutInflater从XML资源文件加载布局,并利用Handler更新TextView的内容,同时设置了背景图片并调整了透明度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设有一个Layout,布局如下:
splash.xml

Java代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:gravity="center_vertical|center_horizontal"  
  4.     android:orientation="horizontal" android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent" android:id="@+id/progressShadow">   
  6.     <ProgressBar android:layout_gravity="center_vertical"  
  7.         android:id="@+id/progress" android:layout_width="50dp"  
  8.         android:layout_height="50dp">   
  9.     </ProgressBar>   
  10.     <TextView android:id="@+id/current_action"  
  11.         android:layout_toRightOf="@id/progress" android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content" android:layout_marginLeft="5.0dip"  
  13.         android:text="@string/loading" android:textSize="20sp">   
  14.     </TextView>   
  15. </LinearLayout>  
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:gravity="center_vertical|center_horizontal"
	android:orientation="horizontal" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:id="@+id/progressShadow">
	<ProgressBar android:layout_gravity="center_vertical"
		android:id="@+id/progress" android:layout_width="50dp"
		android:layout_height="50dp">
	</ProgressBar>
	<TextView android:id="@+id/current_action"
		android:layout_toRightOf="@id/progress" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:layout_marginLeft="5.0dip"
		android:text="@string/loading" android:textSize="20sp">
	</TextView>
</LinearLayout>

我们可以通过如下方式来动态添加到一个Activity页面上面:
Java代码 复制代码
  1. private int KEY_PROGRESS_LAYOUT_ID = 1;   
  2.     private Handler handler = new Handler();   
  3.     public void add() {   
  4.         LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(   
  5.                 320, LinearLayout.LayoutParams.FILL_PARENT);   
  6.         LayoutInflater inflater = (LayoutInflater) login   
  7.                 .getSystemService(Login.LAYOUT_INFLATER_SERVICE);   
  8.         layout = inflater.inflate(R.layout.splash, null);   
  9.         layout.setId(KEY_PROGRESS_LAYOUT_ID);   
  10.         // progressShadow = (LinearLayout) layout   
  11.         // .findViewById(Constants.KEY_PROGRESS_LAYOUT_ID);   
  12.   
  13.         final TextView tv = (TextView) layout.findViewById(R.id.current_action);   
  14.         handler.post(new Runnable() {   
  15.             public void run() {   
  16.                 tv.setText("Loading....");   
  17.             }   
  18.         });   
  19.   
  20.         Drawable ico = login.getResources().getDrawable(R.drawable.dbg);   
  21.         layout.setBackgroundDrawable(ico);   
  22.         ico.mutate().setAlpha(200);   
  23.   
  24.         animLayout.addView(view, layoutParams);   
  25.     }  

<think>好的,我现在需要帮用户解决如何使用pyecharts或者matplotlib来可视化数独的问题。首先,我得回忆一下这两个库的特点。Matplotlib是一个比较传统的绘图库,适合静态图,而pyecharts基于ECharts,适合交互式图表。数独是一个9x9的网格,需要展示数字和不同的颜色区分,比如初始数字和用户填入的数字颜色不同。 首先考虑用matplotlib的话,可能需要用imshow或者表格来绘制网格。数独的每个单元格需要显示数字,并且有边框加粗。可能用annotate来添加文本。同时,初始数字可能需要用不同的背景色,比如灰色,而用户填入的用白色。不过matplotlib的交互性可能不够,无法点击修改,但用户可能只是需要静态的可视化。 如果用pyecharts的话,可以利用HeatMap或者自定义的Grid来绘制,每个单元格的位置需要精确计算。pyecharts支持更多的交互性,比如提示框,但添加数字可能需要结合散点图的标签或者自定义的图表类型。不过设置起来可能更复杂,尤其是处理每个单元格的样式和文本。 用户的需求是可视化数独,可能需要展示一个初始数独题目,并且区分哪些是初始数字,哪些是用户填的。比如用颜色区分,或者字体加粗。需要生成一个9x9的网格,每个单元格显示数字或留空,周围的边框要加粗,每3x3的格子之间也要有更粗的边框。 首先,我应该先确定数据结构的表示方式。数独通常用9x9的二维数组,0表示空单元格。例如示例中的sudoku_board。然后,对于matplotlib,可以用table来绘制,每个单元格设置文本和颜色。或者用网格线配合文本显示。 在matplotlib中,创建一个figure和axes,关闭坐标轴,然后绘制表格。表格的每个单元格设置颜色和文本。可能需要调整单元格的边框宽度,区分外框和3x3的边框。但matplotlib的表格可能不太容易调整单个单元格的边框,可能需要用gridspec或者直接绘制矩形和线条。 另一种方法是使用imshow来显示颜色,然后叠加文本。例如,用imshow显示每个单元格的背景颜色,然后用循环在每个单元格中添加文本。同时,绘制线条来形成数独的网格,包括粗线条分隔3x3的区域。 对于pyecharts,可能需要使用HeatMap来生成颜色块,然后使用LabelOpts来显示文本。但HeatMap的每个点对应一个位置,需要将数独的每个单元格映射到坐标。或者使用Grid组合多个图表,比如在每个单元格的位置添加一个Bar或者Scatter,然后设置显示文本。这种方法可能比较繁琐,但可以实现更多的交互效果。 现在,我需要比较两种方法的难易程度和效果。Matplotlib可能更容易实现静态图,代码量较少。而pyecharts可能需要更多的配置,但结果更美观和交互。用户可能更倾向于清晰的展示,所以可能优先选择matplotlib,或者根据用户偏好选择。 接下来,我需要编写示例代码。先处理matplotlib的版本。首先导入库,创建数独数据。然后创建一个figure和axes,关闭坐标轴。然后绘制网格线,设置主网格线(每个单元格)和更粗的线条分隔3x3的宫格。然后遍历每个单元格,添加数字,并根据是否为初始数字设置颜色和字体样式。 例如,使用ax.text来在单元格中心位置添加文本,初始数字用黑色,用户填入的用蓝色。同时,设置单元格的背景颜色,初始数字的单元格为灰色,其他为白色。不过设置单元格背景颜色可能需要绘制矩形,或者利用表格的单元格颜色属性。 或者,使用table组件,但表格的单元格可能更方便设置颜色和文本。例如,创建9x9的表格,每个单元格的内容为数独的数字,然后设置单元格的颜色。但表格的行列可能需要调整位置,确保每个单元格正确对应数独的位置。 可能更简单的方法是使用ax.text来添加文本,并用ax.add_patch绘制矩形作为背景色。例如,遍历每个单元格,如果该单元格是初始数字,则绘制一个灰色矩形,否则白色,然后在上面添加数字。同时,绘制网格线,调整线条宽度。 这样,每个单元格的位置需要计算,比如从0到9的行和列,每个单元格的坐标。例如,对于行i,列j,左下角坐标为(j, 8-i)(因为数独通常左上角为原点,但matplotlib的坐标原点在左下)。或者调整坐标轴的方向,使其符合常规的数独显示。 此外,可能需要调整坐标轴的范围,使网格正确显示。例如,设置xlim和ylim为0到9,每个单元格占1个单位。主刻度线可以隐藏,或者设置为每个单位的位置。然后绘制网格线,主网格线为每个单元格的边框,线条较细,而每三个单元格的线条较粗。 然后,对于每个单元格,检查sudoku_board中的值,如果不为0,则添加文本。初始数字可以用一个mask数组来标记哪些是初始的,比如示例中的initial_board,初始数字对应的位置为True。 在代码中,首先定义sudoku_board和initial_board。然后循环每个i和j,检查sudoku_board[i][j]是否为0,如果不为0,则根据initial_board[i][j]的值决定颜色。如果是初始数字,背景色为浅灰色,文字加粗;否则背景白色,文字颜色不同。 然后,绘制矩形作为背景,使用ax.add_patch(plt.Rectangle(...)),然后添加文本ax.text(j+0.5, 8-i+0.5, str(num), ...)。同时,设置ha和va为center,使文本居中。 关于网格线的绘制,可以使用ax.hlines和ax.vlines,或者循环绘制线条。比如,对于每个x坐标0到9,绘制垂直线条,线宽根据是否在3、6的位置调整。同样,水平线条也是如此。这样,每个主要的大边框会更粗。 最后,可能需要隐藏坐标轴的标签和刻度,使图像更干净。 对于pyecharts的实现,可能需要使用HeatMap或者自定义的Grid和Bar。例如,每个单元格对应一个HeatMap的点,颜色根据是否为初始数字。然后,使用散点图在HeatMap上叠加文本。不过pyecharts中HeatMap的标签可能需要设置,但可能无法每个单元格单独设置。或者,使用Grid组件,每个单元格是一个单独的Bar,设置大小和颜色,然后在中间放置文本。这可能比较复杂,但可行。 例如,使用Grid布局,每个单元格对应一个Bar图表,位置在对应的坐标,设置宽度和高度为1,颜色根据初始状态,然后添加一个Text组件在中间显示数字。这种方法需要循环生成多个Bar和Text,比较繁琐,但可以实现。 不过,可能更简单的方法是使用pyecharts的Table组件,但Table可能不够灵活,无法呈现网格线。另一个方法是使用自定义的散点图,每个点代表一个单元格的中心,然后设置点的大小为单元格大小,颜色,并在标签中显示数字。但这样可能难以控制单元格的边框。 或者,使用pyecharts的HeatMap,设置每个单元格的颜色,并使用visualmap组件来区分初始和用户输入。然后,结合label_opts显示数字。但HeatMap的标签可能只能显示数值,而数独中的0需要显示为空,可能需要处理数据中的0为NaN或其他方式,并在标签中格式化。 例如,将数独数据中的0替换为None,这样HeatMap不会显示颜色,但标签可能需要处理。或者,在formatter函数中检查值是否为0,显示空字符串。这可能可行,但需要测试。 另外,HeatMap的坐标是行列索引,所以需要将数独的行列对应到HeatMap的x和y轴。例如,x轴是0到8,y轴是0到8,每个单元格的值对应数独的数字。颜色根据是否初始数字分为两种,这可能需要两个HeatMap叠加,或者使用一个分段的visualMap。 不过这可能比较复杂。例如,将初始数字的位置作为一个单独的HeatMap层,颜色不同。但可能更简单的是,在数据中加入一个字段,表示是否是初始数字,然后根据该字段设置颜色。 综上,pyecharts的实现可能比matplotlib复杂,尤其是处理文本标签和颜色。因此,对于快速实现,可能优先选择matplotlib。 现在,我需要编写示例代码。先处理matplotlib版本。首先导入库: import matplotlib.pyplot as plt import numpy as np 然后定义数独的数据,示例中的sudoku_board和initial_board: sudoku_board = [ [5, 3, 0, 0, 7, 0, 0, 0, 0], [6, 0, 0, 1, 9, 5, 0, 0, 0], [0, 9, 8, 0, 0, 0, 0, 6, 0], [8, 0, 0, 0, 6, 0, 0, 0, 3], [4, 0, 0, 8, 0, 3, 0, 0, 1], [7, 0, 0, 0, 2, 0, 0, 0, 6], [0, 6, 0, 0, 0, 0, 2, 8, 0], [0, 0, 0, 4, 1, 9, 0, 0, 5], [0, 0, 0, 0, 8, 0, 0, 7, 9] ] initial_board = [ [True, True, False, False, True, False, False, False, False], [True, False, False, True, True, True, False, False, False], [False, True, True, False, False, False, False, True, False], [True, False, False, False, True, False, False, False, True], [True, False, False, True, False, True, False, False, True], [True, False, False, False, True, False, False, False, True], [False, True, False, False, False, False, True, True, False], [False, False, False, True, True, True, False, False, True], [False, False, False, False, True, False, False, True, True] ] 然后创建图形和坐标轴: fig, ax = plt.subplots(figsize=(8, 8)) ax.set_xlim(0, 9) ax.set_ylim(0, 9) ax.set_aspect('equal') ax.axis('off') # 关闭坐标轴 接下来绘制网格线。首先画细线,每个单元格的分隔线: for i in range(10): lw = 2 if i % 3 == 0 else 1 ax.axhline(i, color='black', linewidth=lw) ax.axvline(i, color='black', linewidth=lw) 然后调整坐标轴,使得数独的正方向正确。可能需要反转y轴,使得第一行在顶部: ax.invert_yaxis() 或者,调整文本的位置。例如,第0行对应y轴的位置是0,文本应该放在0.5的位置,这样在绘制时,i的行对应y坐标为i + 0.5。或者可能需要调整坐标方向。 或者,保持坐标轴的原点在左下,绘制时,数独的第一行在顶部。所以在绘制文本时,行i对应y坐标为i + 0.5,列j对应x坐标为j + 0.5。例如,对于数独的第0行第0列的单元格,其中心坐标是(0.5, 0.5),而第8行第8列的中心坐标是(8.5, 8.5)。但这样绘制的话,可能需要设置ax的xlim和ylim为0到9,并且将坐标轴反转,使得y轴从上到下增加。 或者,设置y轴从8到0,这样i=0对应顶部的行。例如: ax.set_ylim(9, 0) 这样,在绘制时,行i对应的y位置是i + 0.5,而列j对应的x位置是j + 0.5。这可能需要调整。 可能需要测试坐标的布局。假设数独的第0行是顶部,对应y=0的位置,那么每个单元格的中心坐标应为j+0.5(x)和i+0.5(y)。例如,数独的i行j列对应坐标x=j+0.5, y=i+0.5。那么绘制文本的位置应该在此处。 接下来,填充单元格颜色和数字。遍历每个单元格: for i in range(9): for j in range(9): num = sudoku_board[i][j] if num != 0: # 设置背景颜色 if initial_board[i][j]: color = '#CCCCCC' # 初始单元格灰色 else: color = 'white' # 绘制背景矩形 rect = plt.Rectangle((j, i), 1, 1, facecolor=color, edgecolor='black', linewidth=0.5) ax.add_patch(rect) # 添加文本 ax.text(j + 0.5, i + 0.5, str(num), ha='center', va='center', fontsize=14, fontweight='bold' if initial_board[i][j] else 'normal', color='black' if initial_board[i][j] else 'blue') else: # 空单元格,白色背景 rect = plt.Rectangle((j, i), 1, 1, facecolor='white', edgecolor='black', linewidth=0.5) ax.add_patch(rect) 但这里可能存在绘制顺序的问题,因为每次添加的矩形可能覆盖之前的网格线。所以可能需要先绘制所有背景矩形,再绘制网格线。或者调整zorder参数,让网格线在顶部。 或者,在绘制网格线时,使用更粗的线宽,并且覆盖在矩形之上。例如,设置网格线的zorder为3,而矩形的zorder为2。这样网格线会显示在矩形上方。 修改代码,先绘制矩形,再绘制网格线: 调整代码顺序: 先填充单元格颜色: for i in range(9): for j in range(9): num = sudoku_board[i][j] color = 'white' if num !=0 and initial_board[i][j]: color = '#CCCCCC' rect = plt.Rectangle((j, i), 1, 1, facecolor=color, edgecolor='none', zorder=0) ax.add_patch(rect) 然后绘制网格线,设置颜色为黑色,线宽: for i in range(10): lw = 2 if i % 3 == 0 else 0.5 ax.axhline(i, color='black', linewidth=lw, zorder=1) ax.axvline(i, color='black', linewidth=lw, zorder=1) 然后添加数字: for i in range(9): for j in range(9): num = sudoku_board[i][j] if num !=0: ax.text(j + 0.5, i + 0.5, str(num), ha='center', va='center', fontsize=14, fontweight='bold' if initial_board[i][j] else 'normal', color='black' if initial_board[i][j] else 'blue', zorder=2) 这样,背景矩形在底层,网格线在中间层,文本在顶层。 同时,调整ax的xlim和ylim: ax.set_xlim(0, 9) ax.set_ylim(9, 0) # 使得y轴方向正确,0行在顶部 这样,整个数独的绘制应该正确显示。另外,可能需要关闭坐标轴的刻度: ax.set_xticks([]) ax.set_yticks([]) 或者使用ax.axis('off')来隐藏整个坐标轴。 最后,保存或显示图像: plt.show() 测试这段代码,应该能正确显示数独,初始数字为灰色背景加粗黑色字体,用户填入的为白色背景蓝色字体,空单元格为白色,网格线正确显示粗细分隔。 对于pyecharts的实现,可能比较复杂。例如,使用HeatMap,每个单元格的位置对应x和y,数值为数字。初始和非初始用不同的颜色。然后,显示数值作为标签。但需要处理0的情况,不显示数字。例如,将0替换为None,这样HeatMap不会显示颜色,但标签也需要处理为空。 例如,构造数据: data = [] for i in range(9): for j in range(9): num = sudoku_board[i][j] if num !=0: data.append([j, i, num]) 然后,使用HeatMap: from pyecharts import options as opts from pyecharts.charts import HeatMap heatmap = ( HeatMap() .add_xaxis(list(range(9))) .add_yaxis("", list(range(9)), data, label_opts=opts.LabelOpts(is_show=True, position="inside"), ) .set_global_opts( visualmap_opts=opts.VisualMapOpts( is_show=False, min_=1, max_=9, ), xaxis_opts=opts.AxisOpts( type_="category", splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts={"opacity": 1}), ), yaxis_opts=opts.AxisOpts( type_="category", splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts={"opacity": 1}), ), ) ) heatmap.render("sudoku_heatmap.html") 但这样可能无法正确显示每个单元格的边框,并且颜色可能根据数值不同而变化,而我们需要的是根据是否是初始数字来区分颜色。这可能需要将数据分为两个系列,初始和非初始,分别用不同的颜色。 或者,在数据中添加一个维度表示颜色,然后使用visualMap根据这个维度设置颜色。例如,每个数据点包含x, y, value, is_initial。然后,用两个HeatMap叠加,一个显示初始数字的颜色,另一个显示非初始的。 但可能比较复杂。另一种方法是使用Scatter图来显示文本,而用HeatMap显示背景颜色。例如,绘制两个HeatMap层,一个用于初始背景,另一个用于非初始背景。然后,使用Scatter显示数字。 但这样的实现可能需要较多的步骤,代码较为复杂。 例如,首先创建两个HeatMap,一个处理初始单元格,另一个处理非初始。但如何将数据分开? 或者,构造两个数据列表:initial_data和other_data,分别表示初始和非初始的数字。然后,用不同的颜色。 例如: initial_data = [] other_data = [] for i in range(9): for j in range(9): num = sudoku_board[i][j] if num !=0: if initial_board[i][j]: initial_data.append([j, i, num]) else: other_data.append([j, i, num]) 然后,创建两个HeatMap系列: heatmap = ( HeatMap() .add_xaxis(list(range(9))) .add_yaxis("Initial", list(range(9)), initial_data, label_opts=opts.LabelOpts(is_show=True, position="inside"), itemstyle_opts=opts.ItemStyleOpts(color='#CCCCCC') ) .add_yaxis("Other", list(range(9)), other_data, label_opts=opts.LabelOpts(is_show=True, position="inside", color='blue'), itemstyle_opts=opts.ItemStyleOpts(color='white') ) # 设置其他全局选项... ) 但HeatMap的每个系列可能覆盖之前的,导致颜色显示不正确。或者,可能需要设置透明度,但效果可能不理想。 此外,HeatMap的每个点对应一个单元格,但数据需要覆盖所有非零的单元格。对于零的单元格,可能无法处理,因为数据中没有对应的点,因此背景可能显示为默认颜色,但默认颜色可能不是白色。可能需要设置背景颜色为白色,这在全局选项中设置。 另外,调整HeatMap的单元格样式,比如边框。然而,pyecharts的HeatMap似乎不支持直接设置单元格边框的粗细和颜色。因此,可能无法实现类似matplotlib中的网格线效果。 综上,使用pyecharts实现数独的可视化可能较为困难,尤其是处理网格线和背景颜色。因此,可能推荐用户使用matplotlib进行快速实现,而pyecharts的方案可能不够理想,或者需要更复杂的处理。 总结,给出matplotlib的示例代码,并说明如何调整样式,如颜色、字体、网格线等。对于pyecharts,可能简要说明其局限性,并提供可能的思路,但推荐使用matplotlib。</think>以下是使用 **matplotlib** 绘制数独可视化页面的详细代码和说明: --- ### 步骤说明 1. **导入库**:使用 `matplotlib` 绘制图形。 2. **定义数独数据**:包括题目和初始数字的标记。 3. **绘制背景和网格**:区分初始单元格颜色,绘制粗细不同的网格线。 4. **填充数字**:根据是否为初始数字设置不同的字体样式。 5. **美化图表**:隐藏坐标轴,调整布局。 --- ### 完整代码示例 ```python import matplotlib.pyplot as plt # 数独题目数据 (0表示空格) sudoku_board = [ [5, 3, 0, 0, 7, 0, 0, 0, 0], [6, 0, 0, 1, 9, 5, 0, 0, 0], [0, 9, 8, 0, 0, 0, 0, 6, 0], [8, 0, 0, 0, 6, 0, 0, 0, 3], [4, 0, 0, 8, 0, 3, 0, 0, 1], [7, 0, 0, 0, 2, 0, 0, 0, 6], [0, 6, 0, 0, 0, 0, 2, 8, 0], [0, 0, 0, 4, 1, 9, 0, 0, 5], [0, 0, 0, 0, 8, 0, 0, 7, 9] ] # 标记初始数字的位置 (True表示初始固定数字) initial_board = [ [True, True, False, False, True, False, False, False, False], [True, False, False, True, True, True, False, False, False], [False, True, True, False, False, False, False, True, False], [True, False, False, False, True, False, False, False, True], [True, False, False, True, False, True, False, False, True], [True, False, False, False, True, False, False, False, True], [False, True, False, False, False, False, True, True, False], [False, False, False, True, True, True, False, False, True], [False, False, False, False, True, False, False, True, True] ] # 创建画布和坐标轴 fig, ax = plt.subplots(figsize=(8, 8)) ax.set_xlim(0, 9) ax.set_ylim(9, 0) # 反转Y轴,使数独顶部为第0行 ax.axis('off') # 隐藏坐标轴 # 绘制单元格背景和数字 for i in range(9): for j in range(9): num = sudoku_board[i][j] # 单元格背景颜色 color = '#CCCCCC' if (initial_board[i][j] and num != 0) else 'white' rect = plt.Rectangle((j, i), 1, 1, facecolor=color, edgecolor='black', linewidth=0.5) ax.add_patch(rect) # 添加数字 if num != 0: fontweight = 'bold' if initial_board[i][j] else 'normal' color = 'black' if initial_board[i][j] else 'blue' ax.text(j + 0.5, i + 0.5, str(num), ha='center', va='center', fontsize=14, fontweight=fontweight, color=color) # 绘制粗细分隔线 for i in range(10): lw = 2 if i % 3 == 0 else 0.5 ax.axhline(i, color='black', linewidth=lw) ax.axvline(i, color='black', linewidth=lw) plt.tight_layout() plt.show() ``` --- ### 效果说明 - **初始数字**:灰色背景、加粗黑色字体。 - **用户填入数字**:白色背景、蓝色字体。 - **网格线**:细线分隔单元格,粗线分隔3x3宫格。 - **交互性**:静态图像,适合展示题目或解题结果。 --- ### 使用 Pyecharts 的补充说明 Pyecharts 更适合动态交互,但数独的精细网格和文本定位较复杂。若需尝试: 1. **使用 HeatMap** 渲染背景颜色。 2. **结合 Scatter** 在单元格中心添加文本。 3. **调整视觉映射** (`visualmap`) 控制颜色。 但代码复杂度较高,推荐优先使用 matplotlib 实现静态可视化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值