Your SlideShare is downloading. ×
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Desvendando as ferramentas e serviços para o desenvolvedor Android

2,582

Published on

Diversos frameworks e serviços para facilitar o seu dia a dia com desenvolvimento Android serão apresentadas, tais como Spring Android, Roboguice, Robolectric, Android Query, Flurry e Xtify. Saiba as …

Diversos frameworks e serviços para facilitar o seu dia a dia com desenvolvimento Android serão apresentadas, tais como Spring Android, Roboguice, Robolectric, Android Query, Flurry e Xtify. Saiba as características de cada uma, suas vantagens e desvantagens e faça as suas escolhas!

Published in: Technology, Business
1 Comment
13 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,582
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
54
Comments
1
Likes
13
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Desvendando as ferramentas e serviços para o desenvolvedor Android João Bosco Monteiro
  • 2. Quem souSócio e desenvolvedor naDesenvolvendo software há 10 anosEx-JavaEE
  • 3. Autor do livro
  • 4. Lado B
  • 5. Por que utilizar frameworks?
  • 6. Onde utilizar Interface Gráfica Utilitários Injeção de Dependências Persistência Build Testes Integração Contínua
  • 7. Utilitários, UI e IoC
  • 8. Ajax Callback Manipulação de Imagens XML Parsing Autenticação Twitter e FacebookLocalização (beta)
  • 9. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TextView textView = (TextView) findViewById(R.id.text); textView.setText("Clique no botão"); Button button = (Button) findViewById(R.id.button); button.setText("clique aqui"); button.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { textView.setText("QCon 2012"); } });}
  • 10. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); aq = new AQuery(this); aq.id(R.id.text).text("Clique no botão"); aq.id(R.id.button).text("clique aqui")}public void onClick(View v) { aq.id(R.id.text).text("QCon 2012");}
  • 11. public void async() { String url = "http://search.twitter.com/…"; aq.ajax(url, JSONObject.class, this, "callback");}public void callback(String url, JSONObject json, AjaxStatus status) { if (json != null) { // successful ajax call }}
  • 12. String imageUrl = "http://qcon.com.br/images/infoq.gif";//carregamento assíncrono, com cacheaq.id(R.id.image).image(imageUrl);//carregamento assíncrono, com cache e fallbackaq.id(R.id.image).image(imageUrl, true, true, 0, R.drawable.default_image);//limita a largura da imagem em 200pxaq.id(R.id.image).image(imageUrl, true, true, 200, 0);
  • 13. RoboGuiceInjeção de dependências Powered by Google GuiceÉ possível injectar views, recursos,serviços do sistema...
  • 14. class AndroidWay extends Activity { TextView name; ImageView thumb; LocationManager loc; Drawable icon; String myName; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); name = (TextView) findViewById(R.id.name); thumb = (ImageView)findViewById(R.id.thumbnail); loc = (LocationManager) getSystemService(Activity.LOCATION_SERVICE); icon = getResources() .getDrawable(R.drawable.icon); myName = getString(R.string.app_name); name.setText( "Hello, " + myName ); }}
  • 15. class RoboWay extends RoboActivity { @InjectView(R.id.name) TextView name; @InjectView(R.id.thumbnail) ImageView thumbnail; @InjectResource(R.drawable.icon) Drawable icon; @InjectResource(R.string.app_name) String myName; @Inject LocationManager loc; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); name.setText( "Hello, " + myName ); }}
  • 16. Android AnnotationsAnnotation Processing Tool para gerar boilerplatecodeInjeção de dependência em tempo de compilaçãoThreading e Event HandligREST Client (Spring Android Wrapper)
  • 17. @EActivity(R.layout.my_activity)public class MyActivity extends Activity { @ViewById EditText myEditText; @StringRes(R.string.hello) String helloFormat; @ColorRes int androidColor; @BooleanRes boolean someBoolean; @SystemService NotificationManager notificationManager;
  • 18. @Rest("http://company.com/ajax/services")public interface MyRestClient { @Get("/events") EventList getEvents();}@EActivitypublic class MyActivity extends Activity { @RestService MyRestClient myRestClient; @AfterViews void afterViews() { myRestClient.getEvents(); }}
  • 19. @Clickvoid anotherButton() {}@Backgroundvoid someBackgroundWork(String param) {}@UiThreadvoid doInUiThread(String param) {}@Transactionalvoid doSomeDbWork(SQLiteDatabase db) {}
  • 20. Spring AndroidRest ClientOAuth
  • 21. public <T> T getForObject(URI url, Class<T> responseType);public <T> T postForObject(URI url, Object request, Class<T> rType);public void put(String url, Object request, Object... variables);public void delete(String url, Object... urlVariables);
  • 22. final String url ="https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q={query}";RestTemplate restTemplate = new RestTemplate();GoogleSearch response = restTemplate.getForObject(url, GoogleSearch.class, "Google Android");
  • 23. ORM LiteORM já existenteConfiguração via anotaçõesGeneric DAO e ActiveRecordQueryBuilders
  • 24. Generic DAOqueryForAll()queryForId(ID id)queryForFieldValues(Map<String, Object> fieldValues)queryRaw(String query)create(T object)createOrUpdate(T object)update(T object)delete(T object)countOf()
  • 25. projetoDao = getHelper().getProjetoDao();QueryBuilder<Projeto, Integer> queryBuilder;queryBuilder = projetoDao.queryBuilder();List<Projeto> projetos = queryBuilder.where() .eq("nome", "QCon") .and() .eq("cid", 1) .query();
  • 26. GreenDroidWidgets e LayoutsEstilos e temasCustom ActionBar
  • 27. ActionBarSherlockActionBar para todos!
  • 28. Testes
  • 29. RobolectricRoda os testes diretamente na JVMMocking não é necessárioShadow Objects
  • 30. @RunWith(RobolectricTestRunner.class)public class HomeActivityTest { private HomeActivity activity; private Button pressMeButton; @Before public void setUp() throws Exception { activity = new HomeActivity(); activity.onCreate(null); pressMeButton = (Button) activity.findViewById(R.id.press_me_button); } @Test public void shouldHaveAButtonThatSaysPressMe() throws Exception { assertThat((String) pressMeButton.getText(), equalTo("Tests Rock!")); }}
  • 31. Tests run: 86, Failures: 0, Errors: 0, Skipped: 0[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 15.875s[INFO] Finished at: Sun Jul 29 15:54:58 GMT-04:00 2012[INFO] Final Memory: 14M/81M[INFO] ------------------------------------------------------------------------
  • 32. RobotiumTestes caixa-pretaLegibilidade dos casos de testes é melhor doque os de instrumentaçãoIntegração com Maven
  • 33. Mavenmvn archetype:generate -DarchetypeArtifactId=android-with-test -DarchetypeGroupId=de.akquinet.android.archetypes -DarchetypeVersion=1.0.6 -DgroupId=com.foo.bar -DartifactId=my-android-project -Dpackage=com.foo.bar.android
  • 34. ServiçosPushLink
  • 35. Discussões
  • 36. Obrigado! João Bosco Monteirojoaobmonteiro@gmail.com @joaobmonteiro

×