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?
Como fazer o envio das imagens sem afetar a UX
do aplicativo?
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.
loopj.com/android-async-http
Mas e quando a timeline tem muitas imagens qual a
melhor estratégia?
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
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); }}