[英]OOP in java for Android studio app
我是Java的新手,尽管一般来说他在python和编程方面有大约多年的经验。 尽管自从最近自学Java以来,我还是对面向对象的编程有所了解,但是我不了解一段代码的工作方式/原因。 该代码适用于在android studio中创建的android应用,我试图在其中学习如何使用Google Maps API创建应用。 Java代码是这样的:
package com.example.harry.myapplication;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
据我了解,该代码创建了该类,但是我看不到在哪里生成该类的对象才能运行该代码。 我所有的编程经验都来自python /过程编程。
除了不完全了解此代码的工作方式之外,如果我要调用方法.getUiSettings(),我将在哪个对象上调用它?
您所拥有的是类定义-即属于对象的一组属性和方法,在本例中为MapsActivity
。 当您使用Android设备打开应用程序时,Android操作系统将读取应用程序的AndroidManifest.xml
以确定哪个活动是您应用程序的主要活动。 (如果您在Android Studio中进行了此操作,那么我猜想该活动将自动指定为主要活动,而您不必进行任何更改。)Android操作系统会创建该类的实例,然后调用方法的特定顺序,以警告您的对象某些事情正在发生。
getUiSettings()
是GoogleMap
对象的方法。 在活动的onCreate()
方法中,调用getMapAsync()
。 这将启动一个后台线程,以从Google下载地图信息,而不会阻塞您的主线程。 完全接收到该信息后,将使用准备好的GoogleMap
作为参数调用onMapReady()
。 然后,您可以保存该对象以供以后使用
mMap = googleMap;
如果要访问地图的UI设置,可以在地图对象上调用方法
mMap.getUiSettings();
Android编码很大程度上基于异步性和回调,一开始可能会有些混乱。 我同意@Vucko的观点,也许您应该找到在线课程或更有经验的程序员来学习。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.