More Related Content Similar to Desvendando as ferramentas e serviços para o desenvolvedor Android (20) Desvendando as ferramentas e serviços para o desenvolvedor Android2. Quem sou
Sócio e desenvolvedor na
Desenvolvendo software há 10 anos
Ex-JavaEE
6. Onde utilizar
Interface Gráfica Utilitários
Injeção de Dependências
Persistência Build Testes
Integração Contínua
8. Ajax Callback Manipulação de Imagens
XML Parsing Autenticação Twitter e
Facebook
Localização (beta)
10. 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");
}
});
}
11. 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");
}
12. 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
}
}
13. String imageUrl =
"http://qcon.com.br/images/infoq.gif";
//carregamento assíncrono, com cache
aq.id(R.id.image).image(imageUrl);
//carregamento assíncrono, com cache e fallback
aq.id(R.id.image).image(imageUrl, true, true, 0,
R.drawable.default_image);
//limita a largura da imagem em 200px
aq.id(R.id.image).image(imageUrl, true, true,
200, 0);
15. 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 );
}
}
16. 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 );
}
}
22. 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);
23. 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");
24. ORM Lite
ORM já existente
Configuração via anotações
Generic DAO e ActiveRecord
QueryBuilders
37. @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!"));
}
}
38. 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] ------------------------------------------------------------------------
41. Maven
mvn 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
52. Obrigado!
João Bosco Monteiro
joaobmonteiro@gmail.com
@joaobmonteiro