Personalizar aplicações J2ME - Usar Canvas ou CustomItem?

Boa tarde pessoal.

Já tem algum tempo que estou estudando sobe J2ME. No entanto estou querendo desenvolver aplicações personalizadas. Dei uma olha em Canvas e CustomItem. Consegui fazer um TextField e um Botão usando canvas, deu um pouco de trabalho fazer o ScrollBar então nem se fala ainda estou tendo problemas rssss. Depois estudei CustomItem e consegui fazer os mesmos botões e textfield customizados.

Agora pergunto para vocês o que vocês preferem para desenvolver suas aplicações Customizadas CustomItem ou Canvas?

Acho que cada caso é um caso, porem creio que quem já entenda mais de j2me acabe migrando naturalmente para o canvas. Eu mesmo comecei utilizando CustomItem por ser mais facil, depois passei para Canvas por me dar total liberdade na tela. Já que o customItem por ser inserido em um form do lcdui não permite grande personalização, como alterações de fundo ou posicionamento.

Att
Ricoldi

Minha ideia ao desenvolver componentes personalizados. E que minha aplicação tenha a mesma aparência em vários dispositivos inclusive o PALM. Pois usando a API padrão J2ME em cada dispositivo os componentes ficam diferêntes

Mesma aparencia?
Então só canvas poderá lhe ajudar!

Vou dizer que dá um pouquinho mais de trabalho, só que o resultado final quando bem feito, fica muito superior. Afinal quanto mais lapidada uma pedra melhor ela fica!

Abraços
Ricoldi

Estava vendo o LWUIT. Alguém já testou ele? Sabe se ele bom?. Andei pesquisando no Google, vi algumas pessoas falando que ele deixa a aplicação lenta. E verdade isso?

O Lwuit eu testei e acho que não compensa, testei em aparelhos N95 (Que não são fracos) e mesmo assim ficou pesado, como o Boone disse “Não condiz com a realidade brasileira de celulares” (Ou algo assim!).

Lembra do que falei lá encima, o pessoal fala do lwuit porque já tem tudo pronto, mas essa facilidade tem um alto custo!
Se quer uma coisa boa de verdade, minha opinião, faça na mão.

Att
Ricoldi

[quote]O Lwuit eu testei e acho que não compensa, testei em aparelhos N95 (Que não são fracos) e mesmo assim ficou pesado, como o Boone disse “Não condiz com a realidade brasileira de celulares” (Ou algo assim!).

Lembra do que falei lá encima, o pessoal fala do lwuit porque já tem tudo pronto, mas essa facilidade tem um alto custo!
Se quer uma coisa boa de verdade, minha opinião, faça na mão.

Att
Ricoldi [/quote]

Obrigado Ricoldi pela ajuda. Acabei de testar o Lwuit aqui vi que ele realmente deixa a aplicação lenta, Nem no emulador do Palm não funciona. E como você mesmo disse fazer tudo na mão vai ser melhor. Até pq criei dois componentes na mão e obtive sucessos. Por enquanto não irei fazer no canvas os componentes e sim usando CustomItem, pois inicialmente estou achando mais simples, sendo assim pelo menos os componentes vai ficar padrão em diversas plataformas. Assim que tiver um pouco mais de experiências passarei a usar Canvas.

Abraços

Paulo Vinícius

Tá certo,

Abraços e boa sorte.
Ricoldi

Paulo, se você está com disposição de quebrar a cabeça criando novos componentes do zero, tem tempo para isso e quer um aplicativo personalizado em detalhes então recomendo utilizar o Canvas.

É bacana ir criando uma API própria e medida que você vai fazendo componentes novos. Aí vá adicionando seus componentes na sua API, logo você terá tudo pronto. Tenho feito isso e minha API já tem botões, menu de botões, submenu de botões, scrollbar, textfield, gauge, fontes personalizadas, listas, abas, etc. Com o tempo vou expandindo-a. Fiz uam classe para controlar esses itens. Ta bem bacana e utiliza pouco do processador se coparado ao LWUIT por exemplo… LWUIT é muito pesado e vale mais você criar tudo. O pessoa fala muito do LWUIT, paga pau para ele por que tem tudo pronto, não dá tanto trabalho e realmente ele faz coisas incríveis. Masss tem um preço alto como o pessoal comentou aqui.

