package net.coding.program.project.detail; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.GradientDrawable; import android.text.Editable; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import net.coding.program.R; import net.coding.program.common.enter.SimpleTextWatcher; import net.coding.program.common.ui.BackActivity; import net.coding.program.common.widget.PickLabelColorItem; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.Extra; import org.androidannotations.annotations.ViewById; import org.androidannotations.annotations.ViewsById; import java.util.List; @EActivity(R.layout.activity_pick_label_color) public class PickLabelColorActivity extends BackActivity { @Extra int generateColor = 0; @ViewById EditText inputColor; @ViewById View colorPreview; @ViewById ViewGroup rootLayout; // PickLabelColorItem[] items = new PickLabelColorItem[COLORS.length]; @ViewsById({R.id.color0, R.id.color1, R.id.color2, R.id.color3, R.id.color4, R.id.color5}) List<PickLabelColorItem> colorItems; @AfterViews protected void initPickLabelColorActivity() { inputColor.addTextChangedListener(new SimpleTextWatcher() { @Override public void afterTextChanged(Editable s) { if (s.length() == 6) { String input = s.toString(); generateColor = Color.parseColor("#" + input); updatePreview(); } } }); if (generateColor == 0) { clickGenerateColor(); } else { updatePreview(); updateInput(); } for (int i = 0; i < colorItems.size(); ++i) { PickLabelColorItem item = colorItems.get(i); if (item.getColor() == generateColor) { item.setPicked(); break; } } } @Click void clickGenerateColor() { generateColor = TopicLabelActivity.getRandomColor(); updateInput(); } private void updateInput() { String colorString = String.format("%06X", 0xFFFFFF & generateColor); inputColor.setText(colorString); inputColor.setSelection(colorString.length()); } private void updatePreview() { GradientDrawable bgShape = (GradientDrawable) colorPreview.getBackground(); if (bgShape != null) { bgShape.setColor(generateColor); } } @Click({R.id.color0, R.id.color1, R.id.color2, R.id.color3, R.id.color4, R.id.color5}) public void onClick(View v) { if (v instanceof PickLabelColorItem) { PickLabelColorItem item = (PickLabelColorItem) v; closeAndPick(item.getColor()); } } private void closeAndPick(int color) { Intent intent = new Intent(); intent.putExtra("resultData", color); setResult(RESULT_OK, intent); finish(); } @Override public void onBackPressed() { closeAndPick(generateColor); } }