[JAVA] Ich werde den Unterschied zwischen der Entwicklung von Android-Anwendungen und der Entwicklung von iOS-Anwendungen aus der Sicht von iOS-Ingenieuren erläutern

Überblick

Nachdem ein Ingenieur mit 5 Jahren Erfahrung in der iOS-Entwicklung verzweifelt gearbeitet und etwa ein halbes Jahr lang der Android-Entwicklung zugewiesen worden war Ich wollte meine Eindrücke geben.

Unterschiede im Entwicklungsstil zwischen Android und iOS

Ein Punkt, auf den iOS-Ingenieure bei der Android-Entwicklung gestoßen sind

--UI Design Design und Umgang mit UIKit

Wenn dieser Punkt unterdrückt wird, können wir die ersten drei Monate meiner Meinung nach auch in großem Maßstab überwinden (optimistisch). Die Ressourcendatei enthält auch Farbänderungen gegenüber dem Quellcode.

Ich denke, es wird ein bisschen einfacher, wenn Sie die oben genannten 5 Punkte überwinden. Die nächste große Mauer oder der kleine Unterschied ist

Ich dachte, es geht darum. Nachdem ich mich daran gewöhnt habe, kann ich jetzt Android als iOS-Ingenieur mit Zuversicht entwickeln.

Schauen wir uns jeden an.

Wie man UI-Design entwirft und wie man mit UIKit umgeht

iOS Android
UILabel TextView
UIButton Button / ImageButton / etc
UIImageView ImageView
UIView View
UITextView TextView
UISwitch Switch
UIWebView WebView
UITableView ListView
UICollectionView RecyclerView
UIScrollView(Vertikale Schriftrolle) ScrollView
UIScrollView(Horizontale Schriftrolle) ViewPager

Ist es so etwas? Ist es nicht gut, diese Punkte festzuhalten?

Berücksichtigen Sie beim iOS-Design jedoch das aus dem Code generierte Entwurfsmuster und die Komposition mit Storyboard und xib usw. Es gibt verschiedene Muster. Andererseits kann ich mir bei Android nur Muster zum Bearbeiten von XML-Dateien vorstellen.

Sie sollten sich also keine Gedanken über das Designmuster Ihres Designs machen müssen. Wenn ein Android-Ingenieur dagegen iOS berührt, gibt es eine große Hürde namens Autolayout. Daher denke ich, dass iOS-> Android wenig Entwicklungswiderstand hat, aber Android-> iOS Ich denke, es ist ziemlich schwierig.

Da Android Kotlin / Java ist, war es ein großer Vorteil, dass es keine Kosten gab, auf Zeiger zu achten. Wenn der Zeiger an der Anwendungsentwicklung beteiligt ist, erhöht sich die Frustrationsrate (Erfahrungsgeschichte).

Handhabung von optional

Ich habe die Sprache in der Reihenfolge Ojbc → Swift → Java → Kotlin gelernt. Schließlich war der Umgang mit Java Optional sehr schwierig.

Wenn Sie Java schreiben, nachdem Sie sich an Swifts Optional gewöhnt haben, wird es auf einmal zu "Optional Mendokusei". So erstaunlich ist Swift's Optional.

Sobald Sie sich an das Schreiben von Optional gewöhnt haben, ist dies normal.

Ressourcendatei

Das Ressourcenmanagement für iOS ist für jede App unterschiedlich, aber Android hat eine Richtlinie, um dies zu tun. Ich musste mir keine Sorgen machen, weil es entschieden wurde. Es gibt jedoch verschiedene Möglichkeiten, auf Farb- und Bilddateien aus Ressourcen zu verweisen Es gab einen Fehler, bei dem ich je nach Design vergessen habe, wie man schreibt. Es ist schon schwer.

Eine Zusammenfassung der Android-Entwicklung, RGB, Hexadezimalzahlen und Farbimplementierung aus Ressourcendateien

Android-Entwicklung, Helligkeitsanpassung von RGB-Farbe auf HSV

Der Nachteil von Android besteht jedoch darin, dass abgerundete Ecken, Schlagschatten, Rahmen und Abstufungen implementiert werden. Es ist sehr schwierig, die XML-Datei zu verwalten, da die XML-Datei einzeln erstellt und festgelegt werden muss. Im Gegenteil, iOS war ziemlich gut.

Wenn möglich, möchte ich, dass Sie es mit ein paar Codezeilen wie iOS schnell implementieren können. Ich bedauere es oft, unter iOS Anfragen nach Rahmen, abgerundeten Ecken und Schlagschatten erhalten zu haben. Wenn Sie eine XML-Datei erstellen, würde die Datei dann keinen Speicherplatz beanspruchen?

Ganz zu schweigen von der Animation, iOS ist besser und ich habe den Eindruck, dass Android sich nicht zu sehr engagieren möchte. Um "MotionLayout" zu neuerem Android hinzuzufügen und zu implementieren, muss eine XML-Datei vorbereitet werden. Ich möchte, dass Sie so etwas nur mit Code implementieren können.

MotionLayout (Android Developer)

Unterschied zwischen Aktivität und Fragment und ordnungsgemäßer Verwendung

Ich bin seit Android Studio 1.0 nach und nach an der Android-Entwicklung beteiligt Ich habe das Konzept von "Aktivität" verstanden, aber es war schwierig, "Fragment" zu verstehen. (Anfangs schienen andere Android-Ingenieure die gleiche Meinung zu haben)

