android - 如何创建小部件(我已经有一个可以工作的活动)
问题描述
我正在为 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();
}
});
}
}
我的目的是创建一个与活动工作方式相同的小部件。
小部件只需要显示正方形。而已。我怎么能做到?实现它的最简单选择是什么?
谢谢大家。
解决方案
推荐阅读
- javascript - SAPUI5 自定义控件:svg 重新渲染的聚合控件不显示
- kubernetes - 将传入流量路由到具有在 URL 中指定的标签的 pod
- reactjs - 播放器组件在循环渲染时播放回声
- git - 在 Azure DevOps 上检查分支是否仅通过合并提交领先
- python - Windows Apache 停止工作并且不再启动 - “httpd.exe -k start”不给出错误
- magento2 - Magento 2选择查询显示产品sku但某些产品未显示在前端
- python - 无法在 python 中安装“Fury”
- android - 我需要更新或更改我的 gradle 文件中的任何内容吗?
- django - 如何将 Django 用于具有管理门户的 SaaS 产品?
- python - 使用字典更新索引值列