logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Mai 26

Salvar tamanho e posição das colunas em um DataGrid

Escrito por SamuelFacchinello em 1, 4, 6, Adobe Flex, AR, blog, Blogs, botão, C#, cliente, código, código fonte, Cookie, DataGrid, Dica, Dicas, flash, Flex, fonte, Google, IE, if, mg, O, on, player, problema, RIA, Ria’s Geral, S+S, tag, Tema, Twitter, UI, web @ 05 26th, 2011 | via http://desenvolvendoemflex.blogspot.com/ | Sem comentários
SamuelFacchinello
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Hoje surgiu um problema aqui na @PontoSistemas, onde teríamos que salvar a posição e o tamanho da coluna de acordo com o que o cliente preferir, como cada pessoa organiza a tela de um jeito diferente. Tudo isso porque toda vez que o DataGrid é construído novamente, ele volta ao estado inicial.

A idéia:
Ao organizar ou alterar os tamanhos das colunas de um DataGrid/AdvancedDataGrid salve as posições e os tamanhos das colunas.

A solução:
Altere o tamanho e/ou a ordem das colunas, e recarregue a página. Elas irão voltar na mesma ordem e tamanho que você as deixou.

Clique com o botão direito em cima do DataGrid, depois em “view source” para visualizar o código fonte.

Da maneira que foi implementado, as definições da posição e do tamanho das colunas são salvas na memória do FlashPlayer (como se fosse os cookies das páginas web), ao limpar esse “cookie” as configurações voltam ao estado original.

Por hoje é isso. Em breve novas dicas.

Comentem!!!

Mai 21

Aprendendo Flex

Escrito por Fabio da Silva em .NET, 1, 3.5, 4, 6, Adobe, aprender flex, AR, arte, BI, blog, Blogs, C#, Dica, Dicas, Documentação, e-genial, eduardo Kraus, egenial, Flex, Flex 4, Flex4, Google, html, label, Livro, Livros, mg, O, on, on-line, Outros, RIA, Ria’s Geral, site, TAT, Treinamento, treinamentos, UI, Ved @ 05 21st, 2011 | via http://fabiophx.blogspot.com | Sem comentários
Fabio da Silva
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Para quem quer aprender Flex algumas dicas de livros, apostilas e treinamentos.

Documentação
A própria Adobe libera uma documentação em inglês muito boa e bem detalhada sobre Flex, você pode baixar esta documentação deste site.

Livros
Há também muitos livros, inclusive um lançamento recente e recomendado traduzido para a língua portuguesa é o livro Flex 4 Avançado que foi avaliado pelo Igor Costa, sendo que ainda conseguiu um desconto para os leitores.

Treinamentos
Nesta modalidade existe os treinamentos on-line e presenciais, abaixo listo os que conheço.
Aqui pediria que se souberem de outros que recomendam, coloquem nos comentários que será útil.

Treinamentos on-line
Eduardo Kraus
E-Genial – Ministrado pelo Vedovelli
RIACycle – Ministrado pelo Igor Costa

Treinamentos presenciais
DClick – SP
ENG – SP / PR e DF
TargetTrust – RS – Ministrado por mim

Dos treinamentos acima, também oferecem treinamento in-company em qualquer parte do Brasil.

Mai 13

Dicas para Designers (Android UI Guideline)

Escrito por DClick Team em 1, 2.0, 4, 6, Adobe, Android, app, AR, BI, bitmap, blog, busca, C#, class, dados, Design, designer, Dica, Dicas, exemplo, explicação, for, gestão, ide, IE, if, image, imagens, int, interface, lite, map, mg, mobile, NaN, O, on, Outros, photoshop, prova, ps3, RIA, Ria’s Geral, S+S, Software, TAT, Tema, Twitter, UI, UX, Vários, web, XP @ 05 13th, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!


Aqui estão algumas dicas que podem ser úteis quando você? for desenvolver ícones ou outros detalhes de design para sua aplicação. As dicas supõem que você está usando o Adobe Photoshop ou programa similar de vetor ou tratamento de imagem.

Use convenções de nomenclatura comum para os ícones.

Tente nome de arquivos de modo que os assets (vamos entender assets como qualquer imagem que compõe a skin da sua app) fiquem dentro de um diretório todos ordem alfabética. Em particular, ajuda muito usar um prefixo comum para cada tipo de ícone.

