Доклад про то, что нового в Android development tools. Отмечу следующее:
- Android Studio 3.2:
* What’s new window
* App bundle generation
* Dynamic features support
* “Sessions” window in profiler
* Energy profiler
* AndroidX refactoring - перевести всё на новую версию support-библиотек. Ещё появился Jetifier: “converts legacy Maven artefacts to the new AndroidX namespace and caches those for new builds”
* Navigation library и UI для неё - позволяет выстроить всю навигацию одним xml, в том числе умеет добавлять анимации переходам, позволяет удобно прописать deeplinks и даже вроде бы позволяет разрулить передачу аргументов в Activity/Fragment
* Layout Editor - появляются всякие кнопки и меню для быстрого добавления sample data в design-режиме
* Запустили студию на Pixel Chromebook (no ADB yet - “you can upload straight to the Play Store and hope for the best”)
* D8 - new default Dexer & R8 - new default optimizer
* Бонус: показали фичу, которая в разработке (сказали, выйдет наверное даже не в 3.3) и использует следующую версию ConstraintLayout - работа с transition анимациями прямо из UI.
- Emulator:
* Save and replay snapshots
* Better camera to support AR apps
Ну, как-то так.
#studio #emulator #adt
https://youtu.be/WxAZk7A7OkM
- Android Studio 3.2:
* What’s new window
* App bundle generation
* Dynamic features support
* “Sessions” window in profiler
* Energy profiler
* AndroidX refactoring - перевести всё на новую версию support-библиотек. Ещё появился Jetifier: “converts legacy Maven artefacts to the new AndroidX namespace and caches those for new builds”
* Navigation library и UI для неё - позволяет выстроить всю навигацию одним xml, в том числе умеет добавлять анимации переходам, позволяет удобно прописать deeplinks и даже вроде бы позволяет разрулить передачу аргументов в Activity/Fragment
* Layout Editor - появляются всякие кнопки и меню для быстрого добавления sample data в design-режиме
* Запустили студию на Pixel Chromebook (no ADB yet - “you can upload straight to the Play Store and hope for the best”)
* D8 - new default Dexer & R8 - new default optimizer
* Бонус: показали фичу, которая в разработке (сказали, выйдет наверное даже не в 3.3) и использует следующую версию ConstraintLayout - работа с transition анимациями прямо из UI.
- Emulator:
* Save and replay snapshots
* Better camera to support AR apps
Ну, как-то так.
#studio #emulator #adt
https://youtu.be/WxAZk7A7OkM
YouTube
What's new in Android development tools (Google I/O '18)
An overview of all the recent features in Android Studio for Android app developers. The session will include demos and a tour de force presentation of relevant features that will accelerate developers' workflow on the latest Android APIs.
Rate this session…
Rate this session…
Из этого выступления я выпишу не очень много поинтов, но доклад интересный, сходите посмотрите. А поинты там такие:
- Well Aged Advice:
* Prioritise efficiency
* Avoid WakeLocks
* Don’t use undocumented APIs
* Store strings and values as resources
* Avoid transmitting/storing contacts & location
- Android Fundamentals:
* Java language syntax -> Kotlin
* UI logic for background processing -> ViewModels
* Services for background processing -> Work Manager
* Monitor system events with Receivers -> Work Manager
* Content Providers for database access -> Room
Бонус: в Android P не будет вылезать ANR-диалог, апп просто будет падать.
#tips #anr
https://youtu.be/eHjHlujp3Tg
- Well Aged Advice:
* Prioritise efficiency
* Avoid WakeLocks
* Don’t use undocumented APIs
* Store strings and values as resources
* Avoid transmitting/storing contacts & location
- Android Fundamentals:
* Java language syntax -> Kotlin
* UI logic for background processing -> ViewModels
* Services for background processing -> Work Manager
* Monitor system events with Receivers -> Work Manager
* Content Providers for database access -> Room
Бонус: в Android P не будет вылезать ANR-диалог, апп просто будет падать.
#tips #anr
https://youtu.be/eHjHlujp3Tg
YouTube
Protips: A fresh look at advanced topics for Android experts (Google I/O '18)
It's been 10 years since the first Android device launch, and even experienced Android developers are still using tools, APIs, and best-practices from 2008. The return of Android Protips brings you up-to-speed on modern solutions to Android development challenges…
Что-то из нового Android:
- Battery:
* App standby buckets: использование аппа определяет, как и когда он запустить свои jobs
* Background restrictions: если апп ведёт себя непорядочно, можно ему к чёртовой матери всё запретить
- Background input & privacy:
* Микрофон в фоне - нельзя
* Камера в фоне - нельзя
* Разные сенсоры - вроде бы будут возвращать нулевые значения - можно сказать, тоже нельзя
- Background text measurement:
* Измерять текст дорого, а делать это приходится много. Прозвучала цифра: 80%-90% всего measure-layout-draw цикла приходится на измерение текста.
* Поэтому теперь его можно делать в фоне -
- Notifications:
* inline images & stickers
* можно показать картинки участников чата, например
* smart reply UI (а-ля чатбот)
* no more “app is using battery” notification
- Deprecation policy:
* Август 2018 - новые аппы только с targetSdk 26
* Ноябрь 2018 - обновления аппов только с targetSdk 26
* Август 2019 - те, кто используют нативные куски, обязаны давать 64-bit ABI (32-bit опционально)
Это только то, за что зацепился глаз. В докладе ещё больше, но тратить время не советовал бы :)
#androidp #background #notifications
https://youtu.be/eMHsnvhcf78
- Battery:
* App standby buckets: использование аппа определяет, как и когда он запустить свои jobs
* Background restrictions: если апп ведёт себя непорядочно, можно ему к чёртовой матери всё запретить
- Background input & privacy:
* Микрофон в фоне - нельзя
* Камера в фоне - нельзя
* Разные сенсоры - вроде бы будут возвращать нулевые значения - можно сказать, тоже нельзя
- Background text measurement:
* Измерять текст дорого, а делать это приходится много. Прозвучала цифра: 80%-90% всего measure-layout-draw цикла приходится на измерение текста.
* Поэтому теперь его можно делать в фоне -
PrecomputedText.create(…)- Notifications:
* inline images & stickers
* можно показать картинки участников чата, например
* smart reply UI (а-ля чатбот)
* no more “app is using battery” notification
- Deprecation policy:
* Август 2018 - новые аппы только с targetSdk 26
* Ноябрь 2018 - обновления аппов только с targetSdk 26
* Август 2019 - те, кто используют нативные куски, обязаны давать 64-bit ABI (32-bit опционально)
Это только то, за что зацепился глаз. В докладе ещё больше, но тратить время не советовал бы :)
#androidp #background #notifications
https://youtu.be/eMHsnvhcf78
YouTube
What's new in Android (Google I/O '18)
An overview of the latest developer-facing features in the Android platform and other new and exciting developments.
Rate this session by signing-in on the I/O website here → https://goo.gl/oEa9Hr
Watch more videos about Jetpack → https://goo.gl/kw8LPv…
Rate this session by signing-in on the I/O website here → https://goo.gl/oEa9Hr
Watch more videos about Jetpack → https://goo.gl/kw8LPv…
Доклад, в котором по шагам проходится, как работают штуки типа ProGuard и R8, как к ним пишутся keep-правила и что делать, когда после включения
#proguard #r8 #minification
https://youtu.be/x9T5EYE-QWQ
minifyEnabled true всё сломалось. В целом, не советую тратить время, если всё это уже знаешь.#proguard #r8 #minification
https://youtu.be/x9T5EYE-QWQ
YouTube
Effective ProGuard keep rules for smaller applications (Google I/O '18)
ProGuard keep rules are the super power in reducing application size. Correctly specified, they allow tools to remove unneeded code and obfuscate applications. But what exactly do these rules mean? This session provides an answer by deep diving into what…
Нашёл шпаргалку (уверен, не я один постоянно это забываю) про `FontMetrics`. И да, как всегда Android Framework во всей красе - baseline считай сам :)
#cheatsheet #font #text
#cheatsheet #font #text
Статья-инструкция к решению задач на dynamic programming и memoization. Интересно, посмотрите.
#algorithm #dynamicprogramming #memoization
http://blog.refdash.com/dynamic-programming-tutorial-example/
#algorithm #dynamicprogramming #memoization
http://blog.refdash.com/dynamic-programming-tutorial-example/
Пачка хаков при работе с числами на уровне битов (сдвиги, включить-выключить битик и всё такое прочее). Статья классная, жалко только, что расписано всё в отрыве от применения. А ведь запекание состояния компонента (какого-нибудь View, например), которому нужна куча bool-флагов, в одно чиселко в определённых случаях может резко упростить и сократить код.
#hack #bit
http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/
#hack #bit
http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/
catonmat.net
Introduction to Low Level Bit Hacks
I decided to write an article about a thing that is second nature to embedded systems programmers – low level bit hacks. Bit hacks are ingenious little programming tricks that manipulate integers in a smart and efficient manner. Instead of performing operations…
Так, а если кто-то тут по битовым операциям хочет угореть, то @kenrube прислал ссылку на ещё более обширный сборник.
#hack #bit
http://graphics.stanford.edu/~seander/bithacks.html
#hack #bit
http://graphics.stanford.edu/~seander/bithacks.html
Статья про разницу между разными подходами к IO: blocking, non-blocking, multiplexed и async.
#io #multiplexed #async
https://www.rubberducking.com/2018/05/the-various-kinds-of-io-blocking-non.html
#io #multiplexed #async
https://www.rubberducking.com/2018/05/the-various-kinds-of-io-blocking-non.html
Rubberducking
The Various Kinds of IO - Blocking, Non-blocking, Multiplexed and Async.
A blog where I write down my thoughts, ideas and notions, as an exercise to cement them in my memory and improve on their concepts.
Мы тут недавно вспомнили, что Google обещали выложить исходники Architecture Components, но как-то всё это дело прошло мимо нас и мы их не видели. Так вот, они всё-таки есть, может и вам пригодится.
-
-
- Paging: https://android.googlesource.com/platform/frameworks/support/+/master/paging/common/src/main/java/android/arch/paging
- Room: https://android.googlesource.com/platform/frameworks/support/+/master/room/common/src/main/java/android/arch/persistence/room
#source #architecture #components
-
Lifecycle, LifecycleOwner, LifecycleObserver и прочее разное: https://android.googlesource.com/platform/frameworks/support/+/master/lifecycle/common/src/main/java/android/arch/lifecycle-
ViewModel, LiveData и т.п.: https://android.googlesource.com/platform/frameworks/support/+/master/lifecycle/extensions/src/main/java/android/arch/lifecycle- Paging: https://android.googlesource.com/platform/frameworks/support/+/master/paging/common/src/main/java/android/arch/paging
- Room: https://android.googlesource.com/platform/frameworks/support/+/master/room/common/src/main/java/android/arch/persistence/room
#source #architecture #components
Доклад про новое в Android Support Library.
-
-
-
-
-
- Material components:
* Обновили
*
*
#supportlib #view #material #talk
https://youtu.be/jdKUm8tGogw
-
RecyclerView Selection Library - штука, помогающая реализовать selection над списком. Умеет в selection жесты как в Google Photos, что очень даже неплохо. Хотя, это и не очень-то новость, вроде бы про неё я уже давно что-то слышал-
ListAdapter - какая-то странная поделка, упрощающая использование DiffUtil в меняющихся списках, но, судя по коду, который показали, она не то чтобы сильно сокращает код, который придётся написать + ограничивает ваш Adapter на один List, а этого не всегда достаточно-
androidx.webkit - позволяет использовать WebView, обновляемый через Play Store, на старых API-
CustomTab переезжает в androidx.browser + появляется возможность воткнуться в контекстное меню вашей CustomTab и добавить своё действие-
HeifWriter - позволяет эффективно записать YUV byte buffers, Surface и Bitmap в файл, но пока только на API 28+. Обещают добавить backport- Material components:
* Обновили
TextInputLayout - теперь он с рамкой и вроде бы умеет добавлять кнопку “Очистить”*
Button теперь можно по-разному закруглять и добавлять в них иконки*
BottomAppBar - по сути тот же AppBar, только снизу#supportlib #view #material #talk
https://youtu.be/jdKUm8tGogw
YouTube
Android Jetpack: What’s new in Android Support Library (Google I/O 2018)
Get to know AndroidX -- the new name and packaging for the Android Support Library -- the foundation for Android libraries in Jetpack, and learn about features available in the 1.0.0 release.
Rate this session by signing-in on the I/O website here → htt…
Rate this session by signing-in on the I/O website here → htt…
Очень насыщенный доклад про рисование текста. Пока что из всех Google I/O докладов мне встретилось два настолько насыщенных доклада - этот и про Android rendering pipeline, о нём я писал выше.
Сразу порекомендую посмотреть это видео всем, кому приходится много использовать
Ну и основные highlights:
- Text stack в Android разбит на две части - Java и Native (сразу обратим внимание, что Android контролирует только три верхних уровня - всю Java часть и верхний уровень из Native - Minikin).
* Верхний уровень в Java части - это
* Native часть куда более насыщенная, пройдёмся сверху вниз: Minikin - библиотека для text measurement, line breaking и hyphenation (перенос слов), ICU - работа с Unicode, HarfBuzz - text shaping, FreeType - генерирует bitmaps для всех gliffs, Skia - основной графический движок системы
- Начиная с Android L у нас есть System Wide Word Layout LRU Cache - кэширует до 5000 слов, чтобы переиспользовать результаты обсчётов, когда это же слово снова нужно будет отрисовать
- В Android P ускорили использование simple break strategy вместе с normal или full hyphenation frequency - в детали углубляться не буду, подробности можно найти в видео
- Если с сервака, например, нам приходит строчка, в которой намешано несколько языков, и мы знаем, где какой язык используется, то для правильного переноса слов/строк текста нужно использовать
-
- У нас есть три класса:
- Ещё я увидел интересную фишку с
- Если нужно отрисовать какой-то очень длинный текст, не нужно его целиком запихивать в
- Ну и новая фишка в Android P -
За сим откланиваюсь.
#text #span #textview #talk
https://youtu.be/x-FcOX6ErdI
Сразу порекомендую посмотреть это видео всем, кому приходится много использовать
Span, особенно внутри RecyclerView.Ну и основные highlights:
- Text stack в Android разбит на две части - Java и Native (сразу обратим внимание, что Android контролирует только три верхних уровня - всю Java часть и верхний уровень из Native - Minikin).
* Верхний уровень в Java части - это
TextView и EditText, затем идут Layout, Paint и Canvas* Native часть куда более насыщенная, пройдёмся сверху вниз: Minikin - библиотека для text measurement, line breaking и hyphenation (перенос слов), ICU - работа с Unicode, HarfBuzz - text shaping, FreeType - генерирует bitmaps для всех gliffs, Skia - основной графический движок системы
- Начиная с Android L у нас есть System Wide Word Layout LRU Cache - кэширует до 5000 слов, чтобы переиспользовать результаты обсчётов, когда это же слово снова нужно будет отрисовать
- В Android P ускорили использование simple break strategy вместе с normal или full hyphenation frequency - в детали углубляться не буду, подробности можно найти в видео
- Если с сервака, например, нам приходит строчка, в которой намешано несколько языков, и мы знаем, где какой язык используется, то для правильного переноса слов/строк текста нужно использовать
LocaleSpan-
Span делятся на Paragraph spans (применяются на параграф, очевидно) и Character spans (применяются посимвольно, тоже очевидно). В свою очередь Character spans делятся на Appearance affecting (после применения нужно сделать redraw) и Metric affecting (после применения нужно сделать и remeasure, и redraw). Про написание своих Span в докладе тоже есть кусок, поэтому посмотрите, если нужно- У нас есть три класса:
SpannedString (нельзя mutable text, нельзя mutable markup), SpannableString (нельзя mutable text, можно mutable markup) и SpannableStringBuilder (можно mutable text, можно mutable markup). В докладе показали сравнение производительности SpannableString и SpannableStringBuilder (они по-разному устроены внутри: один на массиве, второй на деревьях), результаты следующие: до 250 Span они ведут себя одинаково, дальше SpannableStringBuilder выигрывает. Ну, вы поняли, что использовать :)- Ещё я увидел интересную фишку с
<annotaion/> тэгом внутри strings.xml. Допустим, у вас есть какая-то строка, переведённая на несколько языков. Вам нужно применить какой-то Span на определённое слово в этой строке. Но в одном языке это слово стоит в одном месте, а в другом языке - в другом. Вот ровно эту проблему решает <annotation/> тэг. Если такая задача перед вами стоит - сходите посмотрите.- Если нужно отрисовать какой-то очень длинный текст, не нужно его целиком запихивать в
TextView. Разбейте на параграфы и используйте RecyclerView.- Ну и новая фишка в Android P -
Magnifier. Это такая экранная лупа, которая поможет с выделением текста. Для TextView и EditText она будет работать из коробки, но и к своим custom View её можно прикрутить.За сим откланиваюсь.
#text #span #textview #talk
https://youtu.be/x-FcOX6ErdI
YouTube
Best practices for text on Android (Google I/O '18)
This session will cover common usages of text in Android apps, and common pitfalls developers fall into that can be avoided. Topics to be covered include styling with spans, working with editable text, measuring your own text, when and how to use different…
Новость, которая будет интересна всем Google Developer Experts (GDE) и тем, кто планирует получить этот статус. Каждый GDE теперь может получить бесплатную лицензию на все продукты JetBrains.
#gde #google #intellij #jetbrains
https://www.jetbrains.com/shop/eform/devrecognition
#gde #google #intellij #jetbrains
https://www.jetbrains.com/shop/eform/devrecognition
Неплохая статья в блоге Karumi с некоторыми советами/фишками по Kotlin. Многое из того, что там есть, довольно очевидно и баян. Но есть и очень приятные вещи типа
#kotlin #tips
http://blog.karumi.com/kotlin-android-development-6-months-into-it/
.exhaustive для when. Советую посмотреть.#kotlin #tips
http://blog.karumi.com/kotlin-android-development-6-months-into-it/
Karumi Blog
Kotlin Android development - 6 months into it
Tips and tricks after 6 months working with Kotlin for Android - Karumi
@istima прислал ссылку на статью с перечислением Google приложений и сайтов, которые уже адаптировали обновленные Material Design гайдлайны. Посмотрите, если интересно.
#google #material #guidelines
https://9to5google.com/2018/05/22/full-list-google-apps-material-theme-design-2/
#google #material #guidelines
https://9to5google.com/2018/05/22/full-list-google-apps-material-theme-design-2/
Слушайте, а доклады на какие темы вам бы больше хотелось видеть на конференциях? Даже если вы на них совсем не ходите, какие темы вызывают наибольший интерес? Давайте проведём мини-опрос.
Я не нашёл бота, который позволил бы делать множественный выбор и умел бы работать с таким кол-вом вариантов, но давайте хотя бы через Google форму. Там всего один вопрос, займёт меньше минуты :)
Через недельку подведём итоги.
#survey #conference
https://goo.gl/forms/Nfuwk8BNVZUwROV53
Я не нашёл бота, который позволил бы делать множественный выбор и умел бы работать с таким кол-вом вариантов, но давайте хотя бы через Google форму. Там всего один вопрос, займёт меньше минуты :)
Через недельку подведём итоги.
#survey #conference
https://goo.gl/forms/Nfuwk8BNVZUwROV53
Google Docs
Android Дичь - опрос про интересные темы
Разработка ждёт балета pinned «Слушайте, а доклады на какие темы вам бы больше хотелось видеть на конференциях? Даже если вы на них совсем не ходите, какие темы вызывают наибольший интерес? Давайте проведём мини-опрос. Я не нашёл бота, который позволил бы делать множественный выбор и умел…»
Как и обещал, подводим итоги опроса про интересующие вас темы. Спасибо всем, кто уделил минутку! Напомню, что можно было выбирать от 1 до 16 вариантов интересующих тем. Кстати, как меня потом пнул @pro100svitlo, я совсем забыл включить вариант про Б - Безопасность.
Итак, получилось вот что:
* Всего ответов: 127
* Минимально выбирали тем: 1
* Максимально выбирали тем: 16 (т.е. все)
* В среднем выбирали по 6.7 вариантов
* По медиане - выбирали 6
Теперь топ-5 тем:
* 11% - Архитектура - разные паттерны или примеры проектирования определённых слоёв приложения
* 11% - Внутренности View в Android, написание своих View и ViewGroup
* 10% - Интересное из области performance в Android
* 9% - Material Design с точки зрения разработчика - может какие-то интересные выработанные подходы
* 8% - Какие-то непосредственные кишки Android - интересная но не всегда практичная инфа
Полная табличка с результатами есть по ссылке.
#survey #results #conference
https://docs.google.com/spreadsheets/d/1u6v7EY1i9Rgmw8f_WIfAy7F9rPxw8T73wIyMgZfxkFU/edit?usp=sharing
Итак, получилось вот что:
* Всего ответов: 127
* Минимально выбирали тем: 1
* Максимально выбирали тем: 16 (т.е. все)
* В среднем выбирали по 6.7 вариантов
* По медиане - выбирали 6
Теперь топ-5 тем:
* 11% - Архитектура - разные паттерны или примеры проектирования определённых слоёв приложения
* 11% - Внутренности View в Android, написание своих View и ViewGroup
* 10% - Интересное из области performance в Android
* 9% - Material Design с точки зрения разработчика - может какие-то интересные выработанные подходы
* 8% - Какие-то непосредственные кишки Android - интересная но не всегда практичная инфа
Полная табличка с результатами есть по ссылке.
#survey #results #conference
https://docs.google.com/spreadsheets/d/1u6v7EY1i9Rgmw8f_WIfAy7F9rPxw8T73wIyMgZfxkFU/edit?usp=sharing
Google Docs
Android Дичь - опрос про интересные темы (Responses)
items stats
Вопрос,Кол-во,Процент от общего,Процент выбравших,Min,1
Архитектура - разные паттерны или примеры проектирования определённых слоёв приложения,92,11%,72.40%,Max,16
Внутренности View в Android, написание своих View и ViewGroup,92,11%,52.80%,Mean…
Вопрос,Кол-во,Процент от общего,Процент выбравших,Min,1
Архитектура - разные паттерны или примеры проектирования определённых слоёв приложения,92,11%,72.40%,Max,16
Внутренности View в Android, написание своих View и ViewGroup,92,11%,52.80%,Mean…
Внезапно (не то чтобы очень, но всё же) Google убрали раздел Tablet с android-dot-com. Пациент и раньше был скорее мёртв, чем жив, так что я радуюсь. А за новость скажем спасибо @istima.
#tablet #chromeos #google
https://techcrunch.com/2018/06/01/google-quits-selling-tablets/
#tablet #chromeos #google
https://techcrunch.com/2018/06/01/google-quits-selling-tablets/
TechCrunch
Google quits selling tablets (Update: Just a bug)
Google has quietly crept out of the tablet business, removing the "tablets" heading from its Android page. Google in particular has struggled to make Android a convincing alternative to iOS in the tablet realm, and with this move has clearly indicated its…
Google Photos Library API:
* Возможность показывать юзерам фото из их Photos библиотеки. И Smart Filters позволяют фильтровать по: тегам (распознанное в Cloud Vision API), датам и интервалам дат
* Возможность загружать фото в Photos юзера
* Инфраструктура для шэринга фото - шэринг через ссылку на shared album
#talk #google #photos
https://youtu.be/KIFfibtzaEo
* Возможность показывать юзерам фото из их Photos библиотеки. И Smart Filters позволяют фильтровать по: тегам (распознанное в Cloud Vision API), датам и интервалам дат
* Возможность загружать фото в Photos юзера
* Инфраструктура для шэринга фото - шэринг через ссылку на shared album
#talk #google #photos
https://youtu.be/KIFfibtzaEo
YouTube
Bring the best of Google Photos to your app (Google I/O '18)
Google Photos was designed to make it easier for people to organize a lifetime of memories. The recently announced API now lets you harness the best of Google Photos in your own product. In this session, you'll see how you can create experiences that eliminate…
Разработка ждёт балета
Внезапно (не то чтобы очень, но всё же) Google убрали раздел Tablet с android-dot-com. Пациент и раньше был скорее мёртв, чем жив, так что я радуюсь. А за новость скажем спасибо @istima. #tablet #chromeos #google https://techcrunch.com/2018/06/01/google-quits…
Оказалось, что пропажа tablets раздела с android-dot-com - всего лишь баг, который не заметили сразу. За поправку спасибо @Scorpikk. Но я по-прежнему настаиваю, что пациент скорее мёртв :)
#tablet #google
https://www.engadget.com/2018/06/02/google-killed-android-tablet-section
#tablet #google
https://www.engadget.com/2018/06/02/google-killed-android-tablet-section
Engadget
Google quietly killed its Android tablet web page (update: it's back)
The official Android tablet page no longer exists.