Android按键响应的几种方式、安卓页面的跳转、页面跳转传参、页面自动跳转、Activity(页面)的生命周期

按键响应的第一种方式:

  • 在XML文件里面设置按键的onClick绑定函数。就像下面的代码,给Button设置onClick属性,在按键被按下的时候,会调用java文件里面的onClickbtton1这个函数,因为现已将它和这个按钮进行了绑定。利用布局文件中的onClick属性,并在实现文件中实现该方法。注意的是这里的方法名应该和布局文件中onClick属性的方法名相同,该方法必须是public方法。
    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClickbtton1"
        android:text="按键一"
        />
  • 下面是两个通过两个按键来调用绑定的函数的XML代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClickbtton1"
        android:text="按键一"
        />
        <Button
        android:id="@+id/btn2"
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClickbtton1"
        android:text="按键二"
        />
</RelativeLayout>
  • java代码:
package com.fhn.buttonresponse;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	public void onClickbtton1(View v) //这个函数的权限必须是public,否则会找不到这个函数
	{
		int id=v.getId();  //通过getId()来获取当前对象的ID,v表示函数的调用者
						  //按键一按下V就表示按键一,按键二被按下V就表示按键二,通过getId可以获取他们的ID
		switch(id){
		case R.id.btn1:
			System.out.println("按键一被按下");
			System.out.println(id);
			Toast.makeText(this, "按键一",0).show(); //this指代当前类,按键一指示要显示的内容,第三个参数表示要显示的时长0表示默认时长,这个就是在安卓APP上显示的信息
													 //makeText是一个构造方法,它最终会产生一个对象,通过.show来调用对象的方法
			break;
		case R.id.btn2:
			System.out.println("按键二被按下");
			System.out.println(id);
			Toast.makeText(this, "按键二", 0).show();
			break;
		default: break;
		}		
	}
}

按键响应的第二种方式:

关于监听器:监听器是一个存在于View类下的接口,一般以On**Llistener命名,实现该接口需要复写相应的on(View v)方法(如onClick(View v))。Android提供的基于事件监听接口有OnClickListener、OnLongClickListener、OnFocusChangeListener、OnKeyListener、OnTouchListener、OnCreateContextMenuListener等。

  • OnClickListener接口:该接口处理的是点击事件。在触摸模式下,是在某个View上按下并抬起的组合动作,而在键盘模式下,是某个View获得焦点后点击确定键或者按下轨迹球事件。
  • OnLongClickListener接口: OnLongClickListener接口与上述的OnClickListener接口原理基本相同,只是该接口为View长按事件的捕捉接口,即当长时间按下某个View时触发的事件。
  • OnFocusChangeListener接口:OnFocusChangeListener接口用来处理控件焦点发生改变的事件。如果注册了该接口,当某个控件失去焦点或者获得焦点时都会触发该接口中的回调方法。
  • OnKeyListener接口:是对手机键盘进行监听的接口,通过对某个View注册并监听,当View获得焦点并有键盘事件时,便会触发该接口中的回调方法。
  • OnTouchListener接口:是用来处理手机屏幕事件的监听接口,当为View的范围内触摸按下、抬起或滑动等动作时都会触发该事件。
  • OnCreateContextMenuListener接口:是用来处理上下文菜单显示事件的监听接口。该方法是定义和注册上下文菜单的另一种方式。

实现监听的两种方法

方法一:在Activity中定义一个内部类继承监听器接口(这里是OnClickListener)。常见的继承方法如下:

class MyListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();
        }

OnClickListener接口的使用(XML文件只需要为控件设置ID即可,不用绑定函数,需要在java文件中将XML文件中的按键和java代码通过findViewById关联起来):

package com.fhn.buttonresponse;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

首先应该实现接口类,再类中实现onClick方法,实现业务代码。