Por exemplo (Vou deixar os nomes em inglês dos tipos de ícones para não causar muita confusão para? a Guideline:

Lembre–se que você não é obrigado a usar um prefixo, isso é apenas para auxiliar a organização.

Crie uma área de trabalho para organizar os arquivos de múltiplas resoluções.

Dê suporte a várias densidades (resoluções)

Apoiar várias densidades tela significa que você deve criar várias versões domesmo ícone.

Ou seja, dar suporte a vários tipos de devices significa que você precisa ter várias cópias para várias resoluções

E para isso, nossa sugestão é que você crie diretórios específicos para cada tipo de resolução, de forma a organizar o seu trabalho.

Tal como no exemplo abaixo que não está traduzido a fim de não confundir demais a explicação:

Você também pode ter arquivos com o mesmo nome, porém em diretórios distintos com resoluções diferentes. Ou seja, é o mesmo arquivo, o mesmo ícone por exemplo, porém com resoluções diferentes, que dependendo da situação é requisitado de um diretório específico.

Veja exemplo abaixo:

USE VETOR

Sempre que possível recomendamos que você utilize softwares como Photoshop, mas que crie seus ícones e assets em vetor, a fim de poder redimensionar sempre que necessário para outros tamanhos, otimizando o seu projeto.

COMECE PELO MAIOR TAMANHO

Sempre que você tiver que criar uma iconografia ou um asset, verifique qual é a maior resolução desse elemento, de acordo com a Tabela 1, então comece criando pelo maior tamanho, com isso, basta exportar um único PNG com este tamanho e então redimesioná-los para os demais gerando novos PNGs, em vez de ficar aumentando o seu Vetor.

BITMAP

Cuidado, se você gerou ícones ou outro elemento em bitmap em resoluções como Mdpi (resolução média), e quer aumentar para Hdpi (resolução Alta), então não poderá fazê-lo apenas redimensionando, terá que redesenhar esse elemento, por isso ficar atento a dica sobre o tamanho dos elementos.

METADADOS

Imagens PNG carregam muito mais informações do que você imagina, se você for salvar a imagem unicamente como PNG sem fazer isso visando uma interface mobile, provavelmente estará salvando essa imagem com metadados, aumentando assim o seu tamanho, são informações importantes para que a imagem seja encontrada em buscadores por exemplo, mas não para ser usada em uma interface de sistema. Portanto ao salvar um PNG salve através do Photoshop em Save for Web & Devices. E habilite para PNG24.

Mar 27

Como se tornar um Flash Developer de sucesso

Escrito por Lucas Marçal em 1, 2009, 4, action, Actionscript, Adobe, análise, Android, Animação, api, Aplicativos, AR, arte, Artigo, as3, AUG, auto, Banco de Dados, BI, blog, Blogs, builder 4, camp, Carreira, código, ColdFusion, comunidade, Curso, Cursos, dados, Desenvolvedor, desenvolvedores, Desenvolvimento, Design, Destaque, developer, Dica, Dicas, Diversos, Documentação, err, erro, estatísticas, event, events, Experiências, facebook, Ferramenta, flash, flash builder, Flash Builder 4, Flash Player, for, framework, Frameworks, free, gaia, git, Google, ide, IE, if, Iniciando, int, interface, iphone, labs, lista, Mercado, motion, mysql, News, novidade, Novidades, O, on, online, oop, Opinião, padrão, Partilha, Pessoal, photoshop, PHP, player, programação, Projetos, pt, publicidade, Redes Sociais, referencia, RIA, Ria’s Geral, server, serviço, Serviços, site, SmartPhone, Software, Sun, TAT, Tecnologia, Tutoriais, Twitter, UI, UX, Vários, Ved, web, XP @ 03 27th, 2011 | via http://www.lucasmarcal.com.br/blog/ | Sem comentários
Lucas Marçal
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Salve pessoal!

Essa semana eu inicie a fase de contratações da equipe que vai trabalhar comigo em um projeto nos próximos meses, entre horas de pesquisa e análise de possibilidades eu me deparei com uma situação engraçada e atípica, pesquisando sobre média salarial de profissionais de agências de publicidade encontrei um estudo feito pela ABRADI (Associação Brasileira de agências digitais), esse estudo mostra o salário dos profissionais de agências digitais descriminado por áreas e níveis de conhecimento.

Para minha surpresa percebi que nesse estudo Flash Developers estão na lista dos mais bem pagos do mercado, ficando atrás apenas de profissionais de atendimento, planejamento e diretores.

Essa grata surpresa me incitou a escrever uma matéria sobre quais são as principais características e os principais conhecimentos de um Flash Developer Sênior, basicamente nessa matéria vou descrever sob o meu ponto de vista os conhecimentos que um “Flash Developer” tem que ter para alcançar o topo da agência onde trabalha ou vai trabalhar.

Fuja das brigas sobre qual tecnologia é a melhor

O Flash há muito tempo desperta amor e ódio nas pessoas, varias vezes eu me vi incluso em “brigas” sobre qual é a melhor tecnologia e qual é o lugar do Flash na escala de desenvolvimento.

Minha opinião sobre o assunto sempre foi clara, caso alguém me mostre uma tecnologia que seja tão hibrida quanto o Flash no quesito integração com outras tecnologias, ferramentas de desenvolvimento, documentação oficial útil e descomplicada, cursos, metodologia, comunidade de desenvolvimento ativa, padronização de desenvolvimento e possibilidade de desenvolvimento para várias plataformas, nesse dia eu com certeza vou parar de trabalhar com Flash/Actionscript e aprender essa incrível tecnologia que terá batido o Flash, até esse dia, eu prefiro continuar no mundo da plataforma flash. Então fica a dica, não perca seu tempo nesse tipo de discussão, deixe que cada um escolha seu caminho, acredite, isso vai ser melhor para você!

Aprenda a desenvolver usando OOP

Se você é um verdadeiro “Flash Developer” com certeza já fez alguma coisa em OOP, esse padrão de programação pode salvar a sua vida quando o tempo for curto e o projeto desafiador. Para saber mais acesse esse link

Use um Framework para facilitar o desenvolvimento

Frameworks ajudam você a manter um padrão de desenvolvimento e diminuem o tempo de tarefas simples, existem ótimos frameworks de desenvolvimento, entre eles eu destaco o Gaia Framework e o ASF-AS3(Neto Leal). Use sem moderação!

Aprenda integrar redes sociais

Não é novidade alguma que as redes sociais revolucionaram a forma como as coisas acontecem na web, então é muito importante que você saiba integrar diversos serviços ao seus sites/aplicativos em Flash, serviços como Youtube, Facebook, Twitter e Flickr tem áreas específicas para desenvolvedores de várias tecnologias e em todas elas você pode encontrar APIs para auxiliar no desenvolvimento de seus sites/aplicativos.

Aprenda uma linguagem de programação Server-Side

Não que você tenha que ser um expert nessa linguagem, mas é muito bom você ter a visão do “outro lado”, não serão poucas as vezes que vão querer que aquele “hotsitezinho” que você fez tenha uma área administrativa e grave/leia dados de um banco de dados, ou que aquele outro programador “mala” vai dizer que isso ou aquilo não é possível com flash, nesse caso eu indico duas tecnologias exatamente nessa ordem, Coldfusion e PHP. Não se esqueça de aprender a trabalhar bem com Mysql, mas atenção, você não vai se tornar o melhor programador Serve-Side do mundo então tente não perder sua “veia” de design com essas tecnologias o interessante é você ainda continuar “mandando bem” em áreas fundamentais como Motion e Design.

Todo Flash Developer TEM que saber trabalhar com Photoshop

Isso pode levantar certa polêmica, mas a grande verdade é que se você pretende ser um Flash Developer e gerenciar um projeto é fundamental que você conheça profundamente o Photoshop, que tenha uma boa noção de design, tipografia e afins e conheça muito de motion design, por mais que digam o contrário 80% do trabalho de um Flash Developer é dar vida a interfaces malucas criadas por Diretores de Arte ainda mais malucos!

Animação via código é muito melhor que Timeline

Falar isso para os desavisados pode parecer uma heresia, mas a verdade é que, seja um banner, um hotsite ou um grande site é muito melhor você fazer todas as transições e motions via código, nesse caso eu indico que você use a Greensock. Trabalhando dessa forma você terá uma facilidade maior na hora de fazer aquele ajuste fino ou implementar aquela alteração de última hora.

Tenha boas referências

A comunidade de desenvolvimento Flash é muito unida, existem vários blogs como o meu que visam o crescimento profissional das pessoas sem nada em troca, é fundamental que você tenha boas referencias, que fique ligado nas constantes novidades que circulam no mundo da plataforma flash(sabe o que é molehill?), quer saber quem são as minhas referencias? Segue o link. Outra dica, tenha uma pagina de Labs sempre atualizada ou então crie um blog para compartilhar seus conhecimentos e experiências, isso coloca você em destaque na comunidade e pode abrir portas para bons trabalhos =)

