Хочу упросить код, так как в нём повторяются элементы. Помогите это сделать.
Код:
package com.rgb;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Launcher extends Activity {
private int changeBlue = 1;
private int changeGreen = 1;
private int changeBlack = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_launch);
changeLabelBlue(changeBlue);
changeLabelGreen(changeGreen);
changeLabelBlack(changeBlack);
}
private void changeLabelBlue(int change) {
Button firstButtonBlue = (Button) findViewById(R.id.firstBlue);
Button secondButtonBlue = (Button) findViewById(R.id.secondBlue);
Button thirdButtonBlue = (Button) findViewById(R.id.thirdBlue);
firstButtonBlue.setText(String.valueOf(change));
secondButtonBlue.setText(String.valueOf(change + 1));
thirdButtonBlue.setText(String.valueOf(change + 2));
changeAlphaBlueNext(0.5);
}
private void changeLabelGreen(int change) {
Button firstButtonGreen = (Button) findViewById(R.id.firstGreen);
Button secondButtonGreen = (Button) findViewById(R.id.secondGreen);
Button thirdButtonGreen = (Button) findViewById(R.id.thirdGreen);
firstButtonGreen.setText(String.valueOf(change));
secondButtonGreen.setText(String.valueOf(change + 1));
thirdButtonGreen.setText(String.valueOf(change + 2));
changeAlphaGreenNext(0.5);
}
private void changeLabelBlack(int change) {
Button firstButtonBlack = (Button) findViewById(R.id.firstBlack);
Button secondButtonBlack = (Button) findViewById(R.id.secondBlack);
Button thirdButtonBlack = (Button) findViewById(R.id.thirdBlack);
firstButtonBlack.setText(String.valueOf(change));
secondButtonBlack.setText(String.valueOf(change + 1));
thirdButtonBlack.setText(String.valueOf(change + 2));
changeAlphaBlackNext(0.5);
}
private void changeAlphaBlueNext(double change) {
if (changeBlue + 2 == 20) {
Button next = (Button) findViewById(R.id.buttonNextBlue);
next.setAlpha((float) change);
}
}
private void changeAlphaGreenNext(double change) {
if (changeGreen + 2 == 20) {
Button next = (Button) findViewById(R.id.buttonNextGreen);
next.setAlpha((float) change);
}
}
private void changeAlphaBlackNext(double change) {
if (changeBlack + 2 == 20) {
Button next = (Button) findViewById(R.id.buttonNextBlack);
next.setAlpha((float) change);
}
}
public void nextBlue(View view) {
if (changeBlue < 19) {
changeBlue++;
changeLabelBlue(changeBlue);
}
}
public void nextGreen(View view) {
if (changeGreen < 19) {
changeGreen++;
changeLabelGreen(changeGreen);
}
}
public void nextBlack(View view) {
if (changeBlack < 19) {
changeBlack++;
changeLabelBlack(changeBlack);
}
}
public void backBlue(View view) {
if (changeBlue != 1) {
changeBlue--;
changeLabelBlue(changeBlue);
changeAlphaBlueNext(1);
}
}
public void backGreen(View view) {
if (changeGreen != 1) {
changeGreen--;
changeLabelGreen(changeGreen);
changeAlphaGreenNext(1);
}
}
public void backBlack(View view) {
if (changeBlack != 1) {
changeBlack--;
changeLabelBlack(changeBlack);
changeAlphaBlackNext(1);
}
}
// 1 lvl blue
public void startIntroBlue(View view) {
Intent intent = new Intent(Launcher.this, Tutorial.class);
startActivity(intent);
this.finish();
}
}
Тут прежде всего упорядочить надо, все эти findViewById() должны быть непосредственно в onCreate единым блоком и все элементы храниться в полях, например:
Button button1;
Button button2;
Button button3;
initWidgets() {
button1 = (Button)findViewById(...);
button2 = (Button)findViewById(...);
...
}
onCreate() {
super();
...
initWidgets();
...
}
Все умные люди - Borland, Microsoft, создатели Qt, Swing - уже двадцать лет назад поняли, что это - необходимость, и их WYSIWYG'и автоматически генерируют такой код чтобы все элементы были доступны в полях и вообще не нужно было их вручную "извлекать", конечно бывают редкие случаи когда так делать не надо, но ничто не мешает в этих случаях просто закомментировать этот initWidget и сделать как нужно, а страдать из-за этого во всех остальных 99.9% случаев - это не гибкость, это глупость, мазохизм. Обработчики событий (listener'ы) "вешают" там же, кстати, где они у вас?
Насчет повторяющегося кода, в подробности не вдавался, XML не вижу, поэтому конкретное решение не назову, очевидно одно - здесь стоит применить динамическое создание Button и обработчиков для них (а из XML их "выкинуть", поэтому здесь с этими Button как раз тот случай, когда вышесказанное не подходит), может самому реализовать на базе какого-нибудь LinearLayout, может воспользоваться скажем ListView с Adapter, который по сути и предназначен для решения такой задачи.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь добится того, чтобы дочерний элемент нарисовал рамку с небольшим отступом от края окна, но получить размер окна в случае когда он задается...
Необходимо распределить работу на n часовВыполнять работу необходимо пачками
Есть кодНа выводе получается последовательное возведение 2 в степень (10 раз)