首页 > 解决方案 > 如何创建小部件(我已经有一个可以工作的活动)

问题描述

我正在为 Android 创建一个斐波那契时钟应用程序 + 小部件。斐波那契时钟。我创建了功能齐全的它:它使用设备的时间,它被更新并选择斐波那契时钟必须同时显示的几个选项之一。

 EditText _cuad0, _cuad1, _cuad2, _cuad3, _cuad4;
    Button _btnVolver;
    int hour, mins;
    int[] thRes = new int[5];
    int[] tmRes = new int[5];
    GenerarArray1 miArray1 = new GenerarArray1(); //Se declaran todas las clases de array.
    GenerarArray2 miArray2 = new GenerarArray2();
    GenerarArray3 miArray3 = new GenerarArray3();
    GenerarArray4 miArray4 = new GenerarArray4();
    GenerarArray5 miArray5 = new GenerarArray5();
    GenerarArray6 miArray6 = new GenerarArray6();
    GenerarArray7 miArray7 = new GenerarArray7();
    GenerarArray8 miArray8 = new GenerarArray8();
    GenerarArray9 miArray9 = new GenerarArray9();
    GenerarArray10 miArray10 = new GenerarArray10();
    GenerarArray11 miArray11 = new GenerarArray11();
    int nArray = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fibonacci);
    final Handler handler = new Handler(); //Permite que la activadad se repita cada minuto.
    final Runnable r = new Runnable() {
        @Override
        public void run() {
            startAlert();
            handler.postDelayed(this, 60000); //La alerta se actualiza cada minuto.
        }
    };
    handler.postDelayed(r, 1); //La alerta se inicializa en 1 ms.
}