Editor de código

A IDE do flash é muito boa, na versão CS5 o pessoal da Adobe melhorou bastante o editor de código, porém, ele está longe de ser a melhor opção do mercado, eu particularmente uso o FlashDevelop para fazer isso, mas o Flash Builder 4 também é uma boa opção, escolha a sua!

Pense fora da caixa

Há muito tempo o flash player domina as estatísticas de software mais instalado do mundo, mas é importante saber que o Flash não serve apenas para desenvolver sites, hoje em dia existe uma infinidade de dispositivos que utilizam o flash player, hoje você pode criar conteúdo para Iphone, Ipad, Smartphones com Android e tablets como o Motorola Xoom. Eu acho muito importante estar sempre ligado nessas novas possibilidades e de preferência ter um (ou todos) para estudos, pense fora da caixa, quem sabe isso não vai te render uma grana extra!

Em casa de ferreiro o espeto é de pau, mas não deveria ser!

Tenha sempre um portfólio bem atualizado, eu não posso falar disso com muita autoridade, pois há três anos venho tentando ter tempo para atualizar meu site, kaekae, mas é fundamental que você tenha um portfólio online que mostre exatamente o que você é capaz de fazer, ele com certeza vai ser decisivo na hora da contratação para uma empresa ou freela.

Curso, congressos, atualize-se!

