根据google developer's guide here,为特定位置的相机设置动画
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(MOUNTAIN_VIEW) // Sets the center of the map to Mountain View
.zoom(17) // Sets the zoom
.bearing(90) // Sets the orientation of the camera to east
.tilt(30) // Sets the tilt of the camera to 30 degrees
.build(); // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
但是,在api reference中,CameraPosition已经将构造函数定义为:
public CameraPosition (LatLng target, float zoom, float tilt, float bearing)
所以,如果我写作:
CameraPosition cameraPosition = new CameraPosition(latLng,9,0,0);
或
CameraPosition cameraPosition = new CameraPosition.Builder().target(latLng).zoom(9).build();
它们是相同还是不同?是否需要使用静态嵌套类CameraPosition.Builder作为参考?
此外,两者都有相同的描述:
构造一个CameraPosition。
public CameraPosition build():
构建一个CameraPosition。
我怀疑单词constructs
和builds
之间是否有任何区别。不幸的是,整个互联网上没有任何关于他们的差异的信息(如果存在)。有人可以帮忙吗?
修改 从评论中,有人指出它使用Builder设计模式。虽然,我不明白为什么在这里使用它?冗余构造函数的需求是什么?任何人都可以帮助我更好地理解吗?
答案 0 :(得分:3)
我想Google之所以这样做的原因是清晰和方便。
以下哪项更具可读性?
CameraPosition cameraPosition = new CameraPosition(latLng, 11.0f, 0, 0);
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(latLng)
.zoom(11.0f)
.build();
您不必查找方法签名以了解要输入的参数。此外,您无需知道默认的倾斜度和轴承值。
答案 1 :(得分:2)
java中术语Constructor
和Builder
之间的差异与Android相机API中CameraPosition constructor
和CameraPosition build()
之间的差异相同。以下是基本的区别:
在Android中为Camera API编写代码时,可以考虑所有这些要点,以获得更好和优化的性能。
有关代码实现,请参阅以下link。