什么是视图...视图?它是如何工作的?
What is View...views? How does it work?
我正在从以下文章学习过渡:Transitions - ADP。
他实现了方法 toggleVisibility() 如下:
public void onClick(View v) {
TransitionManager.beginDelayedTransition(mRootView, new Fade());
toggleVisibility(mRedBox, mGreenBox, mBlueBox, mBlackBox);
}
private static void toggleVisibility(View... views) {
for (View view : views) {
boolean isVisible = view.getVisibility() == View.VISIBLE;
view.setVisibility(isVisible ? View.INVISIBLE : View.VISIBLE);
}
从上面我了解到 View... views
代表方法中的所有 view
参数。但是,我以前从未见过这个 ...
运算符。它是什么?这个怎么运作?我用谷歌搜索坚果找不到任何答案。谁能帮帮我?
View...views 是可变参数。这意味着您可以将任意数量的视图传递给它,用逗号分隔,就好像它们是单独的参数一样。然后该函数可以将该参数视图视为一个集合,其中包含在其中传递的所有参数。
...
被称为可变参数。它允许您将任意数量的视图(0 个或更多)传递给该方法。
您可以调用它,例如:
toggleVisibility(); // no views
toggleVisibility(view1); // one view
toggleVisibility(view1,view2); // two views
...
相当于传递一个View[]
数组给方法
当您编写方法调用时,编译器会将传递给该方法调用的参数与具有相同名称的所有方法的参数列表进行匹配,以便找到最适合调用的方法。 View
的零个或多个实例(所有这些实例都必须是方法调用中的最后一个参数)可以与方法定义中的单个 View...
参数(必须是最后一个参数)匹配。在方法内部,您可以将 View...
变量视为 View[]
类型的变量(即数组)。
在确定最适合调用的重载方法时,可变参数的优先级最低。因此,如果您重载 toggleVisibility()
,它将编译,并且调用不带任何参数的 toggleVisibility()
将调用没有参数的方法。同样,您可以声明 toggleVisibility(View v)
优先于 varargs 版本,但 varargs 的要点是让您无需定义多个具有相同名称和相同类型参数的方法,只是数量不同相同类型的参数。
这是 varagas,它允许您将零个或多个参数传递给函数。它允许您避免使用函数的重载版本或使用数组输入(一种常见的解决方法)
varagas 有 2 条规则,varagas 也称为可变参数
1- 每个函数只允许一个可变参数
2- 变量参数应该是最后一个参数
void doSomething1(String... values, int x){}
给出编译时错误
void doSomething2(String... values, int... vals)
给出编译时错误
欲了解更多信息,请查看Varagas Docs
我正在从以下文章学习过渡:Transitions - ADP。
他实现了方法 toggleVisibility() 如下:
public void onClick(View v) {
TransitionManager.beginDelayedTransition(mRootView, new Fade());
toggleVisibility(mRedBox, mGreenBox, mBlueBox, mBlackBox);
}
private static void toggleVisibility(View... views) {
for (View view : views) {
boolean isVisible = view.getVisibility() == View.VISIBLE;
view.setVisibility(isVisible ? View.INVISIBLE : View.VISIBLE);
}
从上面我了解到 View... views
代表方法中的所有 view
参数。但是,我以前从未见过这个 ...
运算符。它是什么?这个怎么运作?我用谷歌搜索坚果找不到任何答案。谁能帮帮我?
View...views 是可变参数。这意味着您可以将任意数量的视图传递给它,用逗号分隔,就好像它们是单独的参数一样。然后该函数可以将该参数视图视为一个集合,其中包含在其中传递的所有参数。
...
被称为可变参数。它允许您将任意数量的视图(0 个或更多)传递给该方法。
您可以调用它,例如:
toggleVisibility(); // no views
toggleVisibility(view1); // one view
toggleVisibility(view1,view2); // two views
...
相当于传递一个View[]
数组给方法
当您编写方法调用时,编译器会将传递给该方法调用的参数与具有相同名称的所有方法的参数列表进行匹配,以便找到最适合调用的方法。 View
的零个或多个实例(所有这些实例都必须是方法调用中的最后一个参数)可以与方法定义中的单个 View...
参数(必须是最后一个参数)匹配。在方法内部,您可以将 View...
变量视为 View[]
类型的变量(即数组)。
在确定最适合调用的重载方法时,可变参数的优先级最低。因此,如果您重载 toggleVisibility()
,它将编译,并且调用不带任何参数的 toggleVisibility()
将调用没有参数的方法。同样,您可以声明 toggleVisibility(View v)
优先于 varargs 版本,但 varargs 的要点是让您无需定义多个具有相同名称和相同类型参数的方法,只是数量不同相同类型的参数。
这是 varagas,它允许您将零个或多个参数传递给函数。它允许您避免使用函数的重载版本或使用数组输入(一种常见的解决方法) varagas 有 2 条规则,varagas 也称为可变参数
1- 每个函数只允许一个可变参数
2- 变量参数应该是最后一个参数
void doSomething1(String... values, int x){}
给出编译时错误
void doSomething2(String... values, int... vals)
给出编译时错误
欲了解更多信息,请查看Varagas Docs