É importante que você faça pelo menos uma vez ao ano uma reciclagem de seus conhecimentos, eu particularmente guardo 5% do que ganho ao ano para fazer isso, esse ano vou estar no FlashCampBrasil, uma dica que deixo são os cursos do Luciano Augusto o cara manda super bem em cursos a distância.

Saiba cobrar por seus projetos e não vacile nos prazos.

O maior erros do Flash Developer está na hora de passar o orçamento, acredite, nós estamos no topo da cadeia alimentar dos desenvolvedores, quando aparecer aquele freela não fique com medo de cobrar o valor real, você é um Flash Developer e sua hora é uma das mais caras do mercado.
Outra coisa importante são os prazos, saiba quanto tempo você leva para fazer determinadas atividades comuns a um Flash Developer, não cumprir prazos está fora de questão e lembre-se sempre existe alguém que conhece outro alguém e uma vez queimado no mercado você estará fadado ao limbo!

Não existe limite para a criatividade dentro do flash, não desanime o caminho é longo mais as recompensas em R$ são grandes depois de um tempo!

Deixe um comentário sobre esse artigo e não se faça de difícil se precisar de ajuda!
Um abraço

Meu perfil no Facebook
Meu Twitter

Mar 11

Adobe Photoshop CS5 – Criação de Interface para Flex 4 – Parte 2

Escrito por DClick Team em 1, 4, 6, Adobe, Android, AR, arte, back, BI, blog, class, Curso, Design, designer, Dica, Dicas, efeito, efeitos, email, err, Ferramenta, Flex, for, git, ide, IE, image, int, interface, layout, mg, O, on, Pessoal, photoshop, RIA, Ria’s Geral, screen, Screencast, screencasts, Sugestões, tag, TAT, Tecnologia, Teste, Twitter, UI, user experience, UX, vs @ 03 11th, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

É  até engraçado chamar de parte 2, mas é de fato a parte 2 dos screencasts.

Eu pensei em realmente continuar no mesmo post, mas fiquei na dúvida se os leitores perceberiam que houve atualização, portanto estou criando esse novo post com os novos screencasts.

De lá pra cá (e foi apenas 1 dia) recebi um bom feedback do pessoal, a galera realmente gostou e percebi que foram os Devs quem agradeceram, pelo visto querem se aprofundar mais para criarem suas próprias interfaces. É possível? Sim é possível, estou passando técnicas interessantes que poderá ajudar e muito na construção de novas interfaces, mais harmônicas e visualmente mais bonitas, porém, é evidente que esse trabalho não está totalmente refinado, há muito mais, muito mesmo que pode ser feito.

Belíssimas interfaces requerem tempo e muito estudo, acertos, testes, etc.. mas estamos mostrando o caminho das pedras, e futuramente espero poder publicar também sobre Interface iOS e Android, outro mistério aí pra galera que será desvendado.

Dúvidas, Críticas, Sugestões? A vontade… tem o meu email, o meu Twitter ou mesmo os comentários aí abaixo no post.

Segue o resultado do nosso trabalho até esse momento… reduzido em 20% do tamanho original

Com o filtro aberto

.

AULA 7

.

Continuando com o SmartObject, trabalhando dentro dele e vendo a alteração diretamente no Stage Principal.

.

.

AULA 8

.

Dicas de Teoria da Cor

.

.

AULA 9

.

Trabalhando com gradiente e vetor, início da criação da Interface de Filtro.

.

.

AULA 10

.

Criação da Interface do Filtro, seguindo o Wireframe e alterando detalhes.
.

.

AULA 11

.

Refinamento de Interface e Ferramenta Notes

.

.

AULA 12

.

Refinamento de Layout, Efeitos.

.

.

_________________________________________

Eduardo Horvath é UX Specialist e Designer na DClick.
Formado pela Faculdade Impacta de Tecnologia no curso Design de Mídia Digital ele atua na área de Design a mais de 15 anos.
@eduardohorvath

