Portal Android - Comunidade de Desenvolvedores Android
http://www.portalandroid.org/comunidade/

[DICAS] Acelerando o desenvolvimento com o AAnnotations
http://www.portalandroid.org/comunidade/viewtopic.php?f=7&t=23328
Página 1 de 1

Autor:  andreikeda87 [ 24 Jan 2013, 20:14 ]
Assunto do Tópico:  [DICAS] Acelerando o desenvolvimento com o AAnnotations

Boa tarde companheiros do fórum,

Ultimamente tenho utilizado um framework que considerei bastante interessante. Ele se chama AndroidAnnotations e possui várias facilidades que acelera o desenvolvimento e deixa o código muito mais limpo. Quem quiser conhecer um pouco mais do projeto, basta acessar o link: http://androidannotations.org/

Segue abaixo dois códigos, um utilizando a linguagem comumente utilizada e outro utilizando o AndroidAnnotations:

/99

public class BookmarksToClipboardActivity extends Activity {
 
  BookmarkAdapter adapter;
 
  ListView bookmarkList;
 
  EditText search;
 
  BookmarkApplication application;
 
  Animation fadeIn;
 
  ClipboardManager clipboardManager;
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(FLAG_FULLSCREEN, FLAG_FULLSCREEN);
 
    setContentView(R.layout.bookmarks);
 
    bookmarkList = (ListView) findViewById(R.id.bookmarkList);
    search = (EditText) findViewById(R.id.search);
    application = (BookmarkApplication) getApplication();
    fadeIn = AnimationUtils.loadAnimation(this, anim.fade_in);
    clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
 
    View updateBookmarksButton1 = findViewById(R.id.updateBookmarksButton1);
    updateBookmarksButton1.setOnClickListener(new OnClickListener() {
 
      @Override
      public void onClick(View v) {
        updateBookmarksClicked();
      }
    });
 
    View updateBookmarksButton2 = findViewById(R.id.updateBookmarksButton2);
    updateBookmarksButton2.setOnClickListener(new OnClickListener() {
 
      @Override
      public void onClick(View v) {
        updateBookmarksClicked();
      }
    });
 
    bookmarkList.setOnItemClickListener(new OnItemClickListener() {
 
      @Override
      public void onItemClick(AdapterView<?> p, View v, int pos, long id) {
        Bookmark selectedBookmark = (Bookmark) p.getAdapter().getItem(pos);
        bookmarkListItemClicked(selectedBookmark);
      }
    });
 
    initBookmarkList();
  }
 
  void initBookmarkList() {
    adapter = new BookmarkAdapter(this);
    bookmarkList.setAdapter(adapter);
  }
 
  void updateBookmarksClicked() {
    UpdateBookmarksTask task = new UpdateBookmarksTask();
 
    task.execute(search.getText().toString(), application.getUserId());
  }
 
  private static final String BOOKMARK_URL = //
  "http://www.bookmarks.com/bookmarks/{userId}?search={search}";
 
 
  class UpdateBookmarksTask extends AsyncTask<String, Void, Bookmarks> {
 
    @Override
    protected Bookmarks doInBackground(String... params) {
      String searchString = params[0];
      String userId = params[1];
 
      RestTemplate client = new RestTemplate();
      HashMap<String, Object> args = new HashMap<String, Object>();
      args.put("search", searchString);
      args.put("userId", userId);
      HttpHeaders httpHeaders = new HttpHeaders();
      HttpEntity<Bookmarks> request = new HttpEntity<Bookmarks>(httpHeaders);
      ResponseEntity<Bookmarks> response = client.exchange( //
          BOOKMARK_URL, HttpMethod.GET, request, Bookmarks.class, args);
      Bookmarks bookmarks = response.getBody();
 
      return bookmarks;
    }
 
    @Override
    protected void onPostExecute(Bookmarks result) {
      adapter.updateBookmarks(result);
      bookmarkList.startAnimation(fadeIn);
    }
   
  }
 
  void bookmarkListItemClicked(Bookmark selectedBookmark) {
    clipboardManager.setText(selectedBookmark.getUrl());
  }
 
}
 

Classe sem AndroidAnnotations, ao todo 107 linhas escritas.

\"/uu\"

@NoTitle
@Fullscreen
@EActivity(R.layout.bookmarks)
public class BookmarksToClipboardActivity extends Activity {
 
  BookmarkAdapter adapter;
 
  @ViewById
  ListView bookmarkList;
 
  @ViewById
  EditText search;
 
  @App
  BookmarkApplication application;
 
  @RestService
  BookmarkClient restClient;
 
  @AnimationRes
  Animation fadeIn;
 
  @SystemService
  ClipboardManager clipboardManager;
 
  @AfterViews
  void initBookmarkList() {
    adapter = new BookmarkAdapter(this);
    bookmarkList.setAdapter(adapter);
  }
 
  @Click({R.id.updateBookmarksButton1, R.id.updateBookmarksButton2})
  void updateBookmarksClicked() {
    searchAsync(search.getText().toString(), application.getUserId());
  }
 
  @Background
  void searchAsync(String searchString, String userId) {
    Bookmarks bookmarks = restClient.getBookmarks(searchString, userId);
    updateBookmarks(bookmarks);
  }
 
  @UiThread
  void updateBookmarks(Bookmarks bookmarks) {
    adapter.updateBookmarks(bookmarks);
    bookmarkList.startAnimation(fadeIn);
  }
 
  @ItemClick
  void bookmarkListItemClicked(Bookmark selectedBookmark) {
    clipboardManager.setText(selectedBookmark.getUrl());
  }
 
}
 



@Rest("http://www.bookmarks.com")
public interface BookmarkClient {
 
  @Get("/bookmarks/{userId}?search={search}")
  Bookmarks getBookmarks(String search, String userId);
 
}
 

Juntando a classe e uma interface com a chamada de um restservice, temos aproximadamente 60 linhas.

Um grande abraço e espero que esta dica seja útil para vocês.

Autor:  maiconn [ 25 Jan 2013, 09:49 ]
Assunto do Tópico:  Re: [DICAS] Acelerando o desenvolvimento com o AAnnotations

Muito útil o tutorial, parabéns, vou dar uma testada.

Autor:  antunes [ 27 Jan 2013, 18:22 ]
Assunto do Tópico:  Re: [DICAS] Acelerando o desenvolvimento com o AAnnotations

Muito interessante!! Obrigado por compartilhar!!

Abraços!

Autor:  andreikeda87 [ 28 Jan 2013, 20:30 ]
Assunto do Tópico:  Re: [DICAS] Acelerando o desenvolvimento com o AAnnotations

Sem problemas.

Espero que seja de grande ajuda.

Abraços

Autor:  ByddU [ 10 Fev 2013, 23:46 ]
Assunto do Tópico:  Re: [DICAS] Acelerando o desenvolvimento com o AAnnotations

Rcenetemente escrevi um post sobre o android annotations no meu blog,a unica coisa que você deve atentar é que isso não seria legal para desenvolvedores iniciantes... pq na minha opinião isso prejudica o entendimento da plataforma...


Mas claro de ter experiencia utulizar essa library é um beneficio imenso =D

Autor:  raphaelframos [ 25 Fev 2013, 10:12 ]
Assunto do Tópico:  Re: [DICAS] Acelerando o desenvolvimento com o AAnnotations

Uma mão na roda! Mandou bem!

Página 1 de 1 Todos os Horários estão como UTC - 2 horas [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/