/* * This file is part of DroidClic * * DroidClic is copyright 2012 by * Marc Alier Forment, * Maria Jos� Casany Guerrero, * Enric Mayol * * UPC Students involved in this project: * * Previous version and legacy code: * --------------------------------- * PUJOL BENET, MIRIAM * * * Project management * ------------------ * ALMA SERRANO, ALBERT * CLAVER ARGUDO, MARIA * JIMENEZ TARRES, VICTOR * CORCHADO MERINO, JUAN CARLOS * JUAN JANE, ANDREU * MENES ROUCO, MARTIN * ORTEGA GOMEZ, CRISTIAN * PURCET SOTO, SERGI * RAMOS GONZALEZ, RICARDO * SOLE MORERA, DANIEL * * * Research & support * -------------------- * ALBALATE FERNANDEZ, AIDA * CABRE JUAN, ALBERT * CANDON ARENAS, HECTOR * ELBAILE SERRA, ABEL * GONZALEZ DE PABLO, BORJA * IGLESIAS LOPEZ, OSCAR * MARTINEZ LOPEZ, SERGIO * PEREZ PLANAS, ORIAC * SANCHEZ MARCOS, IVAN * TORNE GOZALBO, ORIOL * * * Development * ----------- * Lead developers * ALBALATE FERNANDEZ, AIDA * COSTA MANSILLA, GERARD * GONZALEZ DE PABLO, BORJA * Developers: * ALEMANY FONT, ALBERT * ALVAREZ JUSTE, XAVIER * ALVAREZ MORALES, FERRAN * BARRERO MARTINEZ, LINDSAY * BENITEZ VALLS, ALBERT * BERRUEZO MARTINEZ, DAVID * BRAMON DEVANT, MARC * BRIGUELLI DA SILVA, LUIS FERNANDO * CABRE JUAN, ALBERT * CANDON ARENAS, HECTOR * CAPEL CATALAN, VICTOR * CLAVER ARGUDO, MARIA * DE PAULA DE PUIG GUIXE, FRANCESC * DIEZ RUIZ, ALBERT * ELBAILE SERRA, ABEL * FARRE GONZALEZ, PAU * GARCIA GARCIA, XAVIER * HURTADO OBIOLS, CRISTINA * MARTINEZ DIAZ, ARTURO * MARTINEZ LOPEZ, SERGIO * MENES ROUCO, MARTIN * MONTSERRAT GARCIA, EDUARD * ORTIZ GRIMAU, XAVIER * OSORIO ALVAREZ, DAVID * PASCUAL VAZQUEZ, PABLO * PEDRAZA GUTIERREZ, M. MERCEDES * PEREZ PLANAS, ORIAC * RODRIGUEZ TORRES, MIREIA * SANCHEZ MARCOS, IVAN * SEGARRA RODA, EDUARD * SELLES FEITO, MANEL * SOLER PASCUAL, GERARD * SUBIRATS SALVANS, JOAN * * * Design & usability * -------------------- * Lead designer: * LEGORBURU CLADERA, I�IGO * Designers: * OTAL RODRIGUEZ, DANIEL * PASCUAL VAZQUEZ, PABLO * SEGARRA RODA, EDUARD * SOLER PASCUAL, GERARD * SUBIRATS SALVANS, JOAN * VIDAL PASTALLE, MARIA * * * Testing, evaluation & audit * --------------------------- * Lead tester: * NAVARRO JIMENEZ, GERMAN * ALEMANY FONT, ALBERT * Testers: * ALVAREZ MORALES, FERRAN * BENITEZ VALLS, ALBERT * CAPEL CATALAN, VICTOR * MONTSERRAT GARCIA, EDUARD * ORTIZ GRIMAU, XAVIER * SANCHEZ CORREDOR, MONTSERRAT * * * Documentation, communication & broadcast * ---------------------------------------- * Lead documentator: * ALVAREZ JUSTE, XAVIER * SANCHEZ CORREDOR, MONTSERRAT * Documentators: * BARRERO MARTINEZ, LINDSAY * GARCIA GARCIA, XAVIER * NAVARRO JIMENEZ, GERMAN * OSORIO ALVAREZ, DAVID * TORNE GOZALBO, ORIOL * * * DroidClic is copyright 2012 by * Universitat Politecnica de Catalunya http://www.upc.edu * Contact info: * Marc Alier Forment granludo @ gmail.com or marc.alier @ upc.edu * * DroiClic is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Droidlic is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with DroidClic. If not, see <http://www.gnu.org/licenses/>. * * DroidClic is based on the Software JClic by Francesc Busquets * http://clic.xtec.cat/es/jclic/ * */ package pfc.Activitats; import java.util.ArrayList; import java.util.Random; import java.util.Vector; import pfc.Descompressor.Descompressor; import pfc.Jclic.R; import pfc.Parser.Parser; import android.annotation.TargetApi; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.pm.ActivityInfo; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.CountDownTimer; import android.util.Log; import android.view.Display; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TableLayout; import android.widget.TextView; @TargetApi(8) public class SimpleAssociation extends Activity { private Constants CO = Constants.getInstance(); private String path = "/sdcard/tmp/jclic/"; private int newWidth; private int newHeight; private int width; private int height; // TODO esto es del menu y se quitara private static final int MENU_ANT = 0; private static final int MENU_SEG = 1; private static final int MENU_SOLUCIO = 2; private static final int MENU_AJUDA = 3; private static final int MENU_INICI = 4; private static final int MENU_SORTIR = 5; Sounds sound; private TextView ttiempo = null; private TextView aciertos = null; private TextView intentos = null; private ProgressBar tiempo = null; private Vector<BitmapDrawable> vecDraw = null; private Vector<TextView> plafoA = new Vector<TextView>(CO.cols * CO.rows); private Vector<TextView> plafoB = new Vector<TextView>(CO.cols * CO.rows); private Vector<TV_ContAlternatiu> contAlternatiu = new Vector<TV_ContAlternatiu>( CO.cols * CO.rows); public class TV_ContAlternatiu extends TextView { boolean esImatge; public TV_ContAlternatiu(Context context) { super(context); } boolean getEsImatge() { return esImatge; } void setEsImatge(boolean b) { esImatge = b; } } private int maxTime = Parser.getActivitats().get(CO.activitatActual) .getTempsMax(); private int maxIntents = Parser.getActivitats().get(CO.activitatActual) .getIntentMax(); private boolean TimeCountDown = Parser.getActivitats() .get(CO.activitatActual).getTimeCutDown(); private boolean IntentCountDown = Parser.getActivitats() .get(CO.activitatActual).getIntentCutdown(); private ArrayList<ArrayList<Integer>> idPos = new ArrayList<ArrayList<Integer>>(); private TextView seleccionat = null; private ArrayList<Integer> correspondencies; private ArrayList<Integer> correspondenciesB; int contador = 0; // Comptador per als intents. int contadorTemps = 0; // Comptador per al temps. private CountDownTimer timer; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_association); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); sound = new Sounds(getApplicationContext()); aciertos = (TextView) findViewById(R.id.editAciertos); intentos = (TextView) findViewById(R.id.editIntentos); ttiempo = (TextView)findViewById(R.id.tiempo); tiempo = (ProgressBar) findViewById(R.id.progressTime); tiempo.setMax(maxTime); tiempo.setProgress(0); if (maxTime == 0) { tiempo.setVisibility(tiempo.INVISIBLE); ttiempo.setVisibility(ttiempo.INVISIBLE); } Button bMenu = (Button) findViewById(R.id.menu); final Context aC = this; bMenu.setOnClickListener(new OnClickListener() { public void onClick(View v) { Dialog dialog = new Dialog(aC, R.style.Dialog); dialog.setContentView(R.layout.menu_clic); dialog.setCanceledOnTouchOutside(true); dialog.show(); MenuActivitats ma = new MenuActivitats(timer); ma.butsMenu(dialog, aC, vecDraw); } }); try { agafarDades(); ArrayList<Integer> row = new ArrayList<Integer>(); row.add(R.id.pos1); row.add(R.id.pos2); row.add(R.id.pos3); row.add(R.id.pos4); idPos.add(row); row = new ArrayList<Integer>(); row.add(R.id.pos5); row.add(R.id.pos6); row.add(R.id.pos7); row.add(R.id.pos8); idPos.add(row); row = new ArrayList<Integer>(); row.add(R.id.pos9); row.add(R.id.pos10); row.add(R.id.pos11); row.add(R.id.pos12); idPos.add(row); row = new ArrayList<Integer>(); row.add(R.id.pos13); row.add(R.id.pos14); row.add(R.id.pos15); row.add(R.id.pos16); idPos.add(row); row = new ArrayList<Integer>(); row.add(R.id.pos17); row.add(R.id.pos18); row.add(R.id.pos19); row.add(R.id.pos20); idPos.add(row); // agafem els noms row = new ArrayList<Integer>(); row.add(R.id.pos21); row.add(R.id.pos22); row.add(R.id.pos23); row.add(R.id.pos24); idPos.add(row); row = new ArrayList<Integer>(); row.add(R.id.pos25); row.add(R.id.pos26); row.add(R.id.pos27); row.add(R.id.pos28); idPos.add(row); row = new ArrayList<Integer>(); row.add(R.id.pos29); row.add(R.id.pos30); row.add(R.id.pos31); row.add(R.id.pos32); idPos.add(row); row = new ArrayList<Integer>(); row.add(R.id.pos33); row.add(R.id.pos34); row.add(R.id.pos35); row.add(R.id.pos36); idPos.add(row); row = new ArrayList<Integer>(); row.add(R.id.pos37); row.add(R.id.pos38); row.add(R.id.pos39); row.add(R.id.pos40); idPos.add(row); // fer les dos quadricules initQuadricules(); // inicialitzar onClickslisteners sound.playStart(); // listeners de menus if (maxTime != 0) { timer = new CountDownTimer(maxTime * 1000, 1000) { @Override public void onTick(long arg0) { contadorTemps++; tiempo.setProgress(contadorTemps); setMissatges(); } @Override public void onFinish() { contadorTemps++; contadorTemps++; tiempo.setProgress(contadorTemps); setMissatges(); } }.start(); } } catch (Exception e) { Log.d("Error", "catch SimpleAssociation: " + e); e.printStackTrace(); } } private void agafarDades() { CO.tl = (TableLayout) findViewById(R.id.tl); // agafarCaselles(); // CO.intentMax = // CO.miss = (TextView) findViewById(R.id.missatge); // CO.missCorrectes = (TextView) findViewById(R.id.editAciertos); // CO.cas1 = (TextView) findViewById(R.id.cas1); CO.name = (TextView) findViewById(R.id.titulo); // CO.miss.setTextColor(Color.WHITE); // CO.missCorrectes.setTextColor(Color.WHITE); // CO.name.setTextColor(Color.WHITE); // CO.cas1.setTextColor(Color.WHITE); CO.p1 = "<buit>"; CO.p2 = "<buit>"; if (Parser.getActivitats().elementAt(CO.activitatActual).getName() != null) CO.name.setText(Parser.getActivitats() .elementAt(CO.activitatActual).getName()); else CO.name.setText("Activitat JClic"); if (CO.rows == 1) CO.tl.setPadding(0, 100, 0, 0); else if (CO.rows == 2) { CO.tl.setPadding(0, 30, 0, 0); } else CO.tl.setPadding(0, 0, 0, 0); if (CO.colorBG != null) { CO.bg = Puzzle.agafarColor(CO.colorBG); } else CO.bg = Color.BLACK; if (CO.colorFG != null) { CO.fg = Puzzle.agafarColor(CO.colorFG); } else CO.fg = Color.WHITE; } private void setMissatges() { final Context aC = this; Dialog dialog = new Dialog(aC, R.style.Dialog); dialog.setContentView(R.layout.menu_clic); dialog.setCanceledOnTouchOutside(true); MenuActivitats ma = new MenuActivitats(timer); ma.butsMenu(dialog, aC, vecDraw); TextView textFinal = (TextView) dialog.findViewById(R.id.tMenuClic); if (CO.correcte == CO.cols*CO.rows) { // Hem acabat el joc sound.playFinished_ok(); if (maxTime != 0) { timer.cancel(); } if (Parser.getActivitats().elementAt(CO.activitatActual) .getMissatgeFi() != null) { textFinal.setText(Parser.getActivitats() .elementAt(CO.activitatActual).getMissatgeFi()); } else { textFinal.setText("Joc finalitzat!"); // CO.miss2.setText("Joc finalitzat!"); } dialog.show(); } else if ((CO.correcte != CO.casIni && maxIntents != 0 && maxIntents == contador) || contadorTemps == maxTime && maxTime != 0) { sound.playFinished_error(); timer.cancel(); if (maxTime != 0 && contadorTemps == maxTime) { textFinal.setText("S'ha acabat el temps!"); } else { textFinal.setText("Has superat els intents maxims!"); } dialog.show(); } else { if (Parser.getActivitats().elementAt(CO.activitatActual) .getMissatgeIni() != null) { CO.miss.setText(Parser.getActivitats() .elementAt(CO.activitatActual).getMissatgeIni()); // CO.miss2.setText(Parser.getActivitats() // .elementAt(CO.activitatActual).getMissatgeIni()); } else { // CO.miss.setText("Comenca el joc!"); // CO.miss2.setText("Comenca el joc!"); } int displayedIntents; if (IntentCountDown && maxIntents != 0) { displayedIntents = maxIntents - contador; } else displayedIntents = contador; int displayedTime; if (TimeCountDown && maxTime != 0) { displayedTime = maxTime - contadorTemps; } else displayedTime = contadorTemps; aciertos.setText(Integer.toString(CO.correcte)); intentos.setText(Integer.toString(contador)); } } private void initQuadricules() { makeRandomPlafoA(); makeRandomPlafoB(); for (int i = 0; i < CO.rows; ++i) { // posar elems plafo A for (int j = 0; j < CO.cols; ++j) { TextView tmp = (TextView) findViewById(idPos.get(i).get(j)); plafoA.add(tmp); } } int offB = CO.cols * CO.rows; // offset a partir del que comen�a la info // del plaf� B for (int i = 0; i < CO.rows; ++i) { // posar elems plafo B for (int j = 0; j < CO.cols; ++j) { TextView tmp = (TextView) findViewById(idPos.get(5 + i).get(j)); plafoB.add(tmp); } } for (int i = 0; i < CO.rows; ++i) { // posar elems conAlternatiu for (int j = 0; j < CO.cols; ++j) { TV_ContAlternatiu tmp = new TV_ContAlternatiu( getApplicationContext()); contAlternatiu.add(tmp); } } for (int i = 0; i < CO.rows; ++i) { // inicialitzaci� plafo A for (int j = 0; j < CO.cols; ++j) { Integer corresp = correspondencies.get(i * CO.cols + j); TextView tmp = plafoA.get(corresp); tmp.setBackgroundColor(Color.DKGRAY); // plafoA.add(correspondencies.get(i*CO.cols+j), tmp); resizeCaselles(tmp); if ("".equals(CO.imatges.get(i * CO.cols + j))) { // no hi ha // imatges // -> posar // text String text = CO.celes.get(i * CO.cols + j); tmp.setText(text); tmp.setTextColor(Color.WHITE); } else { // hi ha imatges -> posar imatge if (Descompressor.descompressor( CO.imatges.get(i * CO.cols + j), CO.path)) { BitmapDrawable img = new BitmapDrawable(path + CO.imatges.get(i * CO.cols + j)); img = resizeImg(img); tmp.setBackgroundDrawable(img); } } tmp.setClickable(true); tmp.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { click(v); } }); // plafoA.set(corresp, tmp); } } // int offB = CO.cols*CO.rows; //offset a partir del que comen�a la info // del plaf� B for (int i = 0; i < CO.rows; ++i) { // inicialitzaci� plafo B for (int j = 0; j < CO.cols; ++j) { Integer corresp = correspondenciesB.get(i * CO.cols + j); TextView tmp = plafoB.get(corresp); resizeCaselles(tmp); tmp.setBackgroundColor(Color.DKGRAY); if ("".equals(CO.imatges.get(offB + i * CO.cols + j))) { // no // hi // ha // imatges // -> // posar // text String text = CO.celes.get(offB + i * CO.cols + j); tmp.setText(text); tmp.setTextColor(Color.WHITE); } else { // hi ha imatges -> posar imatge if (Descompressor.descompressor( CO.imatges.get(i * CO.cols + j), CO.path)) { BitmapDrawable img = new BitmapDrawable(path + CO.imatges.get(offB + i * CO.cols + j)); img = resizeImg(img); tmp.setBackgroundDrawable(img); } } tmp.setClickable(true); tmp.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { click(v); } }); // al plafoB no fem random :/ Integer corresp = // correspondencies.get(i*CO.cols+j); // plafoB.set(i*CO.cols+j, tmp); } } for (int i = 0; i < CO.rows; ++i) { // inicialitzaci� plafo alternatiu for (int j = 0; j < CO.cols; ++j) { Integer corresp = correspondencies.get(i * CO.cols + j); TV_ContAlternatiu tmp = contAlternatiu.get(corresp); tmp.setBackgroundColor(Color.DKGRAY); resizeCaselles(tmp); if (CO.imatges.size() > offB * 2 && "".equals(CO.imatges.get(offB * 2 + i * CO.cols + j))) { // no // hi // ha // imatge // -> // posar // text String text = CO.celes.get(offB * 2 + i * CO.cols + j); tmp.setText(text); tmp.setTextColor(Color.WHITE); tmp.setEsImatge(false); } else if (CO.imatges.size() > offB * 2) { // hi ha imatge -> // posar imatge if (Descompressor.descompressor( CO.imatges.get(i * CO.cols + j), CO.path)) { BitmapDrawable img = new BitmapDrawable(path + CO.imatges.get(i * CO.cols + j)); img = resizeImg(img); tmp.setBackgroundDrawable(img); tmp.setEsImatge(true); } } } } } private void click(View v) { sound.playClick(); Drawable draw; if (seleccionat == null) { // no n'hi ha cap de seleccionat anteriorment seleccionat = (TextView) v; draw = seleccionat.getBackground(); draw.setAlpha(100); seleccionat.setBackgroundDrawable(draw); } else if (seleccionat != null) { // ja en t� un de seleccionat // Arreglado, se utilizaban backgrounds que no existian. // si selecciona un del mateix plafo if ((plafoA.contains(v) && plafoA.contains(seleccionat)) || (plafoB.contains(v) && plafoB.contains(seleccionat))) { if (v.equals(seleccionat)) { // torna a seleccionar el mateix draw = seleccionat.getBackground(); draw.setAlpha(255); seleccionat.setBackgroundDrawable(draw); seleccionat = null; } else { // en selecciona un altre draw = seleccionat.getBackground(); draw.setAlpha(255); seleccionat.setBackgroundDrawable(draw); seleccionat = (TextView) v; draw = seleccionat.getBackground(); draw.setAlpha(100); // seleccionat.setBackgroundDrawable(draw); } } else { // en selecciona un d'un plafo diferent contador++;// S'incrementa el contador d'intents String plafoS, plafoV; Integer posS, posV; if (plafoA.contains(v)) { plafoV = "A"; posV = plafoA.indexOf(v); plafoS = "B"; posS = plafoB.indexOf(seleccionat); } else { plafoV = "B"; posV = plafoB.indexOf(v); plafoS = "A"; posS = plafoA.indexOf(seleccionat); } if ("A".equals(plafoS)) { // && "B".equals(plafoV) Integer posInicial = correspondencies.indexOf(posS); Integer posCorrectaB = correspondenciesB.get(posInicial); if (posCorrectaB.equals(posV)) { // correcte draw = seleccionat.getBackground(); draw.setAlpha(255); seleccionat.setBackgroundDrawable(draw); if (CO.imatges.size() > (CO.cols * CO.rows) * 2) { // hi // ha // contingut // alternatiu TextView tmp = (TextView) seleccionat; TV_ContAlternatiu tmp2 = contAlternatiu.get(posS); tmp.setText(null); tmp.setBackgroundColor(Color.DKGRAY); if (!tmp2.esImatge) { tmp.setText(tmp2.getText()); } else { tmp.setBackgroundDrawable(tmp2.getBackground()); } tmp.getBackground().setAlpha(50); // plafoA.set(posS, tmp); } else { // es posen transparents seleccionat.setVisibility(View.INVISIBLE); } v.setVisibility(View.INVISIBLE); v.setClickable(false); seleccionat.setClickable(false); seleccionat = null; CO.correcte++; sound.playAction_ok(); } else { // es desselecciona el seleccionat abans sound.playActionError(); draw = seleccionat.getBackground(); draw.setAlpha(255); seleccionat.setBackgroundDrawable(draw); seleccionat = null; } } else { // "B".equals(plafoS) && "A".equals(plafoV) Integer posInicial = correspondencies.indexOf(posV); Integer posCorrectaB = correspondenciesB.get(posInicial); if (posCorrectaB.equals(posS)) { // correcte seleccionat.getBackground().setAlpha(255); if (CO.imatges.size() > (CO.cols * CO.rows) * 2) { // hi // ha // contingut // alternatiu // TextView tmp = (TextView) // contAlternatiu.get(posCorrectaB); TextView tmp = (TextView) v; TV_ContAlternatiu tmp2 = contAlternatiu.get(posV); tmp.setText(null); tmp.setBackgroundColor(Color.DKGRAY); if (!tmp2.esImatge) { tmp.setText(tmp2.getText()); } else { tmp.setBackgroundDrawable(tmp2.getBackground()); } tmp.getBackground().setAlpha(50); // plafoA.set(posS, tmp); } else { // es posen transparents v.setVisibility(View.INVISIBLE); } seleccionat.setVisibility(View.INVISIBLE); v.setClickable(false); seleccionat.setClickable(false); seleccionat = null; sound.playAction_ok(); } else { sound.playActionError(); seleccionat.getBackground().setAlpha(255); seleccionat = null; } } } } int cont = 0; for (int i = 0; i < CO.cols * CO.rows; ++i) { if (plafoB.get(i).getVisibility() == View.INVISIBLE) { ++cont; } } if (cont == CO.cols * CO.rows) { // sound.playFinished_ok(); } setMissatges(); } private void makeRandomPlafoA() { ArrayList<Boolean> agafats = new ArrayList<Boolean>(); for (int i = 0; i < (CO.cols * CO.rows); i++) { agafats.add(false); } Random r = new Random(); this.correspondencies = new ArrayList<Integer>(CO.cols * CO.rows); for (int i = 0; i < (CO.cols * CO.rows); ++i) { int rand = r.nextInt(agafats.size()); if (agafats.get(rand) != true) { this.correspondencies.add(Integer.valueOf(rand)); agafats.set(rand, true); } else --i; } } private void makeRandomPlafoB() { ArrayList<Boolean> agafats = new ArrayList<Boolean>(); for (int i = 0; i < (CO.cols * CO.rows); i++) { agafats.add(false); } Random r = new Random(); this.correspondenciesB = new ArrayList<Integer>(CO.cols * CO.rows); for (int i = 0; i < (CO.cols * CO.rows); ++i) { int rand = r.nextInt(agafats.size()); if (agafats.get(rand) != true) { this.correspondenciesB.add(Integer.valueOf(rand)); agafats.set(rand, true); } else --i; } } private BitmapDrawable resizeImg(BitmapDrawable bitmapd) { Bitmap bitmapOrg = bitmapd.getBitmap(); int widthImage = bitmapOrg.getWidth(); int heightImage = bitmapOrg.getHeight(); // newWidth = width*CO.cols; // newHeight = height*CO.rows; newWidth = width; newHeight = height; float scaleWidth = ((float) newWidth) / widthImage; float scaleHeight = ((float) newHeight) / heightImage; Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, widthImage, heightImage, matrix, true); return new BitmapDrawable(resizedBitmap); } private void resizeCaselles(TextView pos) { Display display = getWindowManager().getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeigh = display.getHeight(); width = screenWidth / (CO.cols * 2); pos.setWidth(width); height = screenHeigh / (CO.rows * 4); pos.setHeight(height); // if(CO.cols == 1){ // pos.setWidth(250); // width = 250; // } else if(CO.cols == 2){ // pos.setWidth(120); // width = 120; // } else if(CO.cols == 3){ // pos.setWidth(50); // width = 50; // } else { // //cols == 4 // pos.setWidth(40); // width = 40; // } // // if(CO.rows == 1 || CO.rows == 2){ // pos.setHeight(100); // pos.setMaxLines(4); // height = 100; // } else if(CO.rows == 3){ // pos.setHeight(85); // pos.setMaxLines(3); // height = 85; // } else if(CO.rows == 4){ // pos.setHeight(50); // pos.setMaxLines(2); // height = 50; // } else { // //CO.rows == 5 // pos.setHeight(40); // pos.setMaxLines(2); // height = 40; // } // width /= 10; // height /= 10; } // @Override protected void onDestroy() { super.onDestroy(); sound.unloadAll(); } @Override public void onBackPressed() { } private void reiniciarMenu(){ if(CO.menu != null){ CO.menu.clear(); CO.menu.add(0, MENU_ANT, 0, R.string.menu_ant); CO.menu.add(0, MENU_SEG, 0, R.string.menu_seg); CO.menu.add(0, MENU_SOLUCIO, 0, R.string.menu_solucio); CO.menu.add(0, MENU_AJUDA, 0, R.string.menu_ajuda); CO.menu.add(0, MENU_INICI, 0, R.string.menu_inici); CO.menu.add(0, MENU_SORTIR, 0, R.string.menu_sortir); CO.menu.getItem(MENU_ANT).setIcon(android.R.drawable.ic_media_rew); CO.menu.getItem(MENU_SEG).setIcon(android.R.drawable.ic_media_ff); CO.menu.getItem(MENU_SOLUCIO).setIcon( android.R.drawable.btn_star_big_off); CO.menu.getItem(MENU_AJUDA) .setIcon(android.R.drawable.ic_menu_help); CO.menu.getItem(MENU_INICI).setIcon( android.R.drawable.ic_menu_revert); CO.menu.getItem(MENU_SORTIR).setIcon( android.R.drawable.ic_menu_close_clear_cancel); // Configuracio del menu per mostrarSolucio if (CO.mostrarSolucio) CO.menu.getItem(MENU_SOLUCIO).setEnabled(true); else CO.menu.getItem(MENU_SOLUCIO).setEnabled(false); CO.menu.getItem(MENU_SOLUCIO).setTitle(R.string.menu_solucio); // Configuracio del menu per ant i seguent CO.menu.getItem(MENU_SEG).setEnabled(true); CO.menu.getItem(MENU_ANT).setEnabled(true); if (CO.activitatActual < 1) { // estem a la primera activitat, pel que no podem habilitar // l'anterior CO.menu.getItem(MENU_ANT).setEnabled(false); } if (CO.activitatActual == Parser.getActivitats().size() - 1) { // estem a l'ultima activitat, pel que no podem habilitar el // seguent CO.menu.getItem(MENU_SEG).setEnabled(false); } } } /* public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); CO.menu = menu; CO.menu.clear(); CO.menu.add(0, MENU_ANT, 0, R.string.menu_ant); CO.menu.add(0, MENU_SEG, 0, R.string.menu_seg); CO.menu.add(0, MENU_SOLUCIO, 0, R.string.menu_solucio); CO.menu.add(0, MENU_AJUDA, 0, R.string.menu_ajuda); CO.menu.add(0, MENU_INICI, 0, R.string.menu_inici); CO.menu.add(0, MENU_SORTIR, 0, R.string.menu_sortir); CO.menu.getItem(MENU_ANT).setIcon(android.R.drawable.ic_media_rew); CO.menu.getItem(MENU_SEG).setIcon(android.R.drawable.ic_media_ff); CO.menu.getItem(MENU_SOLUCIO).setIcon( android.R.drawable.btn_star_big_off); CO.menu.getItem(MENU_AJUDA).setIcon(android.R.drawable.ic_menu_help); CO.menu.getItem(MENU_INICI).setIcon(android.R.drawable.ic_menu_revert); CO.menu.getItem(MENU_SORTIR).setIcon( android.R.drawable.ic_menu_close_clear_cancel); // Configuro els botons d'anterior i seguent CO.menu.getItem(MENU_SEG).setEnabled(true); CO.menu.getItem(MENU_ANT).setEnabled(true); if (CO.activitatActual < 1) { // estem a la primera activitat, pel que no podem habilitar // l'anterior CO.menu.getItem(MENU_ANT).setEnabled(false); } if (CO.activitatActual == Parser.getActivitats().size() - 1) { // estem a l'ultima activitat, pel que no podem habilitar el seguent CO.menu.getItem(MENU_SEG).setEnabled(false); } if (CO.mostrarSolucio) CO.menu.getItem(MENU_SOLUCIO).setEnabled(true); else CO.menu.getItem(MENU_SOLUCIO).setEnabled(false); return true; } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_ANT: CO.activitatActual = CO.activitatActual - 2; Intent iAnt = new Intent(this, Puzzle.class); startActivity(iAnt); finish(); return true; case MENU_SEG: Intent iSeg = new Intent(this, Puzzle.class); startActivity(iSeg); finish(); return true; case MENU_AJUDA: Dialog ajuda = new AlertDialog.Builder(SimpleAssociation.this) .setIcon(R.drawable.jclic_aqua).setTitle("Ajuda") .setPositiveButton("D'acord", null) .setMessage("Associa les caselles dels dos panells") .create(); ajuda.show(); return true; case MENU_SOLUCIO: /* * Aix� no ho fem * * * if(!CO.solucioVisible){ //Vull mostrar la solucio CO.vecActual = * new Vector<CharSequence>(); for(int i = 0; i < * CO.vecCaselles.size(); i++){ if(CO.vecCaselles.elementAt(i) != * null){ * CO.vecActual.addElement(CO.vecCaselles.elementAt(i).getText()); * CO.vecCaselles.elementAt(i).setText(CO.sortida.elementAt(i)); * CO.vecCaselles.elementAt(i).setBackgroundColor(CO.bg); * CO.vecCaselles.elementAt(i).setTextColor(CO.fg); * * if(CO.imatge != null){ int indexSort = * CO.sortida.indexOf(CO.vecCaselles.elementAt(i).getText()); * * CO.vecCaselles.elementAt(i).setBackgroundColor(Color.TRANSPARENT); * CO.vecCaselles.elementAt(i).setTextColor(Color.TRANSPARENT); * * vecDraw.elementAt(indexSort).setAlpha(250); * * CO.vecCaselles.elementAt(i). * setBackgroundDrawable(vecDraw.elementAt(indexSort)); } } else * CO.vecActual.addElement(null); } bloquejarJoc(true); * CO.solucioVisible = true; posAgafada = null; setMissatges(); * CO.menu.getItem(MENU_SOLUCIO).setTitle(R.string.menu_in_solucio); * CO.menu.getItem(MENU_ANT).setEnabled(false); * CO.menu.getItem(MENU_SEG).setEnabled(false); } else { //Estic * mostrant la solucio i vull continuar for(int i = 0; i < * CO.vecCaselles.size(); i++){ if(CO.vecCaselles.elementAt(i) != * null){ * CO.vecCaselles.elementAt(i).setText(CO.vecActual.elementAt(i)); * CO.vecCaselles.elementAt(i).setTextColor(CO.fg); * CO.vecCaselles.elementAt(i).setBackgroundColor(CO.bg); * * if(CO.imatge != null){ int indexSort = * CO.sortida.indexOf(CO.vecCaselles.elementAt(i).getText()); * * CO.vecCaselles.elementAt(i).setBackgroundColor(Color.TRANSPARENT); * CO.vecCaselles.elementAt(i).setTextColor(Color.TRANSPARENT); * * vecDraw.elementAt(indexSort).setAlpha(250); * * CO.vecCaselles.elementAt(i). * setBackgroundDrawable(vecDraw.elementAt(indexSort)); } } } * bloquejarJoc(false); CO.solucioVisible = false; setMissatges(); * CO.menu.getItem(MENU_SOLUCIO).setTitle(R.string.menu_solucio); * * //Configuracio del menu per ant i seguent * if(CO.activitatActual<1){ //estem a la primera activitat, pel que * nomes habilitem seguent * CO.menu.getItem(MENU_SEG).setEnabled(true); } else * if(CO.activitatActual == Parser.getActivitats().size() - 1){ * //estem a l'ultima activitat, pel que no podem habilitar el * seguent CO.menu.getItem(MENU_ANT).setEnabled(true); } else { * CO.menu.getItem(MENU_SEG).setEnabled(true); * CO.menu.getItem(MENU_ANT).setEnabled(true); } } */ /* return true; case MENU_SORTIR: AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.jclic_aqua); builder.setMessage("Est�s segur de que vols sortir?") .setCancelable(false) .setPositiveButton("S�", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { SimpleAssociation.this.finish(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); return true; case MENU_INICI: Intent i = new Intent(this, Jclic.class); startActivity(i); finish(); return true; } return false; }*/ }