Mar 1

Flash Catalyst CS5 – AppleStyle – Data List com Imagens no Design Time Data

Escrito por DClick Team em 1, 4, app, apple, AR, blog, Catalyst, class, Curso, Design, designer, Dica, Dicas, Estilo, flash, for, git, IE, if, image, imagens, layout, mg, O, on, Orientação, Pessoal, RIA, Ria’s Geral, screen, Screencast, Sem categoria, TAT, Tecnologia, Twitter, UI, UX, XP @ 03 1st, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Devido o sucesso do último screencast, a décima sexta aula de Catalyst, onde ensino a criar um design diferenciado com o um estilo Apple, e a pedidos do pessoal que assiste, resolvi refinar esse layout.

A idéia é bem simples, depois do Mário Junior (Dev RJ) e do Thiago Felix (Dev SP) terem ficado perguntando porque eu não havia usado um Data List para organizar as imagens, tive que inserir nesse Screencast, e como comento o motivo era o tempo…

Mas aproveitei para mostrar como inserir imagens de maneira simples e fácil no Data List, e como mudar a sua orientação de vertical para horizontal, apesar de simples muitos ainda não conheciam essas funções.

Verá isso e outras dicas nesse Screencast.

.

.

flashcatalyst_17.fxp

_________________________________________

Eduardo Horvath é UX Specialist e Designer na DClick.
Formado pela Faculdade Impacta de Tecnologia no curso Design de Mídia Digital ele atua na área de Design a mais de 15 anos.

@eduardohorvath

Fev 25

Agon News S1G6R4

Escrito por DClick Team em 1, 4, 6, AR, blog, Catalyst, class, Dica, Dicas, Download, ide, image, mg, News, O, on, Ria’s Geral, TAT, tv, Twitter, UI @ 02 25th, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

O Eduardo fala sobre o Catalyst. O Gustavo fala sobre BDD e o Rafael Silva oferece boas dicas para quem está preparando monografia na área de TI.

Video thumbnail. Click to play.
Click to play

Clique aqui para fazer download

http://blip.tv/file/get/Dclick-AgonNewsS1G6R4649.mp3

Fev 11

Android ContentProvider

Escrito por Fábio Batista da Silva em 1, abas, Android, app, AR, Arquitetura, arte, auto, Banco de Dados, BI, boolean, case, class, classe, código, comunicação, control, Curso, dados, demo, Dica, Dicas, err, exemplo, Flex, for, ide, IE, if, image, int, interface, Java, lite, map, mg, O, on, override, Partilha, pattern, pt, RIA, Ria’s Geral, runtime, SQLite, string, tag, TAT, Tema, tv, UI, update, utils, XML, XP @ 02 11th, 2011 | via http://www.flexria.com.br/home | Sem comentários
Fábio Batista da Silva
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá,

Esse sera o primeiro post que escrevo sobre android, estou começando a “brincar” com ele e resolvi compartilhar um pouco do pouco que descobri. :)
Nesse post vou dar uma ideia de como implementar o seu próprio ContentProvider.


SQLite :

Uma das grandes facilidades do android e o suporte ao SQLite.
As aplicações poderiam acessar diretamente o banco porem é uma boa pratica encapsular isso em um ContentProviders
de forma que isso fique acessível para sua aplicação ou qualquer outra que precise acessar esses dados.

ContentProviders :

O ContentProviders é uma parte muito importante da arquitetura de um sistema android.
São eles quem provem os dados para a aplicação.

Uri :

No Android a comunicação entre aplicações e providers é feita através de Uri.
Cada ContentProviders expõe URIs públicas que identificam o seu conjunto de dados
e controla uma ou mais tabelas e expondo uma URI diferente para cada uma delas.

Uma Uri segue o formato: “content://{authority}/{table}/parametroN”
{authority} é o “nome” do ContentProviders
{table} é a tabela que esta acessando
{parametroN} são os parâmetros esperados pelo provider.

EX :
Todos os registros da tabela (Diretório): content://br.com.flexria.jobsdroid.jobsdroidprovider/jobs
Um único registro com id 1 (Item) : content://br.com.flexria.jobsdroid.jobsdroidprovider/jobs/1

Escrevendo seu ContentProvider :

Bom, vajamos na pratica com isso funciona.
Para escrever seu ContentProviders vc precisa basicamente de quatro coisas.

  • BaseColumns
  • ContentProviders
  • SQLiteOpenHelper
  • Registrar o provider no AndroidManifest.xml :

ContentProvider :

E a classe que provera os dados a nossa aplicação,
A classe abstrata ContentProvider exige a implementação dos métodos :