[quote]Paulo, se você está com disposição de quebrar a cabeça criando novos componentes do zero, tem tempo para isso e quer um aplicativo personalizado em detalhes então recomendo utilizar o Canvas.

É bacana ir criando uma API própria e medida que você vai fazendo componentes novos. Aí vá adicionando seus componentes na sua API, logo você terá tudo pronto. Tenho feito isso e minha API já tem botões, menu de botões, submenu de botões, scrollbar, textfield, gauge, fontes personalizadas, listas, abas, etc. Com o tempo vou expandindo-a. Fiz uam classe para controlar esses itens. Ta bem bacana e utiliza pouco do processador se coparado ao LWUIT por exemplo… LWUIT é muito pesado e vale mais você criar tudo. O pessoa fala muito do LWUIT, paga pau para ele por que tem tudo pronto, não dá tanto trabalho e realmente ele faz coisas incríveis. Masss tem um preço alto como o pessoal comentou aqui. [/quote]

Estou disposto mesmo a criar componentes do zero principalmente para o motivo que eu quero que é fazer minha aplicação funcionar em diversos dispositivos diferentes. Uma coisa que estou quebrando a cabeça para fazer e o ScrollBar que não esta dando certo de forma alguma ja até olhei alguns exemplos do site da Nokia e não obtive sucesso.

Como você fez seu ScrollBar?

Foi o mais complicado de construir. No construtor dele eu atribuo a posição x e y onde ele vai ficar na tela, a altura que ele terá, a ltura total q a tela tem e a quantidade de pixels que a tela deve subir ou descer quando eu prescionar o botão UP ou DOWN.

Com essas informações eu construo a barrinha que fica cheia. Faço uma proporção entre a altura total da tela e a altura do scrollbar para ter a altura da barrinha cheia:

Altura total da tela -> 100%
Altura do scrollbar -> Altur da barrinha

Daí eu teno: Altur da barrinha = (Altura do scrollbar*100)/Altura total da tela;

Da mesma forma calculo quantos pixels a imagem da scrollbar vai descer. Calculo isso fazendo uma proporão em relação ao valor que a tela vai descer, esse valor foi atribuido no construtor.

Calculados os tamanhos e quantidades de pixel a descer ou subir. É só construir aimagem da Scrollbar e posicionar e exibir na tela e programar para mover-se a cada vez que a teclar UP ou Down for prescionada.

[quote]Foi o mais complicado de construir. No construtor dele eu atribuo a posição x e y onde ele vai ficar na tela, a altura que ele terá, a ltura total q a tela tem e a quantidade de pixels que a tela deve subir ou descer quando eu prescionar o botão UP ou DOWN.

Com essas informações eu construo a barrinha que fica cheia. Faço uma proporção entre a altura total da tela e a altura do scrollbar para ter a altura da barrinha cheia:

Altura total da tela -> 100%
Altura do scrollbar -> Altur da barrinha

Daí eu teno: Altur da barrinha = (Altura do scrollbar*100)/Altura total da tela;

Da mesma forma calculo quantos pixels a imagem da scrollbar vai descer. Calculo isso fazendo uma proporão em relação ao valor que a tela vai descer, esse valor foi atribuido no construtor.

Calculados os tamanhos e quantidades de pixel a descer ou subir. É só construir aimagem da Scrollbar e posicionar e exibir na tela e programar para mover-se a cada vez que a teclar UP ou Down for prescionada. [/quote]

Obrigado JavaES foi de grande ajuda sua dica de como construir o ScrollBar. Não fiz examente como vc falou mais deu certo o ScrollBar so tive problema ao testar no PALM onde aquela barrinha ficou grande a ltura dela. Vc teve este problema com PALMs?

Nos Palms eu não testei, mas funciona em todos os outros aparelhos onde instalei, inclusive nos BlackBerries. Como você fez?

Teste no black barry tb fiz, mais tb tive o mesmo problema do PALM a solução que encontrei foi criar uma constante ai eu verifico a resolução do dispositivo que esta sendo usado no momento ai efetuo os calculos necessários de acordo com a resolução do dispositivo. Ai consegui fazer o scrollBar funcionar de forma correta

Mais uma vez obrigado pela sua ajuda

Galera, como vcs fizeram os campos de texto?
E os eventos dos botões?