Suzanne AlexandraEvangelista da Tecnologia AndroidMotorola MobilityPrincipais dicas para UIs do AndroidAdquirindo a mágica...
Brasil - #appsum11brArgentina - #appsum11ar  México - #appsum11m  developer.motorola.com      Título da apresentação   Ver...
Nós estamos em um lugar totalmente              novo.   Leve as coisas certas a bordo.
Adquira a mágica01 PENSE NA ERGONOMIA02 ENVOLVA OS SENTIDOS03 USE APARÊNCIAS INCRÍVEIS04 TORNE-O ÓBVIO
Adquira a mágica01 PENSE NA ERGONOMIA     Layouts com orientação paisagem     Notificações elaboradas     Tamanhos de text...
Suponha que seus usuários estejamusando orientação paisagem.
Layouts com orientação paisagemMuitas vezes, a orientação paisagem precisa de layouts especializados,em qualquer dispositivo
Layouts com orientação paisagemVeja o que acontece no tablet
Layouts com orientação paisagemO que deu errado?alignParentLeft                   alignParentRight               Nada no c...
Layouts com orientação paisagemDesign para tamanho e orientação da tela
Layouts com orientação paisagemO layout vencedor                                           centerHorizontal="true"        ...
Layouts com orientação paisagemOtimize a experiência do usuário de wide screens
Layouts com orientação paisagemEvite o efeito de grande oceano
Tamanhos de textosTextos pequenos (como imagens) provavelmente não funcionarão
Tamanhos de textosMelhores práticas  Escale com sp  18 sp e superior  Certifique-se de que o texto é  legível para os usuá...
Notificações elaboradasUm importante benefício do Android em relação a outrasplataformas móveis                           ...
Notificações elaboradasExemplos de quando usar notificações elaboradasAo chegar novo conteúdo                     Quando u...
Notificações elaboradasDuas notificações são exibidas no HoneycombBandeja(Tray)                     Pop-up
Notificações elaboradasUse a classe Notification.BuilderNotification.Builder builder = new            Notification.Builder...
Notificações elaboradasCrie a notificação que você quiser builder.setSmallIcon(R.drawable.icon)   .setContentTitle(title) ...
Notificações elaboradasCodificação visual  setLargeIcon()                        setSmallIcon()             setContentTitl...
Notificações elaboradasAdquira um pouco de mágica: crie um botão clicável RemoteViews layout = new RemoteViews        getP...
Notificações elaboradasEstratégia para compatibilidade com versões anteriores(“backward compatibility”)private static bool...
Adquira a mágica01 PENSE NA ERGONOMIA02 ENVOLVA OS SENTIDOS   Imagens   Sensibilidade ao toque03 USE APARÊNCIAS INCRÍVEIS0...
A visão supera todos os    outros sentidos.              Regras do cérebro               Dr. John Medina
ImagensExpresse-se visualmente, para encantar
ImagensTelas para diferentes dispositivos precisam de tamanhos diferentes deimagem
ImagensEscolha uma estratégia de imagem  Um conjunto de imagens e deixe o Android dimensionarautomaticamente?  Conjuntos d...
ImagensMemória vs tamanho do arquivo: um exemploDimensionamento automático              32 MB de memória             324 K...
O dimensionamento automático usa              memória.Conjuntos de imagem personalizados aumentam o tamanho do arquivo.
ImagensApresente amostras de imagens grandes em tempo deexecução para economizar memória BitmapFactory.Options options = n...
Imagens  Onde colocar imagens e ícones                                  Padrão, dimensionado                              ...
Sensibilidade ao toqueTablets são desenvolvidos para o toque
Sensibilidade ao toqueCertifique-se de que todos os alvos possam ser tocados
Sensibilidade ao toqueCertifique-se de que todos os alvos possam ser tocados  public View getView( int position,         V...
Sensibilidade ao toqueVeja como as imagens são transferidas entre dispositivos                                            ...
Adquira a mágica01 PENSE NA ERGONOMIA02 ENVOLVA OS SENTIDOS03 USE APARÊNCIAS INCRÍVEIS   Temas, temas, temas04 TORNE-O ÓBVIO
TemasCoerente com o dispositivo, ou destacado
TemasO Honeycomb apresenta dois novos temas holográficos                                     Theme.Holo         Theme.Holo...
TemasMas eles exigem aceleração de hardware (“hardwareacceleration”)  <application android:icon="@drawable/icon"       and...
TemasPorém, você pode querer que sua aplicação funcione em váriasversões do Android    <uses-sdk android:minSdkVersion="8"...
TemasCrie diversos temas para versões do Android                            <style … parent=                              ...
Certifique-se de que todas as chamadas deAPI que você usa funcionam para todas as     versões de API que você suporta.
Adquira a mágica01 PENSE NA ERGONOMIA02 ENVOLVA OS SENTIDOS03 USE APARÊNCIAS INCRÍVEIS04 TORNE-O ÓBVIO   Barras de ações  ...
Barras de ações  Torne os recursos de seus aplicativos prontamente disponíveisÍcone daapp                  Diálogo dropdow...
Barras de açõesCodificação visual                           <item android:showAsAction="true" … >                 onCreate...
Barras de açõesEtapa 1: foco no nível 11 de API <uses-sdk android:minSdkVersion="8"           android:targetSdkVersion="11...
Barras de açõesEtapa 2: coloque itens do menu na barra de ações  <item android:id="@+id/favorite"        android:title="@s...
Barras de açõesEtapa 3: manipule a seleção de opções como de costume@Override public boolean onOptionsItemSelected(MenuIte...
Barras de açõesNo XOOM e em um smartphone
Barras de açõesUse um pouco de mágica, estilize<style name="MyTheme"       parent="android:style/Theme.Holo" >   <item nam...
Barras de açõesUse um pouco de mágica, adicione um diálogo                              Use AlertDialog.Builder           ...
Barras de açõesMas faça coisas do Honeycomb somente no Honeycombprivate static boolean isHoneycomb =      android.os.Build...
Fragments (Fragmentos)Use para mostrar mais conteúdo e recursos, de forma mais fluida
Fragments (Fragmentos)É possível usar muitos padrões                                 Mais comum
Fragments (Fragmentos)O layout inicial do fragment é o mesmo em todas as orientações
Fragments (Fragmentos)Porém, é possível mostrar ou ocultar exibições (“views”)
Fragments (Fragmentos)Encontre seus fragments, em sua Activity principal Fragment gridFrag =       getFragmentManager().  ...
Fragments (Fragmentos)Verifique a orientação e ajuste as exibições (“views”) private boolean photoInline = false; photoInl...
Fragments (Fragmentos)Ainda melhor      Transição animada
Fragments (Fragmentos)Use um pouco de mágica: anime a exibição do fragmento –passo 1<set>  <objectAnimator       xmlns:and...
Fragments (Fragmentos)Use um pouco de mágica: anime a exibição do fragmento –passo 2FragmentTransaction ft =       getFrag...
Clique e arraste (“Drag and drop”)Cria envolvimento físico, direto e imediato
Clique e arraste (“Drag and drop”)Tem diversos estados de evento                                  ACTION_DRAG_STARTED     ...
Clique e arraste (“Drag and drop”)Tem diversos estados de evento                                           ACTION_DROP    ...
Clique e arraste (“Drag and drop”)Veja como isso funciona nos fragmentos
Clique e arraste (“Drag and drop”)Para iniciar, chame startDrag()  Escolha um gesto que inicia um arrasto: long click?  Cr...
Clique e arraste (“Drag and drop”)Em seguida, continue com um listener e onDrag()    Criar um ouvinte de arrasto (implemen...
Perguntas?          @suzalex          @motodev         @motodevbr      Brasil - #appsum11br    Argentina - #appsum11ar    ...
obrigada
LEGALINFORMAÇÕES SOBRE LICENÇAExceto onde indicado, o exemplo de código fonte escrito pela Motorola Mobility Inc. e fornec...
LEGALLICENSE NOTICESExcept where noted, sample source code written by Motorola Mobility Inc. and provided to you is licens...
Upcoming SlideShare
Loading in …5
×

Principais dicas para UIs do Android

3,405
-1

Published on

Published in: Technology, Lifestyle
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,405
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
135
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Principais dicas para UIs do Android

  1. 1. Suzanne AlexandraEvangelista da Tecnologia AndroidMotorola MobilityPrincipais dicas para UIs do AndroidAdquirindo a mágica nos tabletsMOTOROLA e o logotipo estilizado M são marcas comerciais ou marcas registradas da Motorola Trademark Holdings,LLC. Todas as outras marcas comerciais são propriedade dos seus respectivos proprietários. © 2011 MotorolaMobility, Inc. Todos os direitos reservados.
  2. 2. Brasil - #appsum11brArgentina - #appsum11ar México - #appsum11m developer.motorola.com Título da apresentação Versão 1.0 24.02.09
  3. 3. Nós estamos em um lugar totalmente novo. Leve as coisas certas a bordo.
  4. 4. Adquira a mágica01 PENSE NA ERGONOMIA02 ENVOLVA OS SENTIDOS03 USE APARÊNCIAS INCRÍVEIS04 TORNE-O ÓBVIO
  5. 5. Adquira a mágica01 PENSE NA ERGONOMIA Layouts com orientação paisagem Notificações elaboradas Tamanhos de textos02 ENVOLVA OS SENTIDOS Imagens Sensibilidade ao toque03 USE APARÊNCIAS INCRÍVEIS Temas, temas, temas04 TORNE-O ÓBVIO Barras de ações Fragmentos Clique e arraste
  6. 6. Suponha que seus usuários estejamusando orientação paisagem.
  7. 7. Layouts com orientação paisagemMuitas vezes, a orientação paisagem precisa de layouts especializados,em qualquer dispositivo
  8. 8. Layouts com orientação paisagemVeja o que acontece no tablet
  9. 9. Layouts com orientação paisagemO que deu errado?alignParentLeft alignParentRight Nada no centro Imagem pequena
  10. 10. Layouts com orientação paisagemDesign para tamanho e orientação da tela
  11. 11. Layouts com orientação paisagemO layout vencedor centerHorizontal="true" <RelativeLayout>layout_alignLeft layout_alignRight
  12. 12. Layouts com orientação paisagemOtimize a experiência do usuário de wide screens
  13. 13. Layouts com orientação paisagemEvite o efeito de grande oceano
  14. 14. Tamanhos de textosTextos pequenos (como imagens) provavelmente não funcionarão
  15. 15. Tamanhos de textosMelhores práticas Escale com sp 18 sp e superior Certifique-se de que o texto é legível para os usuários reais
  16. 16. Notificações elaboradasUm importante benefício do Android em relação a outrasplataformas móveis Notificação da sua app
  17. 17. Notificações elaboradasExemplos de quando usar notificações elaboradasAo chegar novo conteúdo Quando uma mídia está sendo reproduzida
  18. 18. Notificações elaboradasDuas notificações são exibidas no HoneycombBandeja(Tray) Pop-up
  19. 19. Notificações elaboradasUse a classe Notification.BuilderNotification.Builder builder = new Notification.Builder( this );Como AlertDialog.Builder
  20. 20. Notificações elaboradasCrie a notificação que você quiser builder.setSmallIcon(R.drawable.icon) .setContentTitle(title) .setContentText(text) .setContentIntent(pintent) // Um “pending intent” .setLargeIcon(myBitmap) ;
  21. 21. Notificações elaboradasCodificação visual setLargeIcon() setSmallIcon() setContentTitle() setContentText()
  22. 22. Notificações elaboradasAdquira um pouco de mágica: crie um botão clicável RemoteViews layout = new RemoteViews getPackageName(), R.layout.notification); layout.setTextViewText(R.id.notification_title, getString(R.string.app_name)); layout.setOnClickPendingIntent(R.id.notification_button, getDialogPendingIntent("Tapped") ); builder.setContent(layout);
  23. 23. Notificações elaboradasEstratégia para compatibilidade com versões anteriores(“backward compatibility”)private static boolean isHoneycomb = android.os.Build.VERSION.SDK_INT > 10;if (!isHoneycomb) // iniciar um intent de Activityelse // iniciar outro
  24. 24. Adquira a mágica01 PENSE NA ERGONOMIA02 ENVOLVA OS SENTIDOS Imagens Sensibilidade ao toque03 USE APARÊNCIAS INCRÍVEIS04 TORNE-O ÓBVIO
  25. 25. A visão supera todos os outros sentidos. Regras do cérebro Dr. John Medina
  26. 26. ImagensExpresse-se visualmente, para encantar
  27. 27. ImagensTelas para diferentes dispositivos precisam de tamanhos diferentes deimagem
  28. 28. ImagensEscolha uma estratégia de imagem Um conjunto de imagens e deixe o Android dimensionarautomaticamente? Conjuntos de recursos personalizados para tamanhos edensidades diferentes? Determinar a densidade mais comumente usada? Recuperar imagens dinamicamente em tempo de execução eescalar para o dispositivo?
  29. 29. ImagensMemória vs tamanho do arquivo: um exemploDimensionamento automático 32 MB de memória 324 KB de tamanhoConjuntos de imagens 23 MB de memória 728 KB de tamanho
  30. 30. O dimensionamento automático usa memória.Conjuntos de imagem personalizados aumentam o tamanho do arquivo.
  31. 31. ImagensApresente amostras de imagens grandes em tempo deexecução para economizar memória BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = false; options.inSampleSize = 4; options.inScaled = true; options.inTargetDensity = screenDensity; Bitmap bitmap = BitmapFactory.decodeResource( getResources(), R.drawable.clover, options);
  32. 32. Imagens Onde colocar imagens e ícones Padrão, dimensionado automaticamente Ícones de alta resolução Pré-dimensionado paraCombine estilo 3.0 densidade
  33. 33. Sensibilidade ao toqueTablets são desenvolvidos para o toque
  34. 34. Sensibilidade ao toqueCertifique-se de que todos os alvos possam ser tocados
  35. 35. Sensibilidade ao toqueCertifique-se de que todos os alvos possam ser tocados public View getView( int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(mContext); i.setImageResource(mImageIds[position]); i.setLayoutParams(new Gallery.LayoutParams( 300, 200)); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setBackgroundResource( mGalleryItemBackground); return i; }
  36. 36. Sensibilidade ao toqueVeja como as imagens são transferidas entre dispositivos 160 dpi – média Proporção 16:9
  37. 37. Adquira a mágica01 PENSE NA ERGONOMIA02 ENVOLVA OS SENTIDOS03 USE APARÊNCIAS INCRÍVEIS Temas, temas, temas04 TORNE-O ÓBVIO
  38. 38. TemasCoerente com o dispositivo, ou destacado
  39. 39. TemasO Honeycomb apresenta dois novos temas holográficos Theme.Holo Theme.Holo.Light
  40. 40. TemasMas eles exigem aceleração de hardware (“hardwareacceleration”) <application android:icon="@drawable/icon" android:label="@string/app_name" android:hardwareAccelerated="true" > Disponível somente no Honeycomb
  41. 41. TemasPorém, você pode querer que sua aplicação funcione em váriasversões do Android <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11" />
  42. 42. TemasCrie diversos temas para versões do Android <style … parent= "@android:style/Theme"> <style … parent= "@android:style/Theme.Holo">
  43. 43. Certifique-se de que todas as chamadas deAPI que você usa funcionam para todas as versões de API que você suporta.
  44. 44. Adquira a mágica01 PENSE NA ERGONOMIA02 ENVOLVA OS SENTIDOS03 USE APARÊNCIAS INCRÍVEIS04 TORNE-O ÓBVIO Barras de ações Fragmentos Clique e arraste
  45. 45. Barras de ações Torne os recursos de seus aplicativos prontamente disponíveisÍcone daapp Diálogo dropdown Visualização Itens de ações de ações
  46. 46. Barras de açõesCodificação visual <item android:showAsAction="true" … > onCreateOptionsMenu()android:actionLayout onOptionsItemSelected()android:actionViewClass
  47. 47. Barras de açõesEtapa 1: foco no nível 11 de API <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11" />
  48. 48. Barras de açõesEtapa 2: coloque itens do menu na barra de ações <item android:id="@+id/favorite" android:title="@string/favorite" android:icon="@drawable/ic_menu_star" android:showAsAction="ifRoom" />
  49. 49. Barras de açõesEtapa 3: manipule a seleção de opções como de costume@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.favorite: // faça algo return true; …}
  50. 50. Barras de açõesNo XOOM e em um smartphone
  51. 51. Barras de açõesUse um pouco de mágica, estilize<style name="MyTheme" parent="android:style/Theme.Holo" > <item name="android:actionBarStyle"> @style/ActionBar</item></style><style name="ActionBar" parent="android:style/Widget.Holo.ActionBar"> <item name="android:background"> @drawable/my_background</item></style>
  52. 52. Barras de açõesUse um pouco de mágica, adicione um diálogo Use AlertDialog.Builder Crie um diálogo personalizado em XML Use um DialogFragment
  53. 53. Barras de açõesMas faça coisas do Honeycomb somente no Honeycombprivate static boolean isHoneycomb = android.os.Build.VERSION.SDK_INT > 10;se (isHoneycomb) { // criar o diálogo personalizado aqui}
  54. 54. Fragments (Fragmentos)Use para mostrar mais conteúdo e recursos, de forma mais fluida
  55. 55. Fragments (Fragmentos)É possível usar muitos padrões Mais comum
  56. 56. Fragments (Fragmentos)O layout inicial do fragment é o mesmo em todas as orientações
  57. 57. Fragments (Fragmentos)Porém, é possível mostrar ou ocultar exibições (“views”)
  58. 58. Fragments (Fragmentos)Encontre seus fragments, em sua Activity principal Fragment gridFrag = getFragmentManager(). findFragmentById(R.id.photogrid); Fragment photoFrag = getFragmentManager(). findFragmentById(R.id.the_frag);
  59. 59. Fragments (Fragmentos)Verifique a orientação e ajuste as exibições (“views”) private boolean photoInline = false; photoInline = (photoFrag != null && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE); if (photoInline) { // faça algo } else if ( photoFrag != null ) { getView().setVisibility(View.GONE); }
  60. 60. Fragments (Fragmentos)Ainda melhor Transição animada
  61. 61. Fragments (Fragmentos)Use um pouco de mágica: anime a exibição do fragmento –passo 1<set> <objectAnimator xmlns:android= http://schemas.android.com/apk/res/android android:propertyName="x" android:valueType="floatType" android:valueFrom="-1280" android:valueTo="0" android:duration="500" /></set>
  62. 62. Fragments (Fragmentos)Use um pouco de mágica: anime a exibição do fragmento –passo 2FragmentTransaction ft = getFragmentManager().beginTransaction();ft.setCustomAnimations( R.anim.slide_in_left, R.anim.slide_out_right );DetailsFragment newFrag =DetailsFragment.newInstance();ft.replace(R.id.details_fragment_container, newFrag, "detailFragment");ft.commit();
  63. 63. Clique e arraste (“Drag and drop”)Cria envolvimento físico, direto e imediato
  64. 64. Clique e arraste (“Drag and drop”)Tem diversos estados de evento ACTION_DRAG_STARTED ACTION_DRAG_ENTERED
  65. 65. Clique e arraste (“Drag and drop”)Tem diversos estados de evento ACTION_DROP ACTION_DRAG_ENDED
  66. 66. Clique e arraste (“Drag and drop”)Veja como isso funciona nos fragmentos
  67. 67. Clique e arraste (“Drag and drop”)Para iniciar, chame startDrag() Escolha um gesto que inicia um arrasto: long click? Crie um listener: OnLongClickListener() Crie objetos ClipData e DragShadowBuilder Inicie um arrastopublic boolean onLongClick(View v) { ClipData data = ClipData.newPlainText("foo","bar"); DragShadowBuilder shadowBuilder = new DragShadowBuilder(); v.startDrag(data, shadowBuilder, v, 0); return true;}
  68. 68. Clique e arraste (“Drag and drop”)Em seguida, continue com um listener e onDrag() Criar um ouvinte de arrasto (implementar OnDragListener) Substituir onDrag e manipular eventosclass BoxDragListener implements OnDragListener { public boolean onDrag(View self, DragEvent event) { if (event.getAction() == DragEvent.ACTION_DRAG_STARTED) { // fazer algo } // manipular outros eventos}
  69. 69. Perguntas? @suzalex @motodev @motodevbr Brasil - #appsum11br Argentina - #appsum11ar México - #appsum11mxcommunity.developer.motorola.com
  70. 70. obrigada
  71. 71. LEGALINFORMAÇÕES SOBRE LICENÇAExceto onde indicado, o exemplo de código fonte escrito pela Motorola Mobility Inc. e fornecido a você é licenciado conforme descrito abaixo.Copyright © 2010-2011, Motorola, Inc. Todos os direitos reservados exceto quando expressamente indicado.A redistribuição e utilização em formulários fonte e binários, com ou sem modificação, são permitidas de acordo com as seguintes condições:As redistribuições de código fonte devem manter o aviso de direitos autorais acima, esta lista de condições e a seguinte isenção de responsabilidade.As redistribuições em formulários binários devem reproduzir o aviso de copyright acima, esta lista de condições e a seguinte isenção de responsabilidade na documentação e/ou outros materiais fornecidos com a distribuição.O nome da Motorola, Inc. e os nomes de seus colaboradores não podem ser usados para endossar ou promover produtos derivados desse software sem permissão prévia por escrito.ESTE SOFTWARE É FORNECIDO PELOS DETENTORES E COLABORADORES DOS DIREITOS AUTORAIS "NA CONDIÇÃO QUE SE ENCONTRA" E QUALQUER GARANTIA EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO LIMITADA A GARANTIAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO PARA UMA FINALIDADE ESPECÍFICA NÃO IMPLICAM RESPONSABILIDADE. EM NENHUM CASO O DETENTOR OU COLABORADOR DOS DIREITOS AUTORAIS DEVE SER RESPONSÁVEL POR QUAISQUER DANOS DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, EXEMPLARES OU CONSEQUENTES (INCLUINDO, MAS NÃO LIMITADOS À AQUISIÇÃO DE BENS OU SERVIÇOS SUBSTITUTOS, PERDA DE USO, DADOS OU LUCROS; OU INTERRUPÇÃO DE NEGÓCIOS) CAUSADOS E SOBRE QUALQUER TEORIA DE RESPONSABILIDADE, SEJA EM CONTRATO, RESPONSABILIDADE OBJETIVA OU AGRAVO (INCLUINDO NEGLIGÊNCIA OU NÃO) DECORRENTE DE QUALQUER MANEIRA DO USO DESSE SOFTWARE, MESMO QUE INFORMADOS DA POSSIBILIDADE DE TAIS DANOS.Outro código fonte exibido nesta apresentação pode ser oferecido sob outras licenças.Apache 2.0Copyright © 2010, Android Open Source Project. Todos os direitos reservados, salvo disposição em contrário expressamente indicada.Licenciado sob a Licença Apache, Versão 2.0 (a "Licença"), você não pode usar esse arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em http://www.apache.org/licenses/LICENSE-2.0.A menos que exigido pela lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído "NA CONDIÇÃO QUE SE ENCONTRA", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam expressas ou implícitas. Consulte a Licença para a linguagem específica que governa as permissões e limitações sob a Licença.Licença Creative Commons Atribuição 3.0.Partes desta apresentação são reproduzidas a partir do trabalho criado e compartilhado pelo Google (http://code.google.com/policies.html) e usadas de acordo com os termos da Licença Creative Commons Atribuição 3.0. (http://creativecommons.org/licenses/by/3.0/).
  72. 72. LEGALLICENSE NOTICESExcept where noted, sample source code written by Motorola Mobility Inc. and provided to you is licensed as described below.Copyright © 2010-2011, Motorola, Inc. All rights reserved except as otherwise explicitly indicated.Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.Neither the name of the Motorola, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.Other source code displayed in this presentation may be offered under other licenses.Apache 2.0Copyright © 2010, Android Open Source Project. All rights reserved unless otherwise explicitly indicated.Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.Creative Commons 3.0 Attribution LicensePortions of this presentation are reproduced from work created and shared by Google (http://code.google.com/policies.html) and used according to terms described in the Creative Commons 3.0 Attribution License (http://creativecommons.org/licenses/by/3.0/).
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×