* query(Uri, String[], String, String[], String)- Recuperar dados.
* insert(Uri, ContentValues) – Insere um novo registro.
* update(Uri, ContentValues, String, String[]) – Atualiza um registro existente.
* delete(Uri, String, String[]) – Deleta um registro.
* getType(Uri) – Obter o MIME type do dado.

Dentro desses métodos iremos implementar a logica que encapsula esses comportamentos.
Isso é valido para cada uma das tabelas que o provider esteja acessando,
Como aqui só tenho uma tabela e esse é apenas um exemplo didático esta tudo na mesma classe,
porem isso pode ficar meio confuso com quando temos varias tabelas e comportamentos diferentes.
Uma solução para isso seria implementar o Pattern Strategy para encapsular cada comportamento.

O exemplo é bem básico porem gostaria de salientar três pontos
* Método getType – Informa que tipo de dado esta sendo requisitado, se é um item ou o diretório.
* Variável mMatcher – Usado para verificar qual Uri esta sendo acessada, se é um item ou o diretório.
* Constante AUTHORITY – Mesma identificação do provider utilizado no AndroidManifest.xml

Bom, como uma Imagem diz mais que mil palavras ai vai o código:

public class JobsDroidProvider extends ContentProvider {
  /**
  * Provider Authority
  */
  public static final String AUTHORITY = "br.com.flexria.jobsdroid.jobsdroidprovider";
  /**
  * DataBase Name
  */
  private static  final String DATABASE_NAME = "jobsdroid.db";
  /**
  * DataBase Version
  */
  private static  final int  DATABASE_VERSION = 1;
  /**
  * match for directory of jobs.
  */
  private  static final int MATCH_JOBS 		= 1;
  /**
  * match for sub-directory of a single jobs.
  */
  private  static final int MATCH_JOBS_ID 	= 2;
  /**
  * Log Tag
  */
  public static final String TAG = "JobsDroidProvider";
  /**
  * DBHelper instance
  */
  private DBHelper mHelper;
  /**
  * UriMatcher instance
  */
   private static final UriMatcher mMatcher;
   /**
   * Projection Map instance
   */
   private static HashMap<String, String> mProjection;
?
   static {
	mProjection = new HashMap<String, String>();
	mProjection.put(Jobs._ID, 	Jobs._ID);
	mProjection.put(Jobs.NAME, 	Jobs.NAME);
    }
?
    static {
    	mMatcher = new UriMatcher(UriMatcher.NO_MATCH);
	mMatcher.addURI(AUTHORITY, Jobs.TABLE, 		MATCH_JOBS);
	mMatcher.addURI(AUTHORITY, Jobs.TABLE+"/#", 	MATCH_JOBS_ID);
    }
?
?
    @Override
    public String getType(Uri uri) {
?
	switch (mMatcher.match(uri)) {
		case MATCH_JOBS:
			return Jobs.CONTENT_TYPE;
		case MATCH_JOBS_ID:
			return Jobs.CONTENT_ITEM;
		default:
			throw new IllegalArgumentException("Unsupported URI: " + uri);
	}
    }
?
?
    @Override
    public boolean onCreate() {
	mHelper = new DBHelper(getContext());
	return (mHelper != null);
    }
?
?
    @Override
    public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {
	String type = this.getType(uri);
	Log.i(TAG, "query " + uri.toString());
?
	Cursor cursor;
	SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
	SQLiteDatabase database = mHelper.getReadableDatabase();
	builder.setTables(Jobs.TABLE);
	builder.setProjectionMap(mProjection);
?
	if (type.equals(Jobs.CONTENT_ITEM)) {
		builder.appendWhere(this.whereItem(uri, selection));
	}
?
	if (sortOrder == null || sortOrder.length() == 0) {
		sortOrder = Jobs.NAME;
	}
?
	cursor = builder.query(database, projection, selection, selectionArgs,null, null, sortOrder);
	cursor.setNotificationUri(getContext().getContentResolver(), uri);
?
	return cursor;
    }
?
?
    @Override
    public Uri insert(Uri uri, ContentValues values) {
	this.getType(uri);
	Log.i(TAG, "insert " + uri.toString());
?
	SQLiteDatabase db = mHelper.getWritableDatabase();
	long rowId = db.insert(Jobs.TABLE, Jobs.NAME, values);
?
	if (rowId > 0) {
	    Uri itemUri = ContentUris.withAppendedId(Jobs.CONTENT_URI, rowId);
	    getContext().getContentResolver().notifyChange(itemUri, null);
	    return itemUri;
	}
?
	throw new RuntimeException("Failed to insert row into : " + uri);
    }
?
?
    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
	String type 		= this.getType(uri);
	SQLiteDatabase db 	= mHelper.getWritableDatabase();
?
	Log.i(TAG, "update " + uri.toString());
?
	if(type.equals(Jobs.CONTENT_ITEM)){
		selection = this.whereItem(uri, selection);
	}
?
      	int count = db.update(Jobs.TABLE, values, selection, selectionArgs);
	getContext().getContentResolver().notifyChange(uri, null);
?
	return count;
    }
