防QQ可以在任何地方横向滑动的一个view

自定义HorizontalScrollView实现QQ消息列表效果 为了解决DrawerLayout侧滑只能从最右边把侧滑栏滑出来,这次上真材实料,直接自定义HorizontalScrollView来实现!完美效果! 阅读详情

这里以仿QQ的聊天记录item左划删除为例,载体是recyclerview,你也可以换成listview.
我想的这个办法可能比较笨。再加上参考网上的一些大佬们的思路,大概思路是自定义一个HorizontalScrollView,通过监听手势的滑动来判断。
感兴趣的可以去我的gayhub上下载,gayhub
废话不多说直接上代码。

CustomHorizontalScrollView.java

package com.robin.SlideItem;

import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;


public class CustomHorizontalScrollView extends HorizontalScrollView {
    private static final String TAG = "ScrollListViewItem";
    private static int ScreenWidth = 0;
    private static int MenuWidth = 0;
    private static int HalfMenuWidth = 0;
    private boolean turnLeft = false;
    private boolean turnRight = false;
    private boolean once;

    ViewGroup left;
    ViewGroup centre;
    ViewGroup right;

    public CustomHorizontalScrollView(Context context) {
        super(context);
    }

    public CustomHorizontalScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomHorizontalScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public static int getScreenWidth(Context context) {
        WindowManager wm = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics outMetrics = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(outMetrics);
        return outMetrics.widthPixels;
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        if (!once) {
            Log.i(TAG, "onMeasure: getChildCount==" + getChildCount());//这个地方要注意一下子view的数量和布局中的数量
            LinearLayout linearLayout = (LinearLayout) getChildAt(0);
            left = (ViewGroup) linearLayout.getChildAt(0);
            centre = (ViewGroup) linearLayout.getChildAt(1);
            right = (ViewGroup) linearLayout.getChildAt(2);

            ScreenWidth = getScreenWidth(getContext());
            MenuWidth = ScreenWidth / 4;
            HalfMenuWidth = MenuWidth / 2;

            if (left != null) {
                left.getLayoutParams().width = MenuWidth;
            }
            if (centre != null) {
                centre.getLayoutParams().width = ScreenWidth;
            }
            if (right != null) {
                right.getLayoutParams().width = MenuWidth;
            }
        }
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        if (changed) {
            this.scrollTo(MenuWidth, 0);
            once = true;
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_UP:
                //向左滑
                if (turnLeft) {
                    if (getScrollX() < HalfMenuWidth) {
                        //滑到左最末尾
                        this.scrollTo(0, 0);
                    } else if (getScrollX() > HalfMenuWidth && getScrollX() < MenuWidth + HalfMenuWidth) {
                        //滑到中间
                        this.scrollTo(MenuWidth, 0);
                    } else {
                        this.scrollTo(MenuWidth * 2, 0);
                    }
                }
                //向右滑
                if (turnRight) {
                    if (getScrollX() > MenuWidth + HalfMenuWidth) {
                        //滑到最右
                        this.scrollTo(MenuWidth + MenuWidth, 0);
                    } else if (getScrollX() > HalfMenuWidth && getScrollX() < MenuWidth + HalfMenuWidth) {
                        //滑到中间
                        this.scrollTo(MenuWidth, 0);
                    } else {
                        //滑到最左
                        this.scrollTo(0, 0);
                    }
                }
                return true;
        }
        return super.onTouchEvent(ev);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        if (l > MenuWidth) {
            turnLeft = false;
            turnRight = true;
        } else {
            turnLeft = true;
            turnRight = false;
        }
    }
}

MyModel

package com.robin.SlideItem;

/**
 * Created by robin on 2016/3/2.
 */
public class MyModel {

    private String left;
    private String content;
    private String right;

    public MyModel(String left, String content, String right) {
        this.left = left;
        this.content = content;
        this.right = right;
    }

    public String getContent() {
        return content;
    }

    public String getRight() {
        return right;
    }

    public String getLeft() {
        return left;
    }

