Mobileconf

49
Construindo sua aplicação para conquistar os usuários

Transcript of Mobileconf

Construindo sua aplicação para

conquistar os usuários

André [email protected]/andrelrs

Desenvolvedor Android não gosta de fazer aplicações

bonitas.Autor não revelado

Qualquer um de nós ficaria chateado, desmotivado ou

abatido.Joseph Climber

Vamos pensar no layout... por que não usar o do

concorrente?

d.android.com/design

androidniceties.tumblr.com

youtube.com/user/androiddevelopers

Com o layout definido, está na hora de começar o

projeto!?

www.androidbootstrap.com

ActionBar é obrigatório em qualquer aplicativo!

Independente da versão do android.

www.actionbarsherlock.com

MainActivity.java

res/values/styles.xml

AndroidManifest.xml

jgilfelt.github.com/android-actionbarstylegenerator

Temos o layout, a estrutura do código e agora mão na

massa no projeto?

Usabilidade (UX)

Como fazer o envio das imagens sem afetar a UX

do aplicativo?

3G no Brasil

Deixar a tela do aplicativo "esperando" ou "carregando"

Deixar a tela "livre" para que o usuário continue usando o

aplicativo, e o envio será feito em background.

Deixar a usabilidade fluente. Como assim?

Vamos então falar das técnicas de background.

AsyncTask

Handler

Looper

loopj.com/android-async-http

Mas e quando a timeline tem muitas imagens qual a

melhor estratégia?

1 2 3

Service / IntentService

Não tem bala de prata

UrlImageViewHelpergithub.com/koush/UrlImageViewHelper

UrlImageViewHelper.setUrlDrawable(imageView, "http://example.com/image.

png");

Injeção de dependência.

(Dependency Injection)

DI Frameworks MVC

No Android...

Roboguice

Exemplo do Roboguice@ContentView(R.layout.main)public class AstroboyMasterConsole extends RoboActivity { @InjectView(R.id.self_destruct) Button selfDestructButton; @InjectView(R.id.say_text) EditText sayText; @InjectView(R.id.brush_teeth) Button brushTeethButton; @InjectView(tag="fightevil") Button fightEvilButton; @Inject AstroboyRemoteControl remoteControl; @InjectResource(R.anim.expletive_animation) Animation expletiveAnimation; @Inject Vibrator vibrator;

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

}}

AnnotationsAndroid github.com/excilys/androidannotations

@EActivity(R.layout.my_activity)public class MyActivity extends Activity {

@ViewById EditText myEditText;

@ViewById(R.id.myTextView) TextView textView;

@StringRes(R.string.hello) String helloFormat;

@ColorRes int androidColor;

@BooleanRes boolean someBoolean;

@SystemService NotificationManager notificationManager;

@Click void myButtonClicked() { String name = myEditText.getText().toString(); setProgressBarIndeterminateVisibility(true); someBackgroundWork(name, 5); }}

Muito Obrigado!