?
?
    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
	String type 		= this.getType(uri);
	SQLiteDatabase db 	= mHelper.getWritableDatabase();
?
	Log.i(TAG, "delete " + uri.toString());
?
	if(type.equals(Jobs.CONTENT_ITEM)){
		selection = this.whereItem(uri, selection);
	}
?
	int count = db.delete(Jobs.TABLE, selection, selectionArgs);
	getContext().getContentResolver().notifyChange(uri, null);
	return count;
    }
?
    private String whereItem(Uri uri, String selection) {
	if(this.getType(uri).equals(Jobs.CONTENT_ITEM)){
		String where  =  Jobs._ID + " = " + uri.getPathSegments().get(1);
		if(!TextUtils.isEmpty(selection)){
			return where + " AND (" + selection + ")" ;
		}else{
			return where;
		}
	}
	return selection;
    }
?
    /**
    * Inner class Jobs
    */
    public static final class Jobs implements  BaseColumns {
    	    ....
    }
?
    /**
    * Inner class DBHelper
    */
    private static class DBHelper extends SQLiteOpenHelper {
       	....
    }
}

BaseColumns :

Inner class que representa a tabela do banco de dados,
estende a interface BaseColumns que possue as constantes _ID e _COUNT.
A classe Jobs possuí as constantes que representam as colunas da tabela e a Uri que a identifica

/**
* Inner class Jobs
*/
 public static final class Jobs implements  BaseColumns {
    public static final Uri CONTENT_URI = Uri.parse("content://"+ JobsDroidProvider.AUTHORITY + "/" + Jobs.TABLE);
?
    /**
    * The MIME type of a directory.
    */
    private static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.flexria." + Jobs.TABLE;
?
?
    /**
    * The MIME type of a single Jobs.
    */
    private static final String CONTENT_ITEM = "vnd.android.cursor.item/vnd.flexria." + Jobs.TABLE;
?
    /**
     * Table name
     */
    private static final String TABLE 	= "jobs";
?
    /**
     * Column name
     */
    public static final String 	NAME = "name";
}

SQLiteOpenHelper :

Inner class que é responsável pela criação e alteração do banco de dados,
A classe abstrata SQLiteOpenHelper exige a implementação dos métodos :

* onCreate() – Chamado quando o banco de dados for aberto pela primeira vez. Aqui que criaremos o banco de dados.
* onUpdate() – Chamado quando a versão do banco de dados muda. Quando uma nova versão da app for instalada.

Como nesse caso temos a primeira versão não tenho nada no método onUpdate.

/**
* Inner class DBHelper
*/
private static class DBHelper extends SQLiteOpenHelper {
    private static final String SQL_CREATE_TASKS = "CREATE TABLE " + Jobs.TABLE +
                     " (" +
                           Jobs._ID 	+ " INTEGER PRIMARY KEY AUTOINCREMENT," +
                           Jobs.NAME 	+ " TEXT" +
                       " );";
?
    DBHelper(Context context) {
       super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
?
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_TASKS);
    }
?
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
?
    }
}

AndroidManifest :

Depois disso podemos registrar o provider no AndroidManifest.xml


 android:authorities="br.com.flexria.jobsdroid.jobsdroidprovider"
			android:name=".JobsDroidProvider" />

Utilizando o Provider :

Feito isso ja podemos utilizar o provider na Activity,
quando utilizamos o método getContentResolver da Activity e passamos como parâmetro a Uri do conteúdo
o nosso provider é chamado e os métodos que implementamos podem ser utilizados.

EX :
* getContentResolver().query(JobsDroidProvider.Jobs.CONTENT_URI, null, null, null, null);

ContentValues values 	= new ContentValues();
values.put(JobsDroidProvider.Jobs.NAME, "Fabio B. Silva");
?
getContentResolver().query(JobsDroidProvider.Jobs.CONTENT_URI, null, null, null, null);
getContentResolver().insert(JobsDroidProvider.Jobs.CONTENT_URI, values);
?
?
Uri uri = ContentUris.withAppendedId(JobsDroidProvider.Jobs.CONTENT_URI, 1);
// uri = content://br.com.flexria.jobsdroid.jobsdroidprovider/jobs/1
getContentResolver().update(uri, values,null,null);
getContentResolver().delete(uri, null, null);