    public void setRight(String right) {
        this.right = right;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public void setLeft(String left) {
        this.left = left;
    }
}

MainActivity.java

package com.robin.SlideItem;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SimpleItemAnimator;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private List<MyModel> listmodel=null;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listmodel=new ArrayList<MyModel>();
        initData();
        mRecyclerView = (RecyclerView) findViewById(R.id.rv_demo);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        ((SimpleItemAnimator)mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);//更新的时候防止闪动
        mRecyclerView.setAdapter(new MyAdapter(listmodel,this));

    }

    public void initData(){
        MyModel m=null;

        for(int i=1;i<=20;i++){
            m=new MyModel("左边"+i,"这是内容"+i,"删除"+i);
            listmodel.add(m);
        }
    }
    class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
        private static final String TAG = "MyAdapter";
        private List<MyModel> model;
        private Context context;

        public MyAdapter(List<MyModel> model,Context context) {
            this.model = model;
            this.context = context;
        }

        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.listview_item,null);
            return new ModelHolder(mView);
        }

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
            if(holder instanceof ModelHolder){
                ((ModelHolder)holder).left.setText(model.get(position).getLeft());
                ((ModelHolder)holder).content.setText(model.get(position).getContent());
                ((ModelHolder)holder).right.setText(model.get(position).getRight());
                ((ModelHolder)holder).right.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        notifyItemRemoved(position);
                        model.remove(position);
                        notifyItemRangeChanged(position,model.size());
                        Log.i(TAG, "onClick: position=="+position+"----------------model.size=="+model.size());
                    }
                });

            }
        }

        @Override
        public int getItemCount() {
            return model.size();
        }
        class ModelHolder extends RecyclerView.ViewHolder{

            public TextView left;
            public TextView content;
            public TextView right;
            public ModelHolder(View itemView) {
                super(itemView);
                left=(TextView)itemView.findViewById(R.id.leftbutton);
                content=(TextView)itemView.findViewById(R.id.contentview);
                right=(TextView)itemView.findViewById(R.id.rightbutton);
            }
        }
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.robin.SlideItem.MainActivity">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_demo"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ></android.support.v7.widget.RecyclerView>
</RelativeLayout>

listview_item.xml

<?xml version="1.0" encoding="utf-8"?>
<com.robin.SlideItem.CustomHorizontalScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <include layout="@layout/leftbutton"/>
        <include layout="@layout/context_view"/>
        <include layout="@layout/rightbutton"/>
    </LinearLayout>
</com.robin.SlideItem.CustomHorizontalScrollView>

leftbutton.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@color/colorPrimaryDark">
    <TextView
        android:id="@+id/leftbutton"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="leftbutton"/>
</RelativeLayout>

content_view.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@color/colorPrimary"
    android:layout_marginBottom="10dp">

    <TextView
        android:id="@+id/contentview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="context_view"/>

</RelativeLayout>

rightbutton.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@color/colorAccent">
    <TextView
        android:id="@+id/rightbutton"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="rightbutton"/>
</RelativeLayout>
实现自定义view(2):仿Android QQ多屏幕显示ListView的效果 转载请注明出处。博客地址:http://blog.youkuaiyun.com/mylzc 本文在《仿 UC,墨迹天气左右拖动 多屏幕显示效果》的基础上对代码进行修改,模仿Android QQ主界面的分屏ListView滑动效果。 当进行横向滑动时,会切换屏幕,当纵向滑动时,ListVi 阅读详情

相关推荐

微信小程序横向滑动菜单栏实现

微信小程序横向滑动菜单栏实现

weixin_45432648的博客 2674

自定义HorizontalScrollView嵌套HorizontalListView实现手势监听、按钮监听横向滚动功能

今日空闲花了点时间对以前自主实现的项目功能进行改进和优化, 其实一些界面的小功能有时候没实现过,也没经验类似项目功能经验,反而耗费的时间会更多。下面我所描述的界面功能就是我在对用RecyclerView控件不熟悉的情况下使用了HorizontalScrollView来实现的,在我把它优化成RecyclerView控件之前在此做个笔录,方便以后查阅。 按照以往的惯例,先上效果图(既可以手势监听,也可以按钮监听)1.HorizontalScrollView滑动到最左边的时候,左边箭头光标变灰色2.H

G11176593的博客 1082

CustomHorizontalRecyclerView:自定义水平可滑动RecyclerView,滑到中间的选项能变大,滑出中间的变小

CustomHorizontalRecyclerView 自定义水平可滑动RecyclerView,滑到中间的item能变大,滑出中间的item变回原来大小; 还有两个按钮,点击左边按钮就向左滑一个位置,点击右边按钮就向右滑一个位置。 UI界面如下:

android 滚动条 惯性,Android ScrollView取消惯性滚动的方法

ScrollView中惯性滚动的效果,想让这个ScrollView慢一点滑动或者接近drag(拖拽)操作,就提出了添加阻尼的说法。只要重新fling方法即可,将velocity值极至缩小。实例如下:public class CustomHorizontalScrollView extends HorizontalScrollView {private Context context;private...

weixin_42304279的博客 845

支持横向和纵向滑动的ViewPage

一个既可以横向滑动和纵向滑动的ViewPage

如何从RHEL 8升级到RHEL 9

Red Hat 于 2022 年 5 月 17 日宣布全面推出 RHEL 9。这是 RHEL(Red Hat Enterprise Linux)的最新版本,它具有许多功能和增强功能。

u012748257的博客 1020

完美解决HorizontalScrollView与ListView滑动事件冲突

HorizontalScrollView与ListView滑动事件冲突,导致ListView下拉不灵敏。下面给出一种比较完美的实现方式,如果是纵向的ScrollView,对应改一下就好了~~上代码 package wosai.com.membermarketing.util.layout; import android.content.Context; import android.util.

LeBron_Six的专栏 7056

模拟波束赋形 vs 数字波束赋形:5G天线设计中的成本与性能权衡

本文深入剖析了5G天线设计中模拟波束赋形与数字波束赋形的核心差异,重点探讨了二者在硬件成本、功耗、网络覆盖能力和频谱效率等方面的权衡。文章指出,模拟方案成本低但灵活性有限,数字方案性能强大但代价高昂,而混合波束赋形已成为主流折中方案。决策需紧密结合具体的部署场景、性能要求和总拥有成本进行综合考量。

weixin_28432777的博客 841

仿qq横向滑动删除的 SwipeMenuListView

仿qq横向滑动删除的 SwipeMenuListView@(安卓开发)[android开发|自定义view] SwipeMenuListView是利用Scroller实现的横滑item出现菜单项的listview, 源码已分享在Github,注释清晰,欢迎查看指正。仿qq横向滑动删除的 SwipeMenuListView 一Demo展示 二使用方式 1为SwipeMenuListView 新建A

张武不是技术宅的博客 642

从KVM虚拟化到Openstack云化架构综述

目录 摘要 OpenStack的虚拟化技术 OpenStack架构介绍 Nova Swift KeyStone Neutron Glance Cinder Ceilometer Heat 摘要 这两年的工作中,接触到公有云和私有云的项目还不少。起初对于Openstack的了解,仅停留在其几大组件的交互上,如Nova、Neutron、Glance等,以及对各大云厂商功能点上...

liyunpeng229的博客 2051

EtherCAT总线运动控制学习笔记(RXXW_Dor)

说到总线控制,就要说到报文、对象字典、PN通信我们大部分会说报文,EtherCAT通信我们常说对象字典,叫法不一样,但是原理基本一致,下面我们简单认识下上面是对象字典。

RXXW_Dor的博客 5435

微信小程序开发,scroll-view实现商品列表水平/横向滑动

使用竖向滚动时,需要给scroll-view一个固定高度,通过 WXSS 设置 height。组件属性的长度单位默认为px,2.4.0起支持传入单位(rpx/px)。在上面.wxml布局中,商品列表是通过view堆积起来的,在实际开发中,肯定也不能这样写死,列表数据应该是一个动态的。在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。官方说只有在竖向滚动时,需要给scroll-view一个固定高度,但在实际开发过程中,解决方案:在scroll-view标签中添加。

商城app+新闻app+备忘录记事本app视频教程在某站【浩宇软件开发】 5792

鸿宇多用户商城user.php RCE漏洞复现

鸿宇多用户商城 user.php 存在任意命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。

0xSec 1624

小程序开发Scroll-view横向滑动的问题

近日在学习小程序的开发,其间在进行scroll-view滑动组件时,发现了个坑,目前官方文档有缺陷。 如下图所示: 在微信公众平台-小程序开发https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html中scroll-view组件的横向滚动时,很多同学会发现,按文档所说的做也还是无法左右滑动,这时您可...

空中弥漫着HTML的博客 1万+

视觉媒体通信作业记录(六)端到端的视频传输系统

将采集、编码、传输、显示各模块连接起来,形成一个端到端的视频通信系统,开发一个特色模块,将其加入系统;

weixin_45774698的博客 1967

22、光无线通信调制技术详解

本文详细介绍了光无线通信中的多种调制技术,包括开关键控(OOK)、脉冲位置调制(PPM)、数字脉冲间隔调制(DPIM)、副载波强度调制(SCM)、相移键控(PSK)、正交幅度调制(QAM)以及多载波调制(MCM)如OFDM和MSIM。文章分析了各类调制技术在带宽需求、功率效率、传输容量、传输速率和PAPR等方面的性能差异,并通过Matlab仿真展示了其在AWGN信道下的误码率表现。同时,对比了不同技术的适用场景,提出了调制选择流程,并结合室内光通信与自由空间光通信的应用案例,展望了未来调制技术向高频谱效率、

net55的博客 116

微信小程序:scroll-view制作横向滚动导航条特效

微信小程序:scroll-view制作横向滚动导航条特效 一、scroll-view介绍 微信小程序官方释义为:可滚动视图区域,目前一共有10几个属性,包括:scroll-x、scroll-y、scroll-top等。详细介绍见官方文档: developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html。下面来说下如何使用scroll-view做一个可横向滚动的导航条吧。效果如图: 二、scroll-x实现横向滚动 先来看下wxml页面

qq_40522087的博客 1万+

基于STM32设计的水质检测系统_333

水质安全对生态环境、农业生产、工业制造以及人类健康至关重要。针对传统水质检测方式检测周期长、成本高、实时性差的问题,本项目设计并实现了一种基于STM32的水质检测系统。系统采用STM32F103RCT6作为主控芯片,集成水温、pH值、电导率和浊度等传感器,能够实时采集水质数据,并通过OLED显示屏进行本地显示。同时,利用Air724UG 4G模块通过MQTT协议将数据上传至华为云IoT平台,实现远程监测。用户可通过Qt5开发的Android手机APP和Windows上位机查看水质数据,并接收超限报警提示。此

715

android 横向滑动日期_Android 写一个可以横向滑动条目的列表

在开发中,会发现很多列表希望条目能够侧滑,侧滑出来一两个按钮什么的,例如QQ就可以侧滑出删除按钮。这边文章就是教大家写一个可以侧滑的自定义控件。另外,本文的内容不是属于Android中比较高深的内容,高手可以略过。通过阅读本文,你可能学习到的知识有:自定义侧滑控件的实现Android事件传递简要内容属性动画ValueAnimator的使用先来看一下要实现的侧滑是什么样的效果:sample.gif因...

weixin_36184985的博客 431

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android 自定义仿手机QQ横向滑动的RecyclerView

Android 自定义仿微信横向滑动的RecyclerView 在我们的项目中,需要对列表的数据进行人性化的编辑查看与删除,与我一起工作的前辈写下了这些代码,在充分理解学习之后,我想将它保存在这里,并新增添加了注释。方便日后的使用和加深理解并希望能帮到更多的人. public class RemoveRecyclerView extends RecyclerView{ //上一次的触摸点 private int mLastX,mLastY; //当前触摸的item的位置 privat

miracle_fqy的博客 275

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

仿QQ打开“我”界面的滑动效果

仿QQ打开“我”界面的滑动效果 回头一看,很久没有写博客了有没有(就是你懒好不好)。今天正好闲来无事,将最近项目中用到的一个效果的实现给大家分享一下。 这个效果其实就是QQ主界面弹出“我”的滑动效果,类似于一个slideMenu的变种版。第一次看的时候老板觉得这个效果很不错,于是就让我们实现一下了。文章的主体结构就是: 讲述一下本效果的主要功能; 实现的思路; 代码

tc598100922的专栏 896

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android实现横向选择器,安卓开发 简单实现自定义横向滚动选择View : HorizontalselectedView...

一、需求:今日产品经理让在产品里面加了个横向选择的功能,控件样子大致要求为: 网上找了好久没找到此控件,只能自己动手写了,很适合新手练习自定义View,并贡献给大家,效果如下: 其实很多滚轮控件也只是这个简单控件 组合一下就可以了 。有任何问题可以加QQ群询问:661614986。二、实现思路:这里我偷懒了,没有把上、左、右三个箭头写到控件里面,写进去也简单,不过突然感觉在外面布局,写个方法出来也...

weixin_42393261的博客 1470

App 金刚区导航菜单,类似淘宝、QQ 音乐等 APP 导航,方格布局横向滑动翻页带滚动条

TransformersLayout 项目地址:zaaach/TransformersLayout 简介: :fire: App 金刚区导航菜单,类似淘宝、QQ 音乐等 APP 导航,方格布局横向滑动翻页带滚动条 更多:作者提 Bug 标签: :fire: APP 金刚区导航布局,下方带横向滚动条,很多 APP 都有使用这种,效果还不错就封装了一下:smil...

未来很长,但我会努力的走下去。 2408

安卓开发 简单实现自定义横向滚动选择View : HorizontalselectedView

一、需求:今日产品经理让在产品里面加了个横向选择的功能,控件样子大致要求为:网上找了好久没找到此控件,只能自己动手写了,很适合新手练习自定义View,并贡献给大家,效果如下:二、实现思路:这里我偷懒了,没有把上、左、右三个箭头写到控件里面,写进去也简单,不过突然感觉在外面布局,写个方法出来也是蛮帅的。所以今天我们的主角就是中间的可以横向滑动的部分,乍一看就是个recycleview,不过这里我没有想

哦,也好的博客 8448

微信小程序scroll-view滚动视图隐藏横向滚动条

scroll-view滚动视图scroll-view作用滚动条效果如何隐藏滚动条以下是解决方法的技术说明 scroll-view作用 可滚动视图区域。使用竖向滚动时,需要给scroll-view一个固定高度,通过 WXSS 设置 height。组件属性的长度单位默认为px 链接: https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html. 滚动条效果 scroll-view写好之后页面效果如下图,会产生一个滚动条

优快云YXJY的博客 6126
上一篇: android 跳转Facebook和Instagram
下一篇: 2017年7月 bug总结
DreamCarMustang
博客等级 码龄12年 10粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值