Android Open Source - jmjuanesFramework Ui






From Project

Back to project page jmjuanesFramework.

License

The source code is released under:

MIT License

If you think the Android project jmjuanesFramework listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package jmjuanes.util;
//from w ww . j ava 2s  . c  o  m
import java.util.ArrayList;

import jmjuanes.Config;
import android.graphics.Bitmap;
import android.graphics.Canvas;

public class Ui
{
  //Anchura por defecto
  private static int def_anc = 400;
  
  //Si ya se han iniciado
  private static boolean calculado = false;
  
  //Anchura y algura de la pantalla
  public static int width, height;
    
  //Proporcion
  public static float scale;
  
  //Clase para la zona de juego
  public static class Zone
  {
    //Anchura y altura
    public static int width, height;
    
    //Posicion
    public static int px, py;
  }
  
  //Clase para el fondo
  public static class Background
  {
    //Anchura y altura
    public static int width, height;
    
    //Posicion
    public static int px, py;
  }
  
  //Constructor
  public static void Start(int anc, int alt)
  {
    //Comprobamos si ya los hemos calculado
    if(calculado == false)
    {
      //Guardamos la altura y la anchura
      height = alt;
      width = anc;
      
      //Creamos la nueva escala
      scale = (float) width/def_anc;
      
      //Dimension de la zona
      Zone.width = (int)( 350*scale);
      Zone.height = (int)( 450*scale);
      
      //Dimension del fondo
      Background.width = (int)( 400*scale);
      Background.height = (int)( 800*scale);
      
      //Comprobamos si es landscape
      if(Config.Mode == "landscape")
      {
        //Creamos la nueva escala
        scale = (float) height/def_anc;
        
        //Dimension de la zona
        Zone.width = (int)( 450*scale);
        Zone.height = (int)( 350*scale);
        
        //Dimension del fondo
        Background.width = (int)( 800*scale);
        Background.height = (int)( 400*scale);
      }
      
      //Posicion de la zona
      Zone.px = (int)( anc/2 - Zone.width/2);
      Zone.py = (int)( alt/2 - Zone.height/2);
      
      //Posicion del fondo
      Background.px = (int)( anc/2 - Background.width/2);
      Background.py = (int)( alt/2 - Background.height/2);
    }
    
    //Marcamos para que ya no se puedan volver a calcular
    calculado = true;
  }
  
  //Funcion que situa una imagen
  public static void DrawImgScale(Canvas canvas, Bitmap img, int px, int py)
  {
    if(img != null)
    canvas.drawBitmap(img, px*Ui.scale, py*Ui.scale, null);
  }
  
  //Funcion que situa una imagen en la zona
  public static void DrawZoneImg(Canvas canvas, Bitmap img, int px, int py)
  {
    if(img != null)
    canvas.drawBitmap(img, Ui.Zone.px + px*Ui.scale, Ui.Zone.py + py*Ui.scale, null);
  }
  
  //Funcion que situa una imagen sin aplicar la escala
  public static void DrawImg(Canvas canvas, Bitmap img, int px, int py)
  {
    if(img != null)
    canvas.drawBitmap(img, px, py, null);
  }
  
  //Funcion que situa una imagen de fondo
  public static void DrawBackgroundImg(Canvas canvas, Bitmap img)
  {
    if(img != null)
    canvas.drawBitmap(img, Ui.Background.px, Ui.Background.py, null);
  }
  
  public static boolean Touch(int x, int y, int px, int py, int anc, int alt)
  {
    //Esta funci?n devuelve true si el punto (x,y) est? dentro del rect?ngulo de v?rtices (px, py)
    // y de anchura anc y altura alt
    
    if( px <= x && x <= px + anc)
    {
      if( py <= y && y <= py + alt)
      {
        //Si ambos son ciertos, decimos que si que ha pulsado
        return true;
      }
    }
    
    //Devolvemos false
    return false;
  }
  
  public static boolean TouchScale(int x, int y, int px, int py, int anc, int alt)
  {
    //Esta funci?n devuelve true si el punto (x,y) est? dentro del rect?ngulo de v?rtices (px, py)
    // y de anchura anc y altura alt
    
    if( px*Ui.scale <= x && x <= px*Ui.scale + anc*Ui.scale)
    {
      if( py*Ui.scale <= y && y <= py*Ui.scale + alt*Ui.scale)
      {
        //Si ambos son ciertos, decimos que si que ha pulsado
        return true;
      }
    }
    
    //Devolvemos false
    return false;
  }
  
  public static boolean TouchZone(int x, int y, int px, int py, int anc, int alt)
  {
    //Esta funci?n devuelve true si el punto (x,y) est? dentro del rect?ngulo de v?rtices (px, py)
    // y de anchura anc y altura alt dentro de la zona
    
    if( Ui.Zone.px + px*Ui.scale <= x && x <= Ui.Zone.px + px*Ui.scale + anc*Ui.scale)
    {
      if( Ui.Zone.py + py*Ui.scale <= y && y <= Ui.Zone.py + py*Ui.scale + alt*Ui.scale)
      {
        //Si ambos son ciertos, decimos que si que ha pulsado
        return true;
      }
    }
    
    //Devolvemos false
    return false;
  }
  
  public static void NumAImg(Canvas canvas, ArrayList<Bitmap> img, int num, int px, int py, int dir, int digits)
  {
    //Esta funcion pasa un nuero num a imagen, provenientes de un vector de imagenes
    //En una posicion px y py de la pantalla (SIN ESCALAR)
    
    //Descomponemos el entero en digitos
    ArrayList<Integer> n = new ArrayList<Integer>();
    
    //Contador de digitos
    int dig = 0;
    
    //Si el numero es 0
    if(num == 0)
    {
      //Lo ponemos tal cual
      n.add(0);
      
      //Hay un digito
      dig = 1;
    }
    else
    {
      //Mientras el numero no sea 0
      while( num != 0)
      {
        //Ponemos el resto
        n.add((int) num%10);
        
        //Quitamos la ultima cifra
        num = (int) num/10;
        
        //Aumentamos el contador de digitos
        dig++;
      }
    }
    
    //Comprobamos los digitos
    if(dig < digits)
    {
      //Sumamos tantos digitos como falten
      while(dig < digits)
      {
        //Ponemos un 0 al principio
        n.add(dig, 0);
        
        //Aumentamos los digitos
        dig++;
      }
    }
    
    //Numero actual
    int pos = 0;
    
    //Anchura de los numeros
    int anc = img.get(0).getWidth();
    
    //Dependiendo de la direccion
    if(dir == 1)
    {
      for(int i = 0; i < dig; i++)
      {
        //Cogemos el numero
        pos = n.get(dig - i - 1);
        
        //Lo situamos
        Ui.DrawImg(canvas, img.get(pos), px + i*anc, py);
      }
    }
    else
    {
      for(int i = 0; i < dig; i++)
      {
        //Cogemos el numero
        pos = n.get(dig - i - 1);
        
        //Lo situamos
        Ui.DrawImg(canvas, img.get(pos), px - (dig - i)*anc, py);
      }
    }
    
  }
}




Java Source Code List

jmjuanes.Config.java
jmjuanes.GameMain.java
jmjuanes.Screen.java
jmjuanes.core.GameData.java
jmjuanes.core.GameFrames.java
jmjuanes.core.GameLoad.java
jmjuanes.core.GameThread.java
jmjuanes.core.GameTouch.java
jmjuanes.core.GameView.java
jmjuanes.util.Mathm.java
jmjuanes.util.Ui.java