Em um próximo momento volto a falar sobre isso, mais por hora é só.

Espero que essa dicas possam ajudar aos que como eu estão começando com o android

Abraço e até a próxima….

Jan 26

Ajude a criar o livro Dominando OO

Escrito por Daniel Schmitz em 1, action, Action Script, AR, C#, Dica, Dicas, exemplo, Exemplos, for, IE, int, interface, Java, Livro, Livros, NaN, Notícias, O, on, Orientação, Orientação a Objetos, padrão, PHP, pt, Revisão, RIA, Ria’s Geral, UI @ 01 26th, 2011 | via http://flex.etc.br | Sem comentários
Daniel Schmitz
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Como meta para 2011 estaremos ampliando a abrangência dos nossos livros e o primeiro deles é “Dominando Orientação a Objetos”. Nesta fase, já conhecida pelos nossos fiéis leitores, vamos reunir dicas para que possamos criar um livro ainda melhor!

O principal foco deste livro é mostrar OO de uma forma inédita, sem aquela teoria chata que fez com que você nunca tenha entendido o que é interface ou pra que serve um padrão de projeto. Aliás o livro será recheado de exemplos, é tudo na prática! Os exemplos serão “servidos” em diversas linguagens, tais como PHP, Java, C#, Action Script, te dando a opção de conhecer outras linguagens e ampliando o “vocabulário” do programador.

O livro será impresso, possuirá por volta de 200 páginas e a previsão de venda é para março.

Então? O que estão esperando? Comentem e colaborem para tornar esta obra ainda melhor.

Jan 19

O Adobe Flex

Escrito por SamuelFacchinello em .NET, 1, 4, 6, Adobe, Adobe Flex, Air, Animações, app, AR, BI, blog, Blogs, C#, chrome, comunicação, Dica, Dicas, Download, efeito, efeitos, empresas, err, exemplo, Exemplos, explorer, Ferramenta, firefox, flash, flash builder, Flex, for, free, gc, Google, grátis, html, ide, IE, int, interface, internet, Java, labs, mg, Microsoft, O, on, online, Pessoal, PHP, player, Plugin, produto, programação, RIA, Ria’s Geral, S+S, serviço, Serviços, TAT, Tech, Tema, Teste, Treinamento, Tutoriais, UI, Vídeo, Vídeos, web, Webservice, window, windows, XML, XP @ 01 19th, 2011 | via http://desenvolvendoemflex.blogspot.com/ | Sem comentários
SamuelFacchinello
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá!!

Bom, vamos começar do começo!!! Aqui vou explicar um pouco sobre o Adobe Flex e suas maravilhas.
Començando…

  • O que é o Adobe FLEX??
É uma linguagem de programação baseada na plataforma Flash da Adobe (mas não se engane, o Flex não é para fazer animações com “linha de tempo”, Adobe Flex é para fazer Sistemas Web).
Hoje, o flex não é uma ferramenta muito conhecida entre as empresas que utilizam sistemas na web, mas isso já está mudando, graças a empresas e/ou pessoas que estudam mais e mais para sempre inovar com seus produtos e serviços.

  • O que o Flex tem de bom?

O Flex é famoso pela sua rica interface gráfica, pela sua facilidade de aprendizado, também pela facilidade de comunicação com outras linguagens (JAVA, PHP, etc) seja por Xml, WebService, RemoteObject, etc. Ele tem efeitos e transições que deixam o usuário final maravilhado com a interface das aplicações desenvolvidas com essa ferramenta.

  • Como começo??

É muito fácil de aprender a desenvolver em Flex, para começar você deve fazer o download do Flash Builder (versão teste por 60 dias) aqui (você também pode solicitar uma licença estudante para não comerciais aqui).
É só instalar e começar a se divertir. :D
*Para rodar as aplicações desenvolvidas em Flex, precisa de um navegador (firefox, chrome, ie, opera, etc) e o plugin do FlashPlayer instalado.
A própria Adobe disponibiliza um treinamento grátis (em inglês) das funções básicas do Flex, esses vídeos podem ser visto aqui.

  • Exemplos de aplicações

A muitos exemplos espalhados pela internet, mas existe o Tour de Flex que pode ser instalado logo abaixo (versão em AIR) ou então clicar aqui e ver a versão online.

<p>&amp;amp;amp;lt;p&amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;Con&amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;</p>

  • Conclusão

A principio é isso pessoal, em breve novos posts com dicas e tutoriais.
Qualquer dúvida é só entrar em contato.

Abraço, Obrigado.

« Entradas anteriores | Entradas recentes »

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2791 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com