public void startAlert() {
        _btnVolver = findViewById(R.id.btnVolver); // Se asocian los elementos de la interfaz a la parte lógica.
        EditText[] cuadArray = new EditText[] { // Se crea un array de EditText que facilita el código.
         _cuad0 = findViewById(R.id.cuad0),
         _cuad1 = findViewById(R.id.cuad1),
         _cuad2 = findViewById(R.id.cuad2),
         _cuad3 = findViewById(R.id.cuad3),
         _cuad4 = findViewById(R.id.cuad4)};
        Calendar fecha = Calendar.getInstance();
         hour = fecha.get(Calendar.HOUR_OF_DAY); // Se obtienen las horas y los minutos del dispositivo
         mins = fecha.get(Calendar.MINUTE);


        if (hour > 12) {
            hour = hour - 12; //El reloj de Fibonacci no distingue entre horas am y horas pm
        }
        if (hour == 0) {
            hour = 12;
        }

        mins=mins/5; // Permite reducir código. Solo se producen cambios notables en los minutos múltiplos de 5.

            switch (hour) {
                case 0:
                    thRes[0] = 0; thRes[1] = 0; thRes[2] = 0; thRes[3] = 0; thRes[4] = 0;
                    break;
                case 1: //Permite acceder a la clase y seleccionar un array al azar.
                    Random r1h = new Random();
                    nArray = r1h.nextInt(2) + 1; // Se escribe "2" porque hay solo 2 opciones definidas en el array.
                    thRes = miArray1.metodoSeleccionarArray(nArray);
                    break;
                case 2:
                    Random r2h = new Random();
                    nArray = r2h.nextInt(2) + 1;
                    thRes = miArray2.metodoSeleccionarArray(nArray);
                    break;
                case 3:
                    Random r3h = new Random();
                    nArray = r3h.nextInt(3) + 1;
                    thRes = miArray3.metodoSeleccionarArray(nArray);
                    break;
                case 4:
                    Random r4h = new Random();
                    nArray = r4h.nextInt(3) + 1;
                    thRes = miArray4.metodoSeleccionarArray(nArray);
                    break;
                case 5:
                    Random r5h = new Random();
                    nArray = r5h.nextInt(3) + 1;
                    thRes = miArray5.metodoSeleccionarArray(nArray);
                    break;
                case 6:
                    Random r6h = new Random();
                    nArray = r6h.nextInt(4) + 1;
                    thRes = miArray6.metodoSeleccionarArray(nArray);
                    break;
                case 7:
                    Random r7h = new Random();
                    nArray = r7h.nextInt(3) + 1;
                    thRes = miArray7.metodoSeleccionarArray(nArray);
                    break;
                case 8:
                    Random r8h = new Random();
                    nArray = r8h.nextInt(3) + 1;
                    thRes = miArray8.metodoSeleccionarArray(nArray);
                    break;
                case 9:
                    Random r9h = new Random();
                    nArray = r9h.nextInt(3) + 1;
                    thRes = miArray9.metodoSeleccionarArray(nArray);
                    break;
                case 10:
                    Random r10h = new Random();
                    nArray = r10h.nextInt(2) + 1;
                    thRes = miArray10.metodoSeleccionarArray(nArray);
                    break;
                case 11:
                    Random r11h = new Random();
                    nArray = r11h.nextInt(2) + 1;
                    thRes = miArray11.metodoSeleccionarArray(nArray);
                    break;
            }


        switch (mins) {
            case 0:
                tmRes[0] = 0; tmRes[1] = 0; tmRes[2] = 0; tmRes[3] = 0; tmRes[4] = 0;
                break;
            case 1:
                Random r1m = new Random();
                nArray = r1m.nextInt(2) + 1;
                tmRes = miArray1.metodoSeleccionarArray(nArray);
                break;
            case 2:
                Random r2m = new Random();
                nArray = r2m.nextInt(2) + 1;
                tmRes = miArray2.metodoSeleccionarArray(nArray);
                break;
            case 3:
                Random r3m = new Random();
                nArray = r3m.nextInt(3) + 1;
                tmRes = miArray3.metodoSeleccionarArray(nArray);
                break;
            case 4:
                Random r4m = new Random();
                nArray = r4m.nextInt(3) + 1;
                tmRes = miArray4.metodoSeleccionarArray(nArray);
                break;
            case 5:
                Random r5m = new Random();
                nArray = r5m.nextInt(3) + 1;
                tmRes = miArray5.metodoSeleccionarArray(nArray);
                break;
            case 6:
                Random r6m = new Random();
                nArray = r6m.nextInt(4) + 1;
                tmRes = miArray6.metodoSeleccionarArray(nArray);
                break;
            case 7:
                Random r7m = new Random();
                nArray = r7m.nextInt(3) + 1;
                tmRes = miArray7.metodoSeleccionarArray(nArray);
                break;
            case 8:
                Random r8m = new Random();
                nArray = r8m.nextInt(3) + 1;
                tmRes = miArray8.metodoSeleccionarArray(nArray);
                break;
            case 9:
                Random r9m = new Random();
                nArray = r9m.nextInt(3) + 1;
                tmRes = miArray9.metodoSeleccionarArray(nArray);
                break;
            case 10:
                Random r10m = new Random();
                nArray = r10m.nextInt(2) + 1;
                tmRes = miArray10.metodoSeleccionarArray(nArray);
                break;
            case 11:
                Random r11m = new Random();
                nArray = r11m.nextInt(2) + 1;
                tmRes = miArray11.metodoSeleccionarArray(nArray);
                break;
        }


    for (int x = 0; x < cuadArray.length; x++) {  //Se ha creado un bucle for que permite reducir el código.
        if (tmRes[x] == thRes[x] && thRes[x] == 1) {
            cuadArray[x].setBackgroundResource(R.drawable.cuadazul);
        } else if (tmRes[x] == thRes[x] && thRes[x] == 0) {
            cuadArray[x].setBackgroundResource(R.drawable.cuadblanco);
        } else if (tmRes[x] == 0 && thRes[x] == 1) {
            cuadArray[x].setBackgroundResource(R.drawable.cuadrojo);
        } else if (tmRes[x] == 1 && thRes[x] == 0) {
            cuadArray[x].setBackgroundResource(R.drawable.cuadverde);
        }
    }



        _btnVolver.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(i);
                finish();
            }
        });
    }
}

布局斐波那契时钟活动工作

我的目的是创建一个与活动工作方式相同的小部件。

斐波那契时钟小部件工作

小部件只需要显示正方形。而已。我怎么能做到?实现它的最简单选择是什么?

谢谢大家。

标签: androidandroid-studiowidgetandroid-widget

解决方案


推荐阅读