API-Level:11
Für Entwickler: Die Android 3.0-Plattform
(HONEYCOMB
) kann heruntergeladen werden
Komponente für das Android SDK. Die herunterladbare Plattform umfasst eine Android-Bibliothek und ein Android-System.
-Image sowie eine Reihe von Emulator-Skins und mehr. Die herunterladbare Plattform umfasst keine externen
Bibliotheken.
Für Entwickler ist die Android 3.0-Plattform als herunterladbare Komponente für das Android SDK. Die herunterladbare Plattform umfasst eine Android-Bibliothek und ein System-Image sowie eine Reihe von Emulator-Skins mehr. Um mit der Entwicklung oder Tests für Android 3.0 zu beginnen, Verwenden Sie den Android SDK Manager, um die Plattform in Ihr SDK herunterzuladen.
API-Übersicht
In den folgenden Abschnitten erhalten Sie einen technischen Überblick über die Neuerungen für Entwickler bei Android 3.0, einschließlich neuer Funktionen und Änderungen an der Framework-API seit der vorherigen Version.
Fragmente
Ein Fragment ist eine neue Framework-Komponente, mit der Sie verschiedene Elemente eines
Aktivität in eigenständige Module umwandeln, die ihre eigene Benutzeroberfläche und ihren eigenen Lebenszyklus definieren. So erstellen Sie ein
Fragments fragmentiert, müssen Sie die Klasse Fragment
erweitern und mehrere Lebenszyklus-
-Rückrufmethoden, ähnlich wie Activity
. Sie können dann mehrere
in einer einzelnen Aktivität fragmentiert,
um eine Benutzeroberfläche mit mehreren Bereichen zu erstellen,
verwaltet der Bereich seinen eigenen Lebenszyklus und seine eigenen Nutzereingaben.
Sie können ein Fragment auch ohne Benutzeroberfläche verwenden und stattdessen das Fragment als Worker verwenden. für die Aktivität, z. B. um den Fortschritt eines Downloads zu verwalten, der nur erfolgt, während ausgeführt wird.
Zusätzlich:
- Fragmente sind eigenständig und können in mehreren Aktivitäten wiederverwendet werden.
- Sie können Fragmente innerhalb der Aktivität hinzufügen, entfernen, ersetzen und animieren.
- Sie können Fragmente zu einem Back Stack hinzufügen, der von der Aktivität verwaltet wird, und dabei den Status wie sie geändert werden, und ermöglichen es den Nutzenden, rückwärts durch die verschiedenen Bundesstaaten
- Durch die Bereitstellung von alternative Layouts verwenden, können Sie Fragmente mischen und anpassen, Bildschirmgröße und -ausrichtung
- Fragmente haben direkten Zugriff auf ihre Containeraktivität und können Elemente zum Aktionsleiste der Aktivität (im Folgenden erörtert)
Zum Verwalten der Fragmente in Ihrer Aktivität müssen Sie die FragmentManager
verwenden. Diese bietet verschiedene APIs für die Interaktion mit Fragmenten, z. B.
da sie Fragmente in der Aktivität finden und aus dem Back Stack entfernen, um ihre
vorherigen Status.
Um eine Transaktion durchzuführen, z. B. ein Fragment hinzuzufügen oder zu entfernen, musst du eine FragmentTransaction
erstellen. Sie können dann Methoden wie add()
, remove()
oder replace()
aufrufen. Nachdem Sie alle
den Änderungen, die Sie für die Transaktion vornehmen möchten, müssen Sie commit()
aufrufen und das System wendet die Fragmenttransaktion auf
der Aktivität.
Weitere Informationen zur Verwendung von Fragmenten finden Sie in der Dokumentation zu Fragmenten. Mehrere Beispiele sind auch in den API Demos anwenden.
Aktionsleiste
Die Aktionsleiste ersetzt die herkömmliche Titelleiste oben im Aktivitätsfenster. Es enthält das Anwendungslogo in der linken Ecke und bietet eine neue Benutzeroberfläche für Elemente im Optionen: Darüber hinaus enthält der Die Aktionsleiste bietet Ihnen folgende Möglichkeiten:
- Fügen Sie Menüpunkte direkt in der Aktionsleiste als „Aktionselemente“ hinzu.
Gib in deiner XML-Deklaration für den Artikel auf der Speisekarte das Attribut
android:showAsAction
mit dem Wert"ifRoom"
an. Wenn genug Platz ist, zeigt das Menü wird direkt in der Aktionsleiste angezeigt. Andernfalls wird das Element Dreipunkt-Menü rechts in der Aktionsleiste. - Eine Aufgabe durch ein Widget (z. B. ein Suchfeld) ersetzen, indem Sie eine
„Aktionsansicht“.
Füge in der XML-Deklaration für den Artikel auf der Speisekarte das Attribut
android:actionViewLayout
hinzu mit einer Layout-Ressource oder dem Attributandroid:actionViewClass
mit dem Klassennamen einer Widget. Außerdem muss das Attributandroid:showAsAction
deklariert werden, damit der Artikel in der Aktionsleiste.) Wenn in der Aktionsleiste nicht genügend Platz ist und das Element in der Dreipunkt-Menü funktioniert, verhält es sich wie ein regulärer Menüpunkt und zeigt das Widget nicht an. - Eine Aktion zum Anwendungslogo hinzufügen und durch ein benutzerdefiniertes Logo ersetzen
Dem Anwendungslogo wird automatisch die
android.R.id.home
-ID zugewiesen. Das System leitet denonOptionsItemSelected()
-Callback deiner Aktivität weiter, wenn du ihn berührst. Antworten Sie einfach in Ihrem Rückruf auf diese ID. -Methode zum Ausführen einer Aktion, z. B. zum Aufrufen der Startseite Ihrer Anwendung Aktivitäten.Um das Symbol durch ein Logo zu ersetzen, geben Sie in der Manifestdatei Ihr Anwendungslogo mit dem
android:logo
und rufen Sie dann in Ihrer AktivitätsetDisplayUseLogoEnabled(true)
auf. - Fügen Sie Navigationspfade hinzu, um durch den Back Stack von Fragmenten rückwärts zu navigieren
- Tabs oder Drop-down-Listen zum Navigieren durch Fragmente hinzufügen
- Aktionsleiste mit Designs und Hintergründen anpassen
Die Aktionsleiste ist Standard für alle Anwendungen, die das neue holografische Design verwenden:
ebenfalls Standard, wenn Sie entweder android:minSdkVersion
oder android:targetSdkVersion
auf "11"
festlegen.
Weitere Informationen finden Sie in der Dokumentation zur Aktionsleiste. Mehrere Beispiele sind auch in der API Demos anwenden.
Systemzwischenablage
Anwendungen können jetzt Daten (über den reinen Text hinaus) in das und aus dem gesamten System kopieren und einfügen Zwischenablage öffnen. Bei diesen Daten kann es sich um Nur-Text, einen URI oder einen Intent handeln.
Indem Sie dem System über einen Contentanbieter Zugriff auf die Daten gewähren, die der Nutzer kopieren soll, können Nutzende komplexe Inhalte (wie ein Bild oder eine Datenstruktur) aus Ihrer Anwendung kopieren und in eine andere Anwendung einfügen, die diese Art von Inhalten unterstützt.
Wenn Sie die Zwischenablage verwenden möchten, rufen Sie das globale ClipboardManager
-Objekt ab.
indem du getSystemService(CLIPBOARD_SERVICE)
anrufst.
Wenn du ein Element in die Zwischenablage kopieren möchtest, musst du ein neues ClipData
-Objekt erstellen, das ein oder mehrere ClipData.Item
enthält
-Objekte, die jeweils eine einzelne Entität beschreiben. So erstellen Sie ein ClipData
-Objekt:
mit nur einer ClipData.Item
enthält, können Sie eine der Hilfsmethoden verwenden:
wie newPlainText()
, newUri()
und newIntent()
. Diese geben jeweils ein ClipData
-Objekt zurück, das mit dem
ClipData.Item
, die Sie angeben.
Übergeben Sie das ClipData
-Objekt in Ihrer Instanz von ClipboardManager
an setPrimaryClip()
, um es der Zwischenablage hinzuzufügen.
Anschließend kannst du eine Datei aus der Zwischenablage lesen (um sie einzufügen), indem du getPrimaryClip()
im ClipboardManager
aufrufst. Die Verarbeitung der empfangenen ClipData
kann
Sie müssen sicher sein, dass Sie
den Datentyp in der Zwischenablage wirklich verarbeiten können,
bevor Sie versuchen, es einzufügen.
Die Zwischenablage enthält nur ein Element der abgeschnittenen Daten (ein ClipData
-
Objekt) gleichzeitig, aber eine ClipData
kann mehrere ClipData.Item
s enthalten.
Weitere Informationen finden Sie in der Kopie und Einfügen. Eine einfache Implementierung von Kopieren und Einfügen ist auch in den API-Demos zu sehen. und eine umfassendere Implementierung im Note Pad-Beispiel.
Drag-and-Drop
Neue APIs vereinfachen Drag-and-drop-Vorgänge in der Benutzeroberfläche Ihrer Anwendung. Ein Drag
Vorgang ist die Übertragung irgendeiner Art von Daten, die in einem ClipData
durchgeführt werden.
von einem Ort zum anderen. Der Start- und Endpunkt für den Drag-Vorgang ist ein View
. Die APIs, die die Drag-and-drop-Vorgänge direkt ausführen, sind
in der Klasse View
.
Ein Drag-and-drop-Vorgang hat einen Lebenszyklus, der durch mehrere Drag-Aktionen definiert ist, wobei jede
definiert durch ein DragEvent
-Objekt wie ACTION_DRAG_STARTED
, ACTION_DRAG_ENTERED
und
ACTION_DROP
. Jede Ansicht, die an einem Drag teilnehmen möchte
auf diese Aktionen warten kann.
Wenn du Inhalte in deiner Aktivität ziehen möchtest, rufe startDrag()
auf
auf einem View
, wobei ein ClipData
-Objekt bereitgestellt wird, das
die zu ziehenden Daten, ein View.DragShadowBuilder
, um den „Schatten“
die Nutzer beim Ziehen unter ihren Fingern sehen, und eine Object
, die geteilt werden kann
Informationen über das Drag-Objekt mit möglichen Ansichten des Objekts
Registrieren Sie die Ansicht, um ein Drag-Objekt in einem View
zu akzeptieren (also das „drop“ erhalten).
mit einem OnDragListener
durch Aufrufen von setOnDragListener()
. Wenn ein Drag-Ereignis in der Ansicht stattfindet,
Das System ruft onDrag()
für OnDragListener
auf, das ein DragEvent
empfängt.
beschreiben, welche Art von Drag-Aktion stattgefunden hat, z. B. ACTION_DRAG_STARTED
, ACTION_DRAG_ENTERED
und
ACTION_DROP
. Während eines Drag-Vorgangs ruft das System wiederholt onDrag()
für die Ansicht unter dem Drag-Vorgang auf, um ein
Stream von Drag-Events. Die Empfängeransicht kann den an onDragEvent()
übermittelten Ereignistyp durch Aufrufen von getAction()
auf der DragEvent
abfragen.
Hinweis:Ein Drag-Event kann zwar ein ClipData
-Objekt enthalten, dies hat jedoch nichts mit der Systemzwischenablage zu tun. Per Drag-and-drop
Daten, die per Drag-and-drop eingefügt werden, nie in die Systemzwischenablage.
Weitere Informationen hierzu finden Sie im Abschnitt Drag-and-drop Dokumentation löschen. Eine Implementierung von Drag-and-drop finden Sie auch in der API-Demos-Anwendung und die Honeycomb-Galerie .
App-Widgets
Android 3.0 unterstützt mehrere neue Widget-Klassen für interaktivere App-Widgets für die Nutzer.
Startbildschirm, einschließlich GridView
, ListView
, StackView
, ViewFlipper
und AdapterViewFlipper
.
Noch wichtiger ist, dass Sie mit dem neuen RemoteViewsService
eine App erstellen können.
Widgets mit Sammlungen mit Widgets wie GridView
, ListView
und StackView
, die auf Remote-Daten basieren,
z. B. von einem Contentanbieter.
Die Klasse AppWidgetProviderInfo
(in XML mit einem <appwidget-provider>
-Element definiert) unterstützt ebenfalls zwei neue Felder: autoAdvanceViewId
und previewImage
. Im Feld autoAdvanceViewId
können Sie die Ansichts-ID der
App-Widget-Unteransicht, die vom Host des App-Widgets automatisch erweitert werden sollte. Die
Das Feld previewImage
gibt eine Vorschau dessen an,
Das App-Widget sieht aus wie und wird dem Nutzer in der Widget-Auswahl angezeigt. Wenn dieses Feld nicht
bereitgestellt wird, wird das Symbol des App-Widgets für die Vorschau verwendet.
Zur Erstellung eines Vorschaubilds für dein App-Widget (muss im Feld previewImage
angegeben werden) enthält der Android-Emulator einen
App namens „Widget-Vorschau“. Um ein Vorschaubild zu erstellen, starten Sie diese Anwendung, wählen Sie das
App-Widget für deine App und lege fest, wie das Vorschaubild angezeigt werden soll. Klicke danach auf "Speichern".
und platziere ihn in den Drawable-Ressourcen deiner App.
Eine Implementierung der neuen App-Widget-Funktionen finden Sie im StackView App Widget und im Wetterlisten-Widget. Anwendungen.
Benachrichtigungen in der Statusleiste
Die Notification
APIs wurden erweitert, um den Status mit mehr Inhalten zu unterstützen
Benachrichtigungen in der Leiste. Mit der neuen Notification.Builder
-Klasse können Sie
Notification
-Objekte erstellen.
Neue Funktionen:
- Unterstützung eines großen Symbols in der Benachrichtigung mithilfe von
setLargeIcon()
. Das ist normalerweise bei sozialen Anwendungen, um das Kontaktfoto der Person zu zeigen, die die Quelle des oder Medien-Apps eine Miniaturansicht des Albums anzeigen. - Unterstützung für benutzerdefinierte Layouts im Statusleisten-Ticker mit
setTicker()
. - Unterstützung von benutzerdefinierten Benachrichtigungslayouts, um Schaltflächen mit
PendingIntent
s für interaktivere Benachrichtigungs-Widgets einzubinden. Beispiel: Benachrichtigung kann die Musikwiedergabe steuern, ohne eine Aktivität zu starten.
Ladeprogramme für Inhalte
Neue Framework-APIs ermöglichen das asynchrone Laden von Daten mithilfe der Klasse Loader
. Sie können es in Kombination mit UI-Komponenten wie Ansichten und
Fragmenten, um Daten dynamisch aus Worker-Threads zu laden. Die abgeleitete CursorLoader
-Klasse wurde speziell dafür entwickelt,
ContentProvider
.
Sie müssen lediglich die Schnittstelle LoaderCallbacks
implementieren, um Rückrufe zu erhalten, wenn ein neues Ladeprogramm angefordert wird oder die Daten
geändert haben, dann rufen Sie initLoader()
auf, um die
Loader für Ihre Aktivität oder Ihr Fragment.
Weitere Informationen finden Sie in der Dokumentation zu Loaders. Weitere Informationen Beispielcode mit loaders im LoaderCursor und LoaderThrottle-Beispiele.
Bluetooth-A2DP und Headset-APIs
Android umfasst jetzt APIs für Anwendungen, um den Status der verbundenen Bluetooth-A2DP- und Geräte mit Headset-Profilen. So können Apps beispielsweise erkennen, wenn ein Bluetooth-Headset zum Musikhören verbunden sind und den Nutzer entsprechend informieren. Anwendungen können auch Broadcasting für anbieterspezifische AT-Befehle und informieren den Nutzer über den Status der Gerät, z. B. wenn der Akku des verbundenen Geräts schwach ist.
Sie können die entsprechende BluetoothProfile
initialisieren, indem Sie getProfileProxy()
mit A2DP
oder HEADSET
aufrufen
und eine BluetoothProfile.ServiceListener
erhalten,
Rückrufe, wenn eine Verbindung zum Bluetooth-Client hergestellt oder getrennt wird
Animationsframework
Mit dem neuen flexiblen Animations-Framework können Sie beliebige Eigenschaften beliebiger Objekte animieren (Ansicht, Drawable, Fragment, Objekt oder irgendetwas anderes). Sie können damit mehrere Aspekte eines Animationen. Beispiele:
- Dauer
- Wiederholungsbetrag und -verhalten
- Art der Zeitinterpolation
- Animationen werden zusammen, nacheinander oder nach bestimmten Verzögerungen abgespielt.
- Verzögerung bei Frame-Aktualisierung
Sie können diese und andere Animationsaspekte für die Ganzzahl-, Gleitkomma- und Hexadezimalwerte eines Objekts definieren
Farbwerte. Das heißt, wenn ein Objekt ein Eigenschaftsfeld für einen dieser Typen hat,
den Wert im Laufe der Zeit ändern, um sich auf eine Animation zu auswirken. Um einen anderen Werttyp zu animieren,
dem System, wie die Werte für den jeweiligen Typ berechnet werden, indem die TypeEvaluator
-Schnittstelle implementiert wird.
Es gibt zwei Animatoren, mit denen Sie die Werte einer Eigenschaft animieren können: ValueAnimator
und ObjectAnimator
. ValueAnimator
berechnet die Animationswerte, erkennt jedoch die spezifischen
Objekt oder Eigenschaft, die als Ergebnis animiert wird. Es führt einfach die Berechnungen durch und Sie müssen
auf Aktualisierungen warten und die Daten mit Ihrer eigenen Logik verarbeiten. ObjectAnimator
ist eine abgeleitete Klasse von ValueAnimator
und
können Sie das Objekt und die Eigenschaft auf Animieren setzen. Darüber hinaus übernimmt das Programm alle Animationsarbeiten.
Sie weisen dem ObjectAnimator
also das zu animierende Objekt zu,
Eigenschaft des Objekts, die sich im Laufe der Zeit ändern soll, und eine Reihe von Werten, die auf die Eigenschaft angewendet werden soll
und starten Sie dann die Animation.
Außerdem ermöglicht die Klasse LayoutTransition
den automatischen Übergang
Animationen für Änderungen, die Sie am Aktivitätslayout vornehmen. Um Übergänge für einen Teil des
erstellen Sie ein LayoutTransition
-Objekt und legen Sie es auf
eine beliebige ViewGroup
durch Aufrufen von setLayoutTransition()
. Dies bewirkt, dass Standardeinstellungen
Animationen, die immer dann ausgeführt werden, wenn Elemente zur Gruppe hinzugefügt oder daraus entfernt werden. Um benutzerdefinierte
Animationen erstellen, setAnimator()
am LayoutTransition
aufrufen und eine benutzerdefinierte Animator
angeben,
z. B. ValueAnimator
oder ObjectAnimator
wie oben beschrieben.
Weitere Informationen finden Sie in der Dokumentation zur Property-Animation. Sie können Sehen Sie sich auch verschiedene Beispiele zur Verwendung der Animations-APIs in der API an. Demos-Anwendung.
Erweitertes UI-Framework
- Multiple-Choice-Auswahl für ListView und GridView
Im neuen
CHOICE_MODE_MULTIPLE_MODAL
-Modus fürsetChoiceMode()
können Nutzer mehrere Elemente auswählen von einemListView
oderGridView
. Verwendung in in Verbindung mit der Aktionsleiste können Nutzer mehrere Elemente auswählen und dann die gewünschte Aktion auswählen. in der Aktionsleiste eine Auswahl treffen. Aktionsmodus).Um die Multiple-Choice-Auswahl zu aktivieren, rufen Sie
setChoiceMode(CHOICE_MODE_MULTIPLE_MODAL)
auf und registrieren Sie einMultiChoiceModeListener
mitsetMultiChoiceModeListener()
.Wenn der Nutzer lange auf ein Element drückt, wechselt die Aktionsleiste zur Multi-Choice-Option Aktionsmodus. Das System benachrichtigt
MultiChoiceModeListener
, wenn Elemente durch Aufrufen vononItemCheckedStateChanged()
ausgewählt werden.Ein Beispiel für eine Multiple-Choice-Auswahl finden Sie in der List15. Java in der API Demos-Beispielanwendung.
- Neue APIs zum Transformieren von Ansichten
Mit den neuen APIs können Sie 2D- und 3D-Transformationen ganz einfach auf Ansichten in Ihren Aktivitäten anwenden Layout. Neue Transformationen werden mit einer Reihe von Objekteigenschaften möglich, die die Sichtbarkeit der Ansicht definieren Layoutposition, Ausrichtung, Transparenz usw.
Neue Methoden zum Festlegen der Ansichtseigenschaften sind:
setAlpha()
,setBottom()
,setLeft()
,setRight()
,setBottom()
,setPivotX()
,setPivotY()
,setRotationX()
,setRotationY()
,setScaleX()
,setScaleY()
,setAlpha()
und andere.Einige Methoden verfügen auch über ein entsprechendes XML-Attribut, das Sie in Ihrem Layout angeben können. -Datei, um eine Standardtransformation anzuwenden. Verfügbare Attribute:
translationX
,translationY
,rotation
,rotationX
,rotationY
,scaleX
,scaleY
,transformPivotX
,transformPivotY
undalpha
.Die Verwendung einiger dieser neuen Ansichtseigenschaften in Kombination mit dem neuen Animations-Framework (siehe können Sie ganz einfach tolle Animationen auf Ihre Ansichten anwenden. Um z. B. eine Ansicht auf seiner Y-Achse geben Sie
ObjectAnimator
mit demView
, der "rotationY", an sowie die Start- und Endwerte:Kotlin
ObjectAnimator.ofFloat(myView, "rotationY", 0f, 360f).apply { duration = 2000 start() }
Java
ObjectAnimator animator = ObjectAnimator.ofFloat(myView, "rotationY", 0, 360); animator.setDuration(2000); animator.start();
- Neue holografische Designs
Die standardmäßigen System-Widgets und das Gesamtdesign wurden neu gestaltet und enthalten eine neue "holographisch" Design der Benutzeroberfläche. Das System wendet das neue Design unter Verwendung des standardmäßigen Stil- und Designsystems.
Jede App, die auf die Android 3.0-Plattform ausgerichtet ist, indem Sie entweder die
android:minSdkVersion
oderandroid:targetSdkVersion
auf"11"
setzen, wird standardmäßig das holografische Design übernommen. Wenn Ihre Anwendung jedoch auch ein eigenes Design anwendet, überschreibt dieses holografischen Designs, es sei denn, Sie aktualisieren Ihre Stile so, dass das holografische Design übernommen wird.Um das holografische Design auf einzelne Aktivitäten anzuwenden oder es in Ihr eigenes Design zu übernehmen Definitionen, verwenden Sie eine von mehreren neuen
Theme.Holo
Themen. Falls Ihre App mit einer älteren Android-Version als 3.0 kompatibel ist und benutzerdefinierten Designs, sollten Sie ein Design basierend auf der Plattform auswählen, . - Neue Widgets
<ph type="x-smartling-placeholder">
- </ph>
AdapterViewAnimator
Basisklasse für eine
AdapterView
, die beim Wechsel Animationen ausführt zwischen ihren Ansichten.AdapterViewFlipper
Einfaches
ViewAnimator
, das zwischen zwei oder mehr Ansichten animiert, hinzugefügt wurde. Es wird jeweils nur ein Kind angezeigt. Bei Bedarf kann sie automatisch zwischen in regelmäßigen Abständen ein einzelnes untergeordnetes Element an.CalendarView
Nutzer können durch Tippen auf das Datum Daten aus einem Kalender auswählen und scrollen oder ziehen Kalender auf ein gewünschtes Datum zu setzen. Sie können den Zeitraum konfigurieren, der im Widget verfügbar ist.
ListPopupWindow
Verankert sich in einer Hostansicht und zeigt eine Liste mit Auswahlmöglichkeiten an, z. B. für eine Liste mit bei der Eingabe in eine
EditText
-Ansicht.NumberPicker
Der Nutzer kann eine Zahl aus einem vordefinierten Bereich auswählen. Das Widget zeigt eine Eingabe an, und die Nach-oben- und Nach-unten-Taste zum Auswählen einer Zahl. Über das Eingabefeld können Nutzer Scrollen Sie durch die Werte oder tippen Sie erneut, um den aktuellen Wert direkt zu bearbeiten. Außerdem können Sie Positionen in Strings, sodass die entsprechende Zeichenfolge anstelle des Index angezeigt wird .
PopupMenu
Zeigt ein
Menu
in einem modalen Pop-up-Fenster an, das an einer Ansicht verankert ist. Die Pop-up-Fenster unter der Ankeransicht erscheint, wenn Platz vorhanden ist, oder darüber. Wenn der IME (Soft-Phone Tastatur) sichtbar ist, überdeckt das Pop-up den IME erst, wenn der Nutzer das Symbol .SearchView
Stellt ein Suchfeld bereit, das Sie konfigurieren können, um Suchanfragen an eine bestimmte und Suchvorschläge anzeigen (wie beim herkömmlichen Suchdialogfeld). Dieses Dieses Widget ist besonders nützlich, wenn Sie in der Aktionsleiste ein Such-Widget anbieten möchten. Weitere Informationen Siehe Suchoberfläche erstellen.
StackView
Eine Ansicht, in der die untergeordneten Elemente in einem 3D-Stapel angezeigt werden und Nutzer durch Wischen darüber wischen können wie ein Roolodex.
Grafik
- Hardwarebeschleunigte 2D-Grafik
Du kannst jetzt den OpenGL-Renderer für deine App aktivieren, indem du
android:hardwareAccelerated="true"
im<application>
deines Manifestelements festlegst oder für einzelne<activity>
Elemente.Mit diesem Flag können Anwendungen schneller zeichnen. Das führt zu flüssigeren Animationen, flüssigeres Scrollen und eine insgesamt bessere Leistung und Reaktion auf Nutzerinteraktionen.
- Unterstützung für Hardware- und Softwareschichten ansehen
Standardmäßig ist für
View
keine Ebene angegeben. Sie können festlegen, dass der Ansicht entweder durch eine Hardware- oder Softwareebene gestützt werden, die durch die WerteLAYER_TYPE_HARDWARE
undLAYER_TYPE_SOFTWARE
angegeben wird, unter Verwendung vonsetLayerType()
oder dielayerType
.Eine Hardwareschicht hat eine hardwarespezifische Textur (in der Regel Frame Buffer Objects oder FBO auf OpenGL-Hardware) und sorgt dafür, dass die Ansicht mithilfe des Hardware-Renderings von Android gerendert wird. aber nur, wenn die Hardwarebeschleunigung für die Ansichtshierarchie aktiviert ist. Wenn Hardware Beschleunigung deaktiviert ist, verhalten sich Hardwareschichten genau wie Softwareschichten.
Eine Softwareebene wird durch eine Bitmap gestützt und bewirkt, dass die Ansicht mithilfe der Software-Rendering-Pipeline, auch wenn die Hardwarebeschleunigung aktiviert ist. Softwareebenen sollten werden vermieden, wenn der betroffene Ansichtsbaum häufig aktualisiert wird. Bei jeder Aktualisierung muss die Softwareebene, die langsam sein kann.
Weitere Informationen finden Sie in der Dokumentation zu
LAYER_TYPE_HARDWARE
undLAYER_TYPE_SOFTWARE
. - Renderscript: 3D-Grafik-Engine
Renderscript ist ein 3D-Laufzeit-Framework, das sowohl eine API zum Erstellen von 3D-Szenen bietet als auch als spezielle, plattformunabhängige Shader-Sprache, um maximale Leistung zu erzielen. Mit Renderscript Grafiken und Datenverarbeitung beschleunigen. Renderscript ist eine ideale Möglichkeit, leistungsstarke 3D-Effekte für Anwendungen, Hintergrundbilder, Karussells und mehr.
Weitere Informationen finden Sie im Artikel 3D-Rendering und -Berechnung mit Renderscript-Dokumentation.
Medien
- Video im Zeitraffer
Camcorder-APIs unterstützen jetzt die Aufzeichnung von Videos im Zeitraffer.
setCaptureRate()
legt die Rate fest, mit der die Frames erfasst werden sollten. - Texturunterstützung für Bildstreams
Mit dem neuen
SurfaceTexture
kannst du einen Bildstream als OpenGL ES erfassen Textur. Durch einen Anruf beisetPreviewTexture()
für IhrCamera
können Sie dieSurfaceTexture
angeben, auf die die Videowiedergabe oder Vorschau-Frames aus dem Kamera. - HTTP-Livestreaming
Anwendungen können jetzt eine M3U-Playlist-URL an das Media-Framework übergeben, um eine HTTP-Live-Übertragung zu starten. Streaming-Sitzung. Das Media-Framework unterstützt die meisten HTTP-Live-Streaming-Spezifikationen, einschließlich adaptiver Bitrate. Im Dokument Unterstützte Medienformate finden Sie weitere Informationen dazu, erhalten Sie weitere Informationen.
- EXIF-Daten
ExifInterface
enthält neue Felder für Blende, ISO und Belichtung . - Camcorder-Profile
Neue
hasProfile()
-Methode und mehrere Videos Mit Qualitätsprofilen (z. B.QUALITY_1080P
,QUALITY_720P
undQUALITY_CIF
) kannst du deinen Camcorder bestimmen. Qualitätsoptionen. - Übertragung digitaler Medien
Die Plattform unterstützt MTP/PTP (Media/Picture Transfer Protocol) über USB. mit dem Nutzer beliebige Mediendateien ganz einfach zwischen Geräten und auf einen Hostcomputer übertragen können. Entwickler können auf dieser Unterstützung aufbauen und Anwendungen erstellen, mit denen Nutzer umfangreiche Mediendateien, die sie vielleicht auf andere Geräte übertragen oder teilen möchten.
- Digitale Rechteverwaltung
Neues Expandable-Framework für digitale Rechteverwaltung (Digital Rights Management, DRM) zur Überprüfung und Durchsetzung digitaler Rechte. Die Implementierung erfolgt in zwei Architekturebenen:
- Eine DRM-Framework-API, die Anwendungen zugänglich ist und während der gesamten Dauer durch die Dalvik-VM ausgeführt wird Standardanwendungen.
- Ein Manager für native Code-DRM, der die Framework API implementiert und eine Schnittstelle für die digitale Rechteverwaltung bereitstellt Plug-ins für die Rechteverwaltung und -entschlüsselung bei verschiedenen DRM-Schemata.
Für Anwendungsentwickler bietet das Framework eine abstrakte, einheitliche API, die die um geschützte Inhalte zu verwalten. Die API verbirgt die Komplexität von DRM-Vorgängen und ermöglicht einheitlicher Betriebsmodus für geschützte und ungeschützte Inhalte sowie für verschiedene digitale Rechteverwaltungssysteme Schemata.
Der DRM-Schutz für Gerätehersteller, Rechteinhaber und Anbieter digitaler Medien im Internet Framework-Plug-in-API eine Möglichkeit, Unterstützung für ein DRM-Schema Ihrer Wahl in der Android-System zur sicheren Erzwingung des Inhaltsschutzes
Die Vorabversion bietet keine nativen DRM-Plug-ins zur Überprüfung und Durchsetzung digitaler Rechte. Gerätehersteller können jedoch DRM-Plug-ins mit ihren Geräten ausliefern.
Alle DRM-APIs sind im Paket
android.drm
enthalten.
Tastaturunterstützung
- Unterstützung für Steuerung, Meta, Feststelltaste, Num-Taste und Scroll-Taste. Weitere Informationen
Siehe
META_CTRL_ON
und zugehörige Felder. - Unterstützung von vollwertigen Desktop-Tastaturen, einschließlich Unterstützung für Tasten wie Esc, Home, Ende,
Löschen und weitere. Sie können feststellen, ob Schlüsselereignisse von einer vollständigen Tastatur stammen,
getKeyboardType()
wird abgefragt und nachKeyCharacterMap.FULL
gesucht - In
TextView
werden jetzt tastaturbasierte Dateien zum Ausschneiden, Kopieren und mit den Tastenkombination Strg+X, Strg+C, Strg+V und Strg+A. Unterstützt werden auch Bild-auf-/Bild-ab-Taste, Pos1/Ende und Textauswahl über die Tastatur. KeyEvent
fügt mehrere neue Methoden hinzu, um das Prüfen des Schlüssels zu vereinfachen des Modifikators korrekt und einheitlich. SiehehasModifiers(int)
,hasNoModifiers()
,metaStateHasModifiers()
,metaStateHasNoModifiers()
.- Anwendungen können benutzerdefinierte Tastenkombinationen implementieren, indem Sie
Activity
,Dialog
oderView
ableiten undonKeyShortcut()
. Das Framework nennt diese Methode Ein Schlüssel wird mit der Strg-Taste kombiniert. Wenn Sie ein Optionsmenü erstellen, können Sie die Tastatur registrieren Tastenkombinationen aufrufen, indem Sie für jede<item>
entweder das Attributandroid:alphabeticShortcut
oderandroid:numericShortcut
festlegen -Element (oder mitsetShortcut()
) ab. - Android 3.0 enthält eine neue "Bildschirmtastatur" Gerät mit der ID
KeyCharacterMap.VIRTUAL_KEYBOARD
Das virtuelle Tastatur verfügt über eine Tastaturbelegung für die USA, die sich beim Zusammenführen von Schlüsselereignissen für Tests eignet. Eingabe.
Geteilte Touch-Ereignisse
Bisher konnten Touch-Events auf einmal nur in einer einzigen Ansicht angenommen werden. Android 3.0 unterstützt die Aufteilung von Touch-Ereignissen über Ansichten und sogar Fenster hinweg, sodass verschiedene Ansichten gleichzeitige Touch-Ereignisse.
„Geteilte Touch-Gesten“ ist standardmäßig aktiviert, wenn eine App auf die App ausgerichtet ist
Android 3.0 Das heißt, wenn die Anwendung entweder den android:minSdkVersion
oder android:targetSdkVersion
den Wert des Attributs auf "11"
fest.
Mit den folgenden Eigenschaften können Sie jedoch das Teilen von Berührungsereignissen auf Ansichten innerhalb von Ansichten deaktivieren. für bestimmte Datenansichtsgruppen und fensterübergreifend.
- Das Attribut
android:splitMotionEvents
für Datenansichtsgruppen können Sie geteilte Touch-Ereignisse deaktivieren, die zwischen untergeordneten Ansichten in einem Layout auftreten. Beispiel:<LinearLayout android:splitMotionEvents="false" ... > ... </LinearLayout>
Auf diese Weise können untergeordnete Ansichten im linearen Layout keine Touch-Ereignisse aufteilen, sondern nur eine Ansicht. Touch-Ereignisse gleichzeitig empfangen.
- Stileigenschaft
android:windowEnableSplitTouch
ermöglicht es dir, das Teilen von Touch-Events über Fenster hinweg zu deaktivieren, indem du sie auf ein Design für die Aktivität anwendest oder der gesamten Anwendung. Beispiel:<style name="NoSplitMotionEvents" parent="android:Theme.Holo"> <item name="android:windowEnableSplitTouch">false</item> ... </style>
Wenn dieses Design auf ein
<activity>
- oder<application>
-Element angewendet wird, Nur Touch-Events im aktuellen Aktivitätsfenster werden akzeptiert. Wenn Sie beispielsweise die Aufteilung Fensterübergreifende Touch-Ereignisse verwenden, kann die Systemleiste keine Berührungsereignisse gleichzeitig mit der Aktivitäten. Dies hat keinen Einfluss darauf, ob die Sicht innerhalb der Aktivität geteilt werden kann. -Ereignissen: Die Aktivität kann Touch-Events dennoch auf mehrere Ansichten aufteilen.Weitere Informationen zum Erstellen von Designs finden Sie unter Stile und Designs anwenden.
WebKit
- Neue
WebViewFragment
-Klasse zum Erstellen eines Fragments, das aus einemWebView
. - Neue
WebSettings
-Methoden: <ph type="x-smartling-placeholder">- </ph>
- Mit
setDisplayZoomControls()
können Sie Elemente ausblenden die Zoomsteuerung auf dem Bildschirm, während der Nutzer weiterhin mit Fingerbewegungen zoomen kann (setBuiltInZoomControls()
muss fürtrue
. - Mit der neuen
WebSettings
-MethodesetEnableSmoothTransition()
können Sie , um beim Schwenken und Zoomen gleichmäßige Übergänge zu ermöglichen. Wenn diese Option aktiviert ist, wählt WebView eine Lösung aus um die Leistung zu maximieren (z. B. wird der Content der WebView während der Übergang).
- Mit
- Neue
WebView
-Methoden: <ph type="x-smartling-placeholder">- </ph>
onPause()
-Callback zum Pausieren der Verarbeitung die mit dem WebView verknüpft sind, wenn dieses ausgeblendet wird. Dies ist nützlich, um unnötige CPU- oder Netzwerkverkehr, wenn WebView nicht im Vordergrund ausgeführt wird.onResume()
-Callback, um die Verarbeitung fortzusetzen mit dem WebView verknüpft, das imonPause()
pausiert wurde.- Mit
saveWebArchive()
können Sie Folgendes speichern: in der aktuellen Ansicht als Webarchiv auf dem Gerät gespeichert sind. showFindDialog()
initiiert eine Textsuche in zur aktuellen Ansicht wechseln.
Browser
Die Browseranwendung bietet die folgenden Funktionen zur Unterstützung von Webanwendungen:
- Medienaufnahme
Gemäß der Definition in HTML Media Capture ermöglicht der Browser den Zugriff auf Audio-, Bild- und Videoaufnahmen Funktionen des Geräts. Der folgende HTML-Code bietet dem Nutzer beispielsweise eine Eingabe, Foto zum Hochladen aufnehmen:
<input type="file" accept="image/*;capture=camera" />
Durch Ausschließen des
capture=camera
-Parameters hat der Nutzer die Möglichkeit, ein ein neues Bild mit der Kamera erstellen oder ein Bild auf dem Gerät auswählen (z. B. in der Galerie-App). - Geräteausrichtung
Gemäß der Definition im Ereignis für die Geräteausrichtung ermöglicht der Browser, dass Webanwendungen auf DOM-Ereignisse warten, die Informationen liefern, zur physischen Ausrichtung und Bewegung des Geräts.
Die Geräteausrichtung wird durch die x-, y- und z-Achse in Grad ausgedrückt. Die Bewegung ist mit Daten zu Beschleunigung und Rotationsrate ausgedrückt. Eine Webseite kann sich zur Orientierung registrieren durch Aufrufen von
window.addEventListener
mit dem Ereignistyp"deviceorientation"
und sich für Bewegungsereignisse registrieren, indem Sie den Ereignistyp"devicemotion"
registrieren. - CSS-3D-Transformationen
Gemäß Definition in der CSS 3D-Transformation Module-Spezifikation ermöglicht der Browser die Umwandlung von CSS-Elementen in drei Dimensionen.
JSON-Dienstprogramme
Die neuen Kurse „JsonReader
“ und „JsonWriter
“ helfen Ihnen
JSON-Streams lesen und schreiben. Die neuen APIs ergänzen die org.json
-Klassen, die die
ein Dokument im Speicher.
Sie können eine Instanz von JsonReader
erstellen, indem Sie folgenden Befehl aufrufen:
und übergibt den InputStreamReader
, der den JSON-String einspeist.
Beginnen Sie dann mit dem Lesen eines Objekts durch Aufrufen von beginObject()
, lesen Sie
Schlüsselname mit nextName()
, Wert mit Methoden lesen
je nach Typ, wie z. B. nextString()
und nextInt()
, und fahren Sie fort, solange hasNext()
wahr ist.
Sie können eine Instanz von JsonWriter
erstellen, indem Sie deren Konstruktor aufrufen und
und übergibt das entsprechende OutputStreamWriter
. Dann schreiben Sie die JSON-Daten so,
ähnlich wie im Reader, wobei name()
zum Hinzufügen eines Attributnamens verwendet wird
und eine geeignete value()
-Methode, um den entsprechenden
Wert.
Diese Klassen sind standardmäßig strikt. Das setLenient()
in jeder Klasse konfiguriert sie so, dass sie liberaler sind, was sie akzeptieren. Diese Nachsichtige
Der Parser-Modus ist auch mit dem Standardparser des org.json
kompatibel.
Konstanten für neue Funktionen
Die <uses-feature>
Das Manfest-Element sollte verwendet werden, um externe Stellen (wie Google Play) über die Menge
Hardware- und Softwarefunktionen,
von denen Ihre Anwendung abhängig ist. In diesem Release fügt Android
folgenden neuen Konstanten, die Anwendungen mit diesem Element deklarieren können:
"android.hardware.faketouch"
Wenn angegeben, bedeutet dies, dass die App mit einem Gerät kompatibel ist, das ein emulierten Touchscreen (oder besser). Ein Gerät mit emuliertem Touchscreen ermöglicht eine Nutzereingabe ein System, das Touchscreens emuliert, Funktionen. Ein Beispiel für ein solches Eingabesystem ist eine Maus oder Fernbedienung, die ein eingeblendet. Diese Eingabesysteme unterstützen grundlegende Touch-Ereignisse wie "Nach unten klicken", "Nach oben klicken" und "Ziehen". Kompliziertere Eingabetypen wie Gesten, Flings usw. können jedoch schwieriger oder auf fake-Touch-Geräten nicht möglich (und Multi-Touch-Gesten sind definitiv nicht möglich).
Wenn für Ihre App keine komplizierten Gesten erforderlich sind und Sie nicht aus Geräten mit emuliertem Touchscreen filtern, sollte
"android.hardware.faketouch"
mit einem<uses-feature>
deklarieren -Elements. Auf diese Weise ist Ihre App für die meisten Gerätetypen verfügbar, auch solche, die nur eine emulierte Touchscreen-Eingabe ermöglichen.Alle Geräte mit Touchscreen unterstützen auch
"android.hardware.faketouch"
, weil Touchscreen-Funktionen sind eine Obermenge von Fake-Touch-Funktionen. Es sei denn, Sie benötigen Touchscreen haben, sollten Sie einen<uses-feature>
-Element für FakeTouch.
Neue Berechtigungen
"android.permission.BIND_REMOTEVIEWS"
Dies muss im
<service>
-Manifest als erforderliche Berechtigung deklariert werden -Element für die Implementierung vonRemoteViewsService
. Wenn beispielsweise beim Erstellen eines App-Widgets, das mitRemoteViewsService
kann der Manifesteintrag so aussehen:<service android:name=".widget.WidgetService" android:exported="false" android:permission="android.permission.BIND_REMOTEVIEWS" />
Neue Plattformtechnologien
- Speicher
<ph type="x-smartling-placeholder">
- </ph>
- Unterstützung des ext4-Dateisystems zur Aktivierung des Onboarding-eMMC-Speichers.
- FUSE-Dateisystem zur Unterstützung von MTP-Geräten.
- Unterstützung des USB-Hostmodus zur Unterstützung von Tastaturen und USB-Hubs.
- Unterstützung für MTP/PTP
- Linux-Kernel
<ph type="x-smartling-placeholder">
- </ph>
- Upgrade auf Version 2.6.36
- Dalvik-VM
<ph type="x-smartling-placeholder">
- </ph>
- Neuer Code zur Unterstützung und Optimierung für SMP
- Verschiedene Verbesserungen der JIT-Infrastruktur
- Verbesserungen bei der automatischen Speicherbereinigung:
<ph type="x-smartling-placeholder">
- </ph>
- Auf SMP abgestimmt
- Unterstützung größerer Heap-Größen
- Einheitliche Verarbeitung von Bitmaps und Byte-Zwischenspeichern
- Dalvik-Kernbibliotheken
<ph type="x-smartling-placeholder">
- </ph>
- Neue, viel schnellere Implementierung von NIO (moderne E/A-Bibliothek)
- Verbesserte Ausnahmemeldungen
- Korrektheits- und Leistungskorrekturen im gesamten
Bericht zu API-Unterschieden
Eine detaillierte Ansicht aller API-Änderungen in Android 3.0 (API-Level) 11) sehen Sie sich den Bericht zu API-Unterschieden an.
API-Ebene
Die Android 3.0-Plattform liefert eine aktualisierte Version der die Framework-API. Die Android 3.0 API wird eine ganzzahlige ID zugewiesen, 11, also die im System selbst gespeichert sind. Diese Kennung, die „API-Ebene“ genannt wird, ermöglicht um zu ermitteln, ob eine App mit vor der Installation der Anwendung.
Um in Android 3.0 eingeführte APIs in Ihrer App zu verwenden,
müssen Sie die Anwendung anhand der Android-Bibliothek kompilieren, die im
die Android 3.0 SDK-Plattform. Je nach Ihren Anforderungen können Sie
muss auch ein android:minSdkVersion="11"
-Element
<uses-sdk>
-Element im Feld
Manifests. Falls Ihre App nur für Android 2.3 und höher entwickelt wurde,
Durch das Deklarieren des Attributs wird verhindert, dass die Anwendung früher installiert wird.
Versionen der Plattform.
Weitere Informationen finden Sie unter Was ist eine API? Stufe?