Dies ist jedoch leicht zu verstehen und wenn Sie es einem iOS-Techniker mitteilen möchten Es ist wie eine UIView-Xib-Datei. (Aktivität ist eine Klasse, die UIViewController entspricht.)

Sobald Sie das wissen, ist die spätere Entwurfsrichtlinie fast dieselbe. Es scheint gelehrt zu werden, dass "View einen Lebenszyklus hinzugefügt hat", Es ist dasselbe wie nach dem Verbinden von "Xib" und "UIView".

Es war schwer, dorthin zu gelangen.

Umgang mit Layoutdateien

Zum Beispiel,

Android Layout File = iOS AutoLayout

Es ist ähnlich wie. Ich dachte, es wäre leicht zu vermitteln, wenn ich das sagen würde.

Für Android ändert sich die Entwurfsrichtlinie abhängig davon, welches Layout zum Platzieren von Teilen verwendet wird. Wenn Sie Layout jedoch falsch verwenden, wird die XML-Datei durcheinander gebracht (Erfahrungsgeschichte). Wenn Sie es als LinearLayout (Vertical) betrachten, interpretiert der iOS-Ingenieur es als" Ah, die vertikale Einschränkung des Teils ".

Das führt zu Missverständnissen.

Die Denkweise war also ganz anders als bei iOS Das Platzieren von Layouts in XML war eine entmutigende Aufgabe.

Darüber hinaus ist kein automatisches Layout erforderlich, sodass Android einfacher zu entwerfen ist. Es macht auch einen guten Spielraum nach der Drehung.



Am Ende

Ich habe versucht, die Eindrücke der Entwicklung von Android für etwa ein halbes Jahr so zusammenzufassen. Über diesen Teil hinaus denke ich, dass iOS-Ingenieure in der Lage sein werden, Android abzudecken. (Ah, es gab einen weiteren Kontrast zwischen Closure und Lambda.)

Ich würde gerne Android-Entwicklung als iOS-Ingenieur machen, aber ich habe Angst. Wenn Sie nachdenken, sollten Sie in der Lage sein, die zu überwindende Wand in diesem Artikel zu sehen. Wenn Sie sich darauf konzentrieren, können Sie Android relativ schnell verwenden.

Recommended Posts

Ich werde den Unterschied zwischen der Entwicklung von Android-Anwendungen und der Entwicklung von iOS-Anwendungen aus der Sicht von iOS-Ingenieuren erläutern
[iOS] Verstehe den Unterschied zwischen Frame und Grenzen
Unterschied zwischen i ++ und ++ i
[Ruby] Ich habe über den Unterschied zwischen each_with_index und each.with_index nachgedacht
[Rails] Ich habe den Unterschied zwischen Ressourcen und Ressourcen untersucht
Ich habe die Listenansicht der Android-Entwicklung gemeinsam gesehen
Was ist der Unterschied zwischen den Verantwortlichkeiten der Domänenschicht und der Anwendungsschicht in der Zwiebelarchitektur [DDD]?
[Docker-compose] Unterschied zwischen env_file und Umgebung. Informationen zur Priorität der Anwendung von Umgebungsvariablen
Eine Anwendung, die den Wert des Beschleunigungssensors durch UDP-Kommunikation zwischen C # und Android erfasst
Ich werde die Verschachtelung von Aussagen erklären, die Anfänger töten
Was ist der Unterschied zwischen einem Webserver und einem Anwendungsserver?
Lassen Sie uns die Java 8-Grammatik aus der Sicht der iOS-Ingenieure zusammenfassen
Über die Grundlagen der Android-Entwicklung
[Android] Unterschied zwischen finish () und return;
[Rails] Unterschied im Verhalten zwischen Delegat und has_many-through bei Eins-zu-Eins-zu-Viele
Ich habe versucht, die wichtigsten Punkte des gRPC-Designs und der Entwicklung zusammenzufassen
[Rails] Ich werde die Prozedur zum Implementieren der Follow-Funktion mit form_with erklären.
Vergleich von null-toleranten, null-toleranten und null-toleranten sicheren Typen aus der Perspektive der Null-Sicherheit
[Rails] Ich habe den Unterschied zwischen neuer Methode, Speichermethode, Erstellungsmethode und Erstellungsmethode untersucht.
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
Lernrichtlinien für die Android-Entwicklung für iOS-Ingenieure
Unterschied zwischen isEmpty und isBlank von StringUtils
Gründlicher Vergleich von Android- und iOS-Implementierungen
Über den Unterschied zwischen irb und pry
Finden Sie den Unterschied von einem Vielfachen von 10
Lassen Sie uns den Unterschied zwischen Interpreter und Compiler anhand des Ben-Diagramms erklären
[Java] Verstehe den Unterschied zwischen List und Set
[Rails / Active Record] Über den Unterschied zwischen create und create!
Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!
Ich habe die Eigenschaften von Java und .NET verglichen
Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Unterschied zwischen Mitglied und Sammlung von Schienen route.rb
[Android-Entwicklung] Holen Sie sich mit Java Bilder vom Server und legen Sie sie in ImageView fest! !!
Gibt es Ende 2017 einen Leistungsunterschied zwischen Oracle JDK und OpenJDK?
Verstehe in 3 Minuten! Eine sehr grobe Erklärung des Unterschieds zwischen Sitzung und Cookie
Für Sie, die von nun an der Leiter des Entwicklungsteams werden - Mindeststandardisierung -