Post on 16-Apr-2017
What’s New in Android
Google I/O 2016
Elif BoncukSoftware Specialist
#gdgistanbul
Android Studio 2.2 Preview
Speed
Smarts
Android platform support
#gdgistanbul
Android Studio 2.2 PreviewDesign
Layout EditorConstraint LayoutLayout Inspector
BuildJack Compiler ImprovementsMerged Manifest Viewer
DevelopFirebase PluginEnhanced Code AnalysisSamples BrowserImproved C++ SupportIntelliJ 2016.1
TestEspresso Test RecorderAPK Analyzer
#gdgistanbul
ConstraintLayoutUnbundled Layout
Small - 100 kb
Compatible since Gingerbread(2.3) (%99.9 percent of devices)
First Layout in conjunction with tool (Android Studio)
#gdgistanbul
ConstraintLayout - Why not Relative Layout?ConstraintLayout is a superset
More expressive
Less nesting
Extensible
#gdgistanbul
ConstraintLayout - UI Builder2 way editing(UI/XML)
Direct Integration in Studio
Immediate feedback
In Active Development
Material Design Guideline
Autoconnect
Clear all constraints
Infer constraints
Faster UI Design
#gdgistanbul
ConstraintLayout - Demo
#gdgistanbul
Code Samples Browser
#gdgistanbul
CMake and NDK Build
#gdgistanbul
Improved Jack Tools
#gdgistanbul
Jack Compiler
#gdgistanbul
Merged Manifest Viewer
#gdgistanbul
Espresso Test Recorder
#gdgistanbul
#gdgistanbul
Apk Analyzer
#gdgistanbul
Auto Debugger Selection
#gdgistanbul
#gdgistanbul
Multi Window - Split Screen Drag from recents
Magic of Android Layout
Optimized Automatically
#gdgistanbul
Multi Window - Split Screen
Layout Attributes:android:defaultWidth
android:defaultHeight
android:gravity
android:minimalHeight
android:minimalWidth
Multi-window change notification and querying:Activity.isInMultiWindowMode()
Activity.onMultiWindowModeChanged()
#gdgistanbul
Multi Window - Picture-in-Picture
Multi-window change notification and querying:Activity.isInPictureInPictureMode()
Activity.onPictureInPictureModeChanged()
Activity.enterPictureInPictureMode()
#gdgistanbul
Drag and Dropandroid.view.DropPermissions
View.startDragAndDrop()
View.DRAG_FLAG_GLOBAL
View.DRAG_FLAG_GLOBAL_URI_READ
View.DRAG_FLAG_GLOBAL_URI_WRITE
View.cancelDragAndDrop()
View.updateDragShadow()
Activity.requestDropPermissions()
Now between activities!
#gdgistanbul
RuntimeFaster interpreter
JITFaster install times
Less space consume on device
Apps use partial AOT (ahead-of-time)Only for hotspots
#gdgistanbul
New Runtime LibrariesICU4J
Unicode and globalization support
Subset exposed in android.icu
Avoids conflicts with com.ibm.icu
Deprecated and unstable APIs omitted
Functional Interface
java.util.function
java.util.stream
#gdgistanbul
Java 8 Language Features
Default and static interface methods
Lambda expressions (also available on API level 23 and lower)
Repeatable annotations
Method References (also available on API level 23 and lower)
#gdgistanbul
LambdasImplemented using anonymous class
Backward compatible with Gingerbread
Dipnot: RXJAVA
#gdgistanbul
Default & Static Interface MethodsNo backward compatible
#gdgistanbul
Repeating AnnotationsNo backward compatible
#gdgistanbul
NotificationsNew templates
Bundled Notifications
Direct Reply
#gdgistanbul
Quick Settings
Users: Choose your favourite tiles!Reorder them, too
Top 5 become your even quicker-quick-settings
#gdgistanbul
Quick Settings
Developers: Create your own tiles!Key classes:
android.service.quicksettings.TileService
onTileAdded(), onTileRemoved(), onStartListening(), onStopListening(), onClick()
getQsTile() -> android.service.quicksettings.Tile
setState(), setLabel(), setIcon(), then, updateTile()
#gdgistanbul
Quick Settings
<service android:name=".feature.PocketQuickSettingsTileService" android:icon="@drawable/ic_bookmark" android:label="@string/unread_articles" android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> <intent-filter> <action android:name="android.service.quicksettings.action.QS_TILE" /> </intent-filter> </service>
#gdgistanbul
Display SizeDefault Font Size “Larges Display Size “Largest”
#gdgistanbul
Multi LocaleUsers can select Multiple Languages
And order them
Also added new languages
#gdgistanbul
Doze
MarshmallowScreen off, on battery, stationary,
Restricts network, services, defer jobs, syncs, alarms
Android NAll of the above, plus
Not stationary
#gdgistanbul
Project Svelte: Background Optimizations
ConnectivityManager.CONNECTIVITY_ACTION Camera.ACTION_NEW_VIDEOCamera.ACTION_NEW_PICTURE
JobSchedulerJobScheduler.Builder.addTriggerContentUri();
Puffffffff
Hello
#gdgistanbul
Data SaverBlocks
background data usage
Warn apps to use less data on foreground
#gdgistanbul
Data Saver
getSystemService(Context.CONNECTIVITY_SERVICE);
isActiveNetworkMetered()
getRestrictBackgroundStatus()
RESTRICT_BACKGROUND_STATUS_DISABLED
RESTRICT_BACKGROUND_STATUS_ENABLED
RESTRICT_BACKGROUND_STATUS_WHITELISTED
#gdgistanbul
Direct BootImproves startup time
Some app functionality after unexpected reboot
#gdgistanbul
Direct Boot
ACTION_USER_UNLOCKED
#gdgistanbul
Scoped Directory Access
#gdgistanbul
Android for WorkWork mode
Work challenge
#gdgistanbul
OpenGL ES 3.2 & Vulkan
GLES 3.1 + Android Extention Pack
Advanced blending equations
Tesselation shaders
Geometry shaders
ASTC (LDR)
Image atomics
Floating point framebuffers
3D Graphics API
Application control of memory allocation.
Asynchronous command generation.
No hidden work.
Multithreaded design, from the ground up.
Mobile-friendly features.
Offline shader compilation.
Optional validation.
http://android-developers.blogspot.com.tr/2016/04/optimize-develop-and-debug-with-vulkan.html
What’s new in Support LibraryHighlights
#gdgistanbul
FragmentsLifecycle improvements
Synchronous Commit via commitNow()
Alternative to commit/executePending
Preferred if not modifying back stack
24.0
#gdgistanbul
NotificationsNew visual style for conversations
NotificationCompat.MessagingStyle
Large format style for multi-party conversations
Compatible with Wear 2.0 devices (since API 18)
#gdgistanbul
Custom TabsMinimum SDK: 15
Alternative to Embedded WebView
Shares state with browser
Customize & receive callbacks
UI customization
Customize colors
Add actions to toolbar, bottom bar
Enter, exit transitions
#gdgistanbul
Vector DrawableIntroduced in Lolipop (API 21)
Used heavily inside Android OS
Improvements continue
Similar to SVG but simplier
#gdgistanbul
Generate Vector AssetsVector Asset Repository
SVG to VectorDrawable
#gdgistanbul
PNG generation by GradleNo Animated Vector Drawable
Limited Features of Vector Drawable
Generated PNG files sits inside APK
#gdgistanbul
Night mode
#gdgistanbul
#gdgistanbul
Referenceshttps://www.youtube.com/watch?v=B08iLAtS3AQ&list=PLWz5rJ2EKKc8jQTUYvIfqA9lMvSGQWtte
https://developer.android.com/preview/features/multi-window.html#running
https://developer.android.com/preview/features/notification-updates.html
https://developer.android.com/training/monitoring-device-state/doze-standby.html
https://developer.android.com/preview/behavior-changes.html
https://developer.android.com/reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION
https://developer.android.com/preview/features/data-saver.html
https://developer.android.com/preview/features/direct-boot.html
https://developer.android.com/preview/j8-jack.html
https://www.youtube.com/watch?v=csaXml4xtN8&index=49&list=PLOU2XLYxmsILe6_eGvDN3GyiodoV3qNSC
http://android-developers.blogspot.com.tr/2016/05/android-studio-22-preview-new-ui.html
https://www.youtube.com/watch?v=w45y_w4skKs&index=15&list=PLOU2XLYxmsILe6_eGvDN3GyiodoV3qNSC
http://android-developers.blogspot.com.tr/2016/02/android-support-library-232.html
Questions?
Thank you!
@elifbon_www.elifboncuk.wordpress.com