Menu carrossel

Algué sabe como criar um menu no estilo carrossel como o deste exemplo sem utilizar o LWUIT ou o J2ME Polish?

Comecei a criá-lo do zero, consegui posicionar or ícones perfeitamente, porém, fazer este efeito de transição é muito difícil, alguém já viu um código que faça um menu como este? Algum tutorial, exemplo, etc?

Fala JavaES, blz?

Então eu até criei um menu carrossel mais ele é em linha, não diminui o icone e nem tem efeitos de transição. não posso dizer que ficou ruim, pois é bem leve e dinamico em relação a tamanho de telas de celular, criei um igual o do N95, aquele que tem a forma de uma parabola em U.

Mas esse ai seria bem show, deve ser pesado de ficar redimensionando a tela, e fora que redimensionar eu não consigo deixar com bordas transparentes.

A quantas anda sua tentativa?

Abraços
Ricoldi

Iaê Ricoldi, legal cara…deve ter ficado bacana o menu q vc fez, alias, como o fez?

Eu continuo tentando, ja bolei um esquema para posicionar os ícones de forma circular na tela independente do tamanho da tela, já tenho um algoritmo para mudar o tamnho das imagens (do ícones). Essas imagens ficam com as bordas serrilhadas, mas não tem problema pois só as usarei durante a transição, quand oestiver parado uso a imagem original.

Terias como compartilhar o algoritmo para redimensionar as imagens? :smiley:
Achei show de bola esse menu, eu mesmo já fiz dois tipos
Aqueles comuns, com linhas e colunas, e um horizontal, que apenas move para a esquerda ou direita.
Queria fazer o efeito de slide, mas não faço nem idéia :oops:

Para redimensionar tem varios algoritimos:

http://developers.sun.com/mobility/reference/techart/design_guidelines/image_resizing.html

private Image resizeImage(Image src) {
      int srcWidth = src.getWidth();
      int srcHeight = src.getHeight();
      Image tmp = Image.createImage(screenWidth, srcHeight);
      Graphics g = tmp.getGraphics();
      int ratio = (srcWidth << 16) / screenWidth;
      int pos = ratio/2;

      //Horizontal Resize        

      for (int x = 0; x < screenWidth; x++) {
          g.setClip(x, 0, 1, srcHeight);
          g.drawImage(src, x - (pos >> 16), 0, Graphics.LEFT | Graphics.TOP);
          pos += ratio;
      }

      Image resizedImage = Image.createImage(screenWidth, screenHeight);
      g = resizedImage.getGraphics();
      ratio = (srcHeight << 16) / screenHeight;
      pos = ratio/2;        

      //Vertical resize

      for (int y = 0; y < screenHeight; y++) {
          g.setClip(0, y, screenWidth, 1);
          g.drawImage(tmp, 0, y - (pos >> 16), Graphics.LEFT | Graphics.TOP);
          pos += ratio;
      }
      return resizedImage;

  }//resize image    

http://www.coderanch.com/t/228899/Java-Micro-Edition/Mobile/we-resize-image-j-me

private Image createThumbnail(Image image)
{
   int sourceWidth = image.getWidth();
   int sourceHeight = image.getHeight();
   int thumbWidth = 64;
   int thumbHeight = -1;
 
   if (thumbHeight == -1)
      thumbHeight = thumbWidth * sourceHeight / sourceWidth;
 
   Image thumb = Image.createImage(thumbWidth, thumbHeight);
   Graphics g = thumb.getGraphics();
 
   for (int y = 0; y < thumbHeight; y++)
   {
      for (int x = 0; x < thumbWidth; x++)
      {
        g.setClip(x, y, 1, 1);
        int dx = x * sourceWidth / thumbWidth;
        int dy = y * sourceHeight / thumbHeight;
        g.drawImage(image, x - dx, y - dy, Graphics.LEFT | Graphics.TOP);
      }
   }
 
   Image immutableThumb = Image.createImage(thumb);
 
   return immutableThumb;
}

mais em: http://www.google.com.br/search?q=resize+image+j2me&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

O que eu fiz foi contar quantos objetos cabem na tela que o aplicativo esta rodando, ai não preciso redimensionar as imagens do menu. de resto deve estar igual o seu, tenho a classe FormCarrossel que extende canvas e tem um vector de "itens de carrossel", cada item de carrossel tem sua imagem, sua descrição e talz, ai quando eu vou usar esse form eu extendo ele e vou dando addItem(), igual se faz com itens em um Form normal. Certo?

Abraços.

Valeu brother. É assim mesmo que fiz o meu menu tbm, da um addItem com usa imagem e descrição, mas no menu horizontal que fiz, deixo os itens que não estão selecionados com um pouco de transparencia, mas vou fazer com as imagens redimensionadas tbm :smiley:

E alguém ja conseguiu o efeito slide?

[quote=j0nny]Valeu brother. É assim mesmo que fiz o meu menu tbm, da um addItem com usa imagem e descrição, mas no menu horizontal que fiz, deixo os itens que não estão selecionados com um pouco de transparencia, mas vou fazer com as imagens redimensionadas tbm :smiley:

E alguém ja conseguiu o efeito slide?[/quote]

Eu não sei como redimensionar e deixar com transparencia, sem usar clipping (Acho uma pequena gambiarra) . como vai fazer isso?

Cara, por enquanto estou apenas usando transparencia, segue o método…

public final static Image transparentImage(Image img, int percent)
	{
		try
		{
    		int largura = img.getWidth();
    		int altura = img.getHeight();
    		percent = 100 - percent;

    		int[] rgb = new int[altura * largura];
    		
    		img.getRGB(rgb, 0, largura, 0, 0, largura, altura);
    		
    		for(int i = 0; i < rgb.length; i++)
    			rgb[i] = (((percent * ((rgb[i] & 0xFF000000) >>> 24)) / 100) * 0x1000000) + (rgb[i] & 0x00FFFFFF);
    		
    		return Image.createRGBImage(rgb, largura, altura, true);
    	}
    	catch(Exception e) {
    		return null;
    	}
	}

Então para evitar muito processamento a cada paint(), criei um outro vetor com as imagens com transparencia, e as adiciono no metodo addItem(Image img, String text);

Vou olhar esse codigo… vlw a postagem…

:thumbup: