[英]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.