图像显示按钮的名称

时间:2015-10-07 16:49:33

标签: android

我的应用生成随机图像,希望生成的图像名称显示在按钮上

图像存储在drawable文件夹中,并且它们的名称存储在链中。我希望图像看起来可能出现在按钮上?



package com.example.antoniocruz.juegamovil;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.media.MediaPlayer;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Created by Antonio Cruz on 01/06/2015.
 */
public class Categoria extends Activity {

    public static String[] nombre_cosa={"pig " , " bird " , " horse " , " rabbit " , " elephant " , " chicken " , " cat "
            "frog" , "dog" , "duck" , "sheep" , "leon" , " giraffe "
            " Mat" , "cow" , " bus " , " car " , " airplane " , "bicycle" , " truck "
            , "cell " , , , , , , , , "house" , " guitar " , " motorcycle " , " chair " , " television" , " peach " , " strawberry " "mango "
            " grapes " , " watermelon " , " banana " , " coconut " , "pear" , "orange" , "apple "
            " bart " " batman" , "brain" , " guy ", " Goku ", " Homer " " marge "
            " patrician " , " pit " , " Phineas " , " Quico " , " Spiderman ," " Thor" , " superman"};

   
    public static boolean[] estado={false,false,false,false,false,false,
            false,false,false,false,false,false,
            false,false,false,false,false,false,false,
            false,false,false,false,false,false,false,false,
            false,false,false,false,false,false,false,
            false,false,false,false,false,false,false,false,false,false,
            false,false,false,false,false,false};

    public static int cosas_adivinadas=0;
    private int intentos=3;
    private Button aceptar;
    private TextView mensaje_intentos,mensaje_cuenta;
    private EditText usuario_cosa;
    private int numero_generado=0;
    private ImageView miimagen;
    private MediaPlayer reproductor;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setContentView(R.layout.activity_categoria);
        aceptar=(Button) findViewById(R.id.btnaceptar);
        mensaje_intentos=(TextView) findViewById(R.id.lblintentos);
        mensaje_cuenta=(TextView) findViewById(R.id.lblcuenta);
        usuario_cosa=(EditText) findViewById(R.id.txtcosa);
        miimagen=(ImageView) findViewById(R.id.imgcosa);
        CargarPreferencias();
        new MiTarea().execute();
        reproductor= MediaPlayer.create(this,R.raw.yansha);
        reproductor.setLooping(true);
        reproductor.start();
        mensaje_intentos.setText("Tiene " + intentos + " intentos");
        aceptar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String nombre=usuario_cosa.getText().toString().toLowerCase();
                if(nombre.equals(nombre_cosa[numero_generado]))
                {
                    establecer_cosa(numero_generado);
                    estado[numero_generado]=true;
                    cosas_adivinadas++;
                    esperar();
                }
                else
                {
                    Toast.makeText(getApplicationContext(), "Incorrecto", Toast.LENGTH_SHORT).show();
                    intentos=intentos-1;
                    mensaje_intentos.setText("Tiene " + intentos + " intentos");
                }

                if (intentos==0)
                {
                    removerPreferencias();
                    Intent i = new Intent(Categoria.this,Perder.class);
                    startActivity(i);
                    finish();
                }
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        reproductor.start();
    }

    public void esperar()
    {
        new CountDownTimer(5000,1000)
        {

            @Override
            public void onTick(long millisUntilFinished) {
                mensaje_cuenta.setText("Generando en " + (millisUntilFinished/1000));
            }

            @Override
            public void onFinish() {

                if (cosas_adivinadas==nombre_cosa.length)
                {
                    finish();
                }
                else
                {
                    new MiTarea().execute();
                    mensaje_cuenta.setText("");
                    usuario_cosa.setText("");
                }
            }
        }.start();
    }

    public void CargarPreferencias()
    {
        SharedPreferences mispreferencias = getSharedPreferences("PreferenciaCosa", Context.MODE_PRIVATE);
        intentos=mispreferencias.getInt("intentos",3);
        cosas_adivinadas=mispreferencias.getInt("adivinados",0);
        for (int i=0;i<nombre_cosa.length;i++)
        {
            estado[i]=mispreferencias.getBoolean(nombre_cosa[i],false);
        }
    }

    public void GuardarPreferencias()
    {
        SharedPreferences mispreferencias = getSharedPreferences("PreferenciaCosa", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = mispreferencias.edit();
        editor.putInt("intentos",intentos);
        editor.putInt("adivinados",cosas_adivinadas);
        for (int i=0;i<nombre_cosa.length;i++)
        {
            editor.putBoolean(nombre_cosa[i], estado[i]);
        }
        editor.commit();
    }

    private void establecer_cosa(int numero)
    {
        int resId = getResources().getIdentifier(nombre_cosa[numero], "drawable", getPackageName());
        miimagen.setImageResource(resId);
    }

    private void establecer_sombra(int numero)
    {
        int resId = getResources().getIdentifier(sombra_cosa[numero], "drawable", getPackageName());
        miimagen.setImageResource(resId);
    }


    private void removerPreferencias()
    {
        SharedPreferences settings = getSharedPreferences("PreferenciaCosa", Context.MODE_PRIVATE);
        settings.edit().clear().commit();
    }

    @Override
    protected void onStop() {
        if (intentos==0)
        {
            removerPreferencias();
        }
        else
        {
            GuardarPreferencias();
        }
        reproductor.pause();
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        if (reproductor.isPlaying())
        {
            reproductor.stop();
            reproductor.release();
        }
        super.onDestroy();
    }

    private class MiTarea extends AsyncTask<Void, Void, Void> {
        private int valor_generado;
        @Override
        protected Void doInBackground(Void... params) {
            do {
                valor_generado=((int)(Math.random()*nombre_cosa.length));
            }while(estado[valor_generado]);
            return null;
        }
        @Override
        protected void onPostExecute(Void aVoid) {
            numero_generado = valor_generado;
            establecer_sombra(valor_generado);
            super.onPostExecute(aVoid);
        }
    }


}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

假设aceptar是您所谈论的Button,您可以使用.setText()方法更改其文字:

if(nombre.equals(nombre_cosa[numero_generado])){
    aceptar.setText(nombre_cosa[numero_generado]); //here the change
    establecer_cosa(numero_generado);
    estado[numero_generado]=true;
    cosas_adivinadas++;
    esperar();
}

更新:随机生成图片

1)创建静态数组:

    // your names array
    public static String[] nombre_cosa={"pig " , " bird " , ..., " superman"};

    // your images drawable array
    public static int[] imagenes_cosa= new int[]{R.drawable.pig_image,..., R.drawable.superman_image};

2)创建随机位置生成器方法:

private int getRandomPosition(){
    Random r = new Random();
    return r.nextInt(nombre_cosa.length);
}

3)设置点击监听器:

    aceptar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               int randomPosition = getRandomPosition();
               aceptar.setText(nombre_cosa[randomPosition]);
               miimagen.setImageResource(imagenes_cosa[randomPosition]);
            }
        });

PS:nombre_cosaimagenes_cosa应该具有相同的尺寸!