class Myclick implements View.OnClickListener  //继承View的OnClickListener这个方法
{
	@Override
	public void onClick(View v) {
			int id=v.getId();
			switch(id){
			case R.id.btn1:
				System.out.println("按键一被按下");
				System.out.println(id);
				//Toast.makeText(this, "按键一",0).show(); //this指代当前类,按键一指示要显示的内容,第三个参数表示要显示的时长0表示默认时长
														 //makeText是一个构造方法,它最终会产生一个对象,通过.show来调用对象的方法
				break;
			case R.id.btn2:
				System.out.println("按键二被按下");
				System.out.println(id);
				//Toast.makeText(this, "按键二", 0).show();
				break;
			default: break;
			}		
	}
}
public class MainActivity extends Activity {

	Button btu1;
	Button btu2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		btu1 =(Button)findViewById(R.id.btn1);//将java文件里面的btu1和XML文件里面的btn1相关联
		btu2 =(Button)findViewById(R.id.btn2);//将java文件里面的btu2和XML文件里面的btn2相关联
		btu1.setOnClickListener(new Myclick());
		btu2.setOnClickListener(new Myclick());
	}
}

方法二:实现匿名内部类。这种方法适合只希望对监听器进行一次性使用的情况,在该代码块运行完毕之后,该监听器也就不复存在了。

bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"you have clicked Button1",Toast.LENGTH_SHORT).show();
            }
        });

使用匿名内部类的方式创建监听器:

package com.fhn.buttonresponse;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

	Button btu1;
	Button btu2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		btu1 =(Button)findViewById(R.id.btn1);//将java文件里面的btu1和XML文件里面的btn1相关联
		btu2 =(Button)findViewById(R.id.btn2);//将java文件里面的btu2和XML文件里面的btn2相关联
		btu1.setOnClickListener(new View.OnClickListener(){
			@Override
			public void onClick(View v) {  //new View.OnClickListener(){}相当于new了一个匿名内部类,然后还要实现内部类的接口onClick
				// TODO Auto-generated method stub
				System.out.println("按键一被按下");
				System.out.println(v.getId());
				Toast.makeText(MainActivity.this, "按键一", 0).show();
			}	
		});
		btu2.setOnClickListener(new View.OnClickListener(){
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				System.out.println("按键二被按下");
				System.out.println(v.getId());
				Toast.makeText(MainActivity.this, "按键二", 0).show();
			}});
	}
}

按键响应第三种方式(为整个Activity设置监听器):

package com.fhn.buttonresponse;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements View.OnClickListener { //MainActivity继承View.OnClickListener
																	//这个接口,说明这个页面具有监听按键的功能

	Button btu1;
	Button btu2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		btu1 =(Button)findViewById(R.id.btn1);//将java文件里面的btu1和XML文件里面的btn1相关联
		btu2 =(Button)findViewById(R.id.btn2);//将java文件里面的btu2和XML文件里面的btn2相关联
		
		btu1.setOnClickListener(this); //将MainActivity这个类有的按键监听到功能设置给btu1
		btu2.setOnClickListener(this);//将MainActivity这个类有的按键监听到功能设置给btu2
	}
	@Override
	public void onClick(View v) { //按键被按下后执行这个函数
		int id=v.getId();
		switch(id){
		case R.id.btn1:
			System.out.println("按键一被按下");
			System.out.println(id);
			Toast.makeText(this, "按键一",0).show(); //this指代当前类,按键一指示要显示的内容,第三个参数表示要显示的时长0表示默认时长
													 //makeText是一个构造方法,它最终会产生一个对象,通过.show来调用对象的方法
			break;
		case R.id.btn2:
			System.out.println("按键二被按下");
			System.out.println(id);
			Toast.makeText(this, "按键二", 0).show();
			break;
		default: break;
		}				
	}
}

安卓页面的跳转:

  • 为安卓添加一个新的界面,新建完成后可以看到Manifest.xml下面会新注册一个界面。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

页面跳转(可以通过绑定函数加Intent实现):

就是在绑定函数里面添加Intent,新建Intent对象然后设置上下文(当前界面)和将要跳转界面的类。然后使用startActivity方法实现跳转。

  • 第一个界面的JAVA代码:
package com.fhn.jump;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void goSecond(View v) {
      //intent去声明要跳转的界面
      Intent intent=new Intent(this,SecondMainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
																 //第二个参数就是目标页面的类
     
      startActivity(intent); //用startActivity去跳转页面
	}
}
  • 第二个文件的JAVA代码:
package com.fhn.jump;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
public class SecondMainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second_main);
	}
	public void gothird(View v){
	      Intent intent=new Intent(this,ThirdMainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
			 //第二个参数就是目标页面的类
	      	//用startActivity去跳转页面
	      startActivity(intent);
	}
}
  • 第三个界面的JAVA代码:
package com.fhn.jump;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;

public class ThirdMainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_third_main);
	}
	public void gofirst(View v){
	      Intent intent=new Intent(this,MainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
			 //第二个参数就是目标页面的类
	      	//用startActivity去跳转页面
	      startActivity(intent);	
	}
}

以整个Activity监听的方式实现界面跳转(以下代码能够实现由界面1到2,2到3,3到1):

  • 第一个界面代码:
package com.fhn.jump;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements View.OnClickListener{
	Button btu1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btu1=(Button)findViewById(R.id.btn1);
        btu1.setOnClickListener(this);
    }
	@Override
	public void onClick(View arg0) {
		Intent intent=new Intent(this,SecondMainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
		 //第二个参数就是目标页面的类
     	//用startActivity去跳转页面
		startActivity(intent);
	}
}
  • 第二个界面代码:
package com.fhn.jump;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class SecondMainActivity extends Activity implements View.OnClickListener {
	Button btu1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second_main);
		btu1=(Button)findViewById(R.id.btn2);
		btu1.setOnClickListener(this);
	}
	public void onClick(View arg0) {
		Intent intent=new Intent(this,ThirdMainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
		 //第二个参数就是目标页面的类
     	//用startActivity去跳转页面
		startActivity(intent);
	}
}
  • 第三个界面代码:
package com.fhn.jump;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class ThirdMainActivity extends Activity  implements View.OnClickListener {
	Button btu;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_third_main);
		btu=(Button)findViewById(R.id.btn3);
		btu.setOnClickListener(this);
	}
	public void onClick(View arg0) {
		Intent intent=new Intent(this,MainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
		 //第二个参数就是目标页面的类
     	//用startActivity去跳转页面
		startActivity(intent);
	}
}

页面跳转如何传参(整型或者字符串——putExtra):

第一个界面向第二个界面传参(整数1),第二个界面向第三个界面传参(字符串sting),第三个界面向第一个界面传参(字符串string2)

  • MainActivity的代码(第一个界面):
package com.fhn.jump;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends Activity {

	Button btu1;
	private String data2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
		Intent i=this.getIntent();//获取当前界面的Intent
		data2=i.getStringExtra("Mydata");
		Toast.makeText(this,data2, Toast.LENGTH_LONG).show();
    }
    public void goSecond(View v) {
      //intent去声明要跳转的界面
      Intent intent=new Intent(this,SecondMainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
																 //第二个参数就是目标页面的类
      intent.putExtra("Mydata", 1);//putExtra参数是键值对的方式,这里就表示Mydata=1
      startActivity(intent);       //用startActivity去跳转页面
	}
}
  • SecondActivity文件代码:
package com.fhn.jump;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class SecondMainActivity extends Activity {
	private int data1;
	private String data2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second_main);
		Intent i=this.getIntent();//获取当前界面的Intent
//		data2=i.getStringExtra("Mydata");
//		Toast.makeText(this,data2, Toast.LENGTH_LONG).show();
		data1 =i.getIntExtra("Mydata",0);
		System.out.println(data1);
		Toast.makeText(this,String.valueOf(data1), Toast.LENGTH_LONG).show();
		
	}
	public void gothird(View v){
	      Intent intent=new Intent(this,ThirdMainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
			 //第二个参数就是目标页面的类
	      intent.putExtra("Mydata","string");//putExtra参数是键值对的方式,这里就表示Mydata=1
	      	//用startActivity去跳转页面
	      startActivity(intent);
	}
}
  • ThirdActivity文件代码:
package com.fhn.jump;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
public class ThirdMainActivity extends Activity {
	private String data2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_third_main);
		
		Intent i=this.getIntent();//获取当前界面的Intent
		data2=i.getStringExtra("Mydata");
		Toast.makeText(this,data2, Toast.LENGTH_LONG).show();
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.third_main, menu);
		return true;
	}
	public void gofirst(View v){
	      Intent intent=new Intent(this,MainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
			 //第二个参数就是目标页面的类
	      intent.putExtra("Mydata","string2");//putExtra参数是键值对的方式,这里就表示Mydata=1
	      	//用startActivity去跳转页面
	      startActivity(intent);	
	}
}

使用Bundle的方式实现界面的数据传输:

  • MainActivity文件代码:
package com.fhn.jump;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

	Button btu1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
    public void goSecond(View v) {
      //intent去声明要跳转的界面
      Intent intent=new Intent(this,SecondMainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
																 //第二个参数就是目标页面的类
      Bundle bundle1=new Bundle();//新建一个bundle对象
      bundle1.putChar("char", 'a'); //传一个字符
      bundle1.putString("string", "string");//传字符串
      intent.putExtras(bundle1);//将bundle1进行传输
      startActivity(intent);//用startActivity去跳转页面
	}
}
  • SecondActivity文件代码:
package com.fhn.jump;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class SecondMainActivity extends Activity {

	char a;
	String d;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second_main);
		
		Intent i=this.getIntent(); //获取当前界面的Intent
		
		Bundle b=i.getExtras();  //新建Bundle对象,来获取大量数据
		a=b.getChar("char");      //获得字符
		d=b.getString("string");  //获得字符串
		Toast.makeText(this,Character.toString(a),0).show();
		Toast.makeText(this,d,0).show();
	}

	public void gothird(View v){
	      Intent intent=new Intent(this,ThirdMainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
			 //第二个参数就是目标页面的类
	      	//用startActivity去跳转页面
	      startActivity(intent);
	}
}

安卓界面实现自动跳转:

当使用Thread.sleep();这个线程延时函数的时候,会出现第一个界面无法显示的问题,因为在一个APP启动的时候会有一个主要的UI线程,而这个sleep实在当前的UI线程去做了阻塞的,UI显示会不断的刷新屏幕界面,而这时候sleep就是在刷新屏幕界面的时候阻塞,所以会造成界面出不来(无法看到界面的任何字符)。既然要实现界面的自动跳转就一定要用到sleep但是不能在当前线程,要在一个新的线程里面去sleep,启动另外一个线程,在新的线程里面sleep后显示一个新的界面。

使用java开辟线程:

Thread t=new Thread();   //实例化了一个线程,但是没有启动线程
t.start();               //这时候才启动了线程

但是这样并不知道你要在新的线程里面干什么,所以要要实例化的时候,添加参数:
        Thread t=new Thread(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				
			}
		});
Runnable是一个接口,你需要重写里面的run方法(run方法里面就是写的你真正要干的工作)
  • 实现运行APP3S后从第一界面跳转到第二界面
package com.fhn.jump;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
		Thread t = new Thread(new Runnable() {
		@Override
		public void run() {
			try {
				Thread.sleep(3000);  //3000毫秒
			} catch (InterruptedException e) { // 这里有一个异常处理
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			// intent去声明要跳转的界面
			Intent intent = new Intent(MainActivity.this, SecondMainActivity.class);// 这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
																		// 第二个参数就是目标页面的类
			startActivity(intent);// 用startActivity去跳转页面
		}
	});
	t.start();  //启动线程去执行run里面的内容
    }
    public void goSecond(View v) {
      //intent去声明要跳转的界面
      Intent intent=new Intent(this,SecondMainActivity.class);//这个构造方法,第一个参数就是上下文(当前页面)的意思,这里this就是指代MainActivity
																 //第二个参数就是目标页面的类
     
      startActivity(intent); //用startActivity去跳转页面
	}
}

Activity的生命周期:

相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程。
在这里插入图片描述

  • 启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
  • 当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
  • 当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
  • 当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
  • 用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
  • 当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
  • 用户退出当前Activity,系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值