res/layou/activity_main.xml
package com.lai.class4_changecolor;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.ToggleButton;
public class MainActivity extends AppCompatActivity {
Spinner spinner;
RadioButton rbRed,rbGreen,rbBlue;
SeekBar seekBar;
ToggleButton tgb;
TextView tvSelect,tvShow;
int fRed,fGreen,fBlue; //定義前景色
int bRed,bGreen,bBlue; //定義背景色
int pos; //選到的位置
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findviews();
}
void findviews(){
spinner = (Spinner)findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(spinnerListener);
//一個監聽器監聽多個元件
rbRed = (RadioButton)findViewById(R.id.radioButton);
rbRed.setOnClickListener(rbsClick);
rbGreen = (RadioButton)findViewById(R.id.radioButton2);
rbGreen.setOnClickListener(rbsClick);
rbBlue = (RadioButton)findViewById(R.id.radioButton3);
rbBlue.setOnClickListener(rbsClick);
seekBar = (SeekBar)findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(seekBarChangeListener);
tgb = (ToggleButton)findViewById(R.id.toggleButton);
tgb.setOnCheckedChangeListener(tgbListener);
tvSelect = (TextView)findViewById(R.id.textView);
tvShow = (TextView)findViewById(R.id.textView2);
}
//一個監聽器監聽多個元件
View.OnClickListener rbsClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
//紅色區塊
case R.id.radioButton:
if(pos==0) {
seekBar.setProgress(fRed); //設定並記憶前景色的位置
}else{
seekBar.setProgress(bRed);
}
tvSelect.setText(rbRed.getText());
// tvSelect.setTextColor(0xFFFF0000); //一定要八碼顏色
tvSelect.setTextColor(Color.RED);
break;
//綠色區塊
case R.id.radioButton2:
if(pos==0) {
seekBar.setProgress(fGreen);//設定並記憶前景色的位置
}else{
seekBar.setProgress(bGreen);
}
tvSelect.setText(rbGreen.getText());
tvSelect.setTextColor(Color.GREEN);
break;
//藍色區塊
case R.id.radioButton3:
if(pos==0) {
seekBar.setProgress(fBlue);//設定並記憶前景色的位置
}else{
seekBar.setProgress(bBlue);
}
tvSelect.setText(rbBlue.getText());
tvSelect.setTextColor(Color.BLUE);
break;
}
}
};
//seekBar監聽器
SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(pos == 0) {
//如果顏色被選取的話,下面文字顏色會隨SEEKBAR的拖拉而改
if (rbRed.isChecked()) {
// tvShow.setTextColor(Color.rgb(progress,0,0));//只改變文字顏色
fRed = progress; //前景色=progress(跟著改變)
}
if (rbGreen.isChecked()) {
// tvShow.setTextColor(Color.rgb(0,progress,0));//只改變文字顏色
fGreen = progress; //前景色=progress(跟著改變)
}
if (rbBlue.isChecked()) {
// tvShow.setTextColor(Color.rgb(0,0,progress));//只改變文字顏色
fBlue = progress; //前景色=progress(跟著改變)
}
//設定文字顏色
tvShow.setTextColor(Color.rgb(fRed, fGreen, fBlue));//縮減程式碼剩這行,功能一樣
}else{
if (rbRed.isChecked()) {
// tvShow.setTextColor(Color.rgb(progress,0,0));//只改變文字顏色
bRed = progress; //背景色=progress(跟著改變)
}
if (rbGreen.isChecked()) {
// tvShow.setTextColor(Color.rgb(0,progress,0));//只改變文字顏色
bGreen = progress; //背景色=progress(跟著改變)
}
if (rbBlue.isChecked()) {
// tvShow.setTextColor(Color.rgb(0,0,progress));//只改變文字顏色
bBlue = progress; //背景色=progress(跟著改變)
}
//設定背景顏色
tvShow.setBackgroundColor(Color.rgb(fRed, fGreen, fBlue));
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
};
//spinner監聽器
AdapterView.OnItemSelectedListener spinnerListener=new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//(容器,每一個元件都是VIEW且用TEXTVIEW裝,從0開始
//前景色是0,背景色是1
pos=position; //監聽器
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
//toggleButton監聽器
CompoundButton.OnCheckedChangeListener tgbListener=new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
tvShow.setBackgroundColor(Color.WHITE);
}else{
tvShow.setBackgroundColor(Color.BLACK);
}
}
};
}
java/MainActivity
package com.lai.class4_changecolor;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.ToggleButton;
public class MainActivity extends AppCompatActivity {
Spinner spinner;
RadioButton rbRed,rbGreen,rbBlue;
SeekBar seekBar;
ToggleButton tgb;
TextView tvSelect,tvShow;
int fRed,fGreen,fBlue; //定義前景色
int bRed,bGreen,bBlue; //定義背景色
int pos; //選到的位置
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findviews();
}
void findviews(){
spinner = (Spinner)findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(spinnerListener);
//一個監聽器監聽多個元件
rbRed = (RadioButton)findViewById(R.id.radioButton);
rbRed.setOnClickListener(rbsClick);
rbGreen = (RadioButton)findViewById(R.id.radioButton2);
rbGreen.setOnClickListener(rbsClick);
rbBlue = (RadioButton)findViewById(R.id.radioButton3);
rbBlue.setOnClickListener(rbsClick);
seekBar = (SeekBar)findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(seekBarChangeListener);
tgb = (ToggleButton)findViewById(R.id.toggleButton);
tgb.setOnCheckedChangeListener(tgbListener);
tvSelect = (TextView)findViewById(R.id.textView);
tvShow = (TextView)findViewById(R.id.textView2);
}
//一個監聽器監聽多個元件
View.OnClickListener rbsClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
//紅色區塊
case R.id.radioButton:
if(pos==0) {
seekBar.setProgress(fRed); //設定並記憶前景色的位置
}else{
seekBar.setProgress(bRed);
}
tvSelect.setText(rbRed.getText());
// tvSelect.setTextColor(0xFFFF0000); //一定要八碼顏色
tvSelect.setTextColor(Color.RED);
break;
//綠色區塊
case R.id.radioButton2:
if(pos==0) {
seekBar.setProgress(fGreen);//設定並記憶前景色的位置
}else{
seekBar.setProgress(bGreen);
}
tvSelect.setText(rbGreen.getText());
tvSelect.setTextColor(Color.GREEN);
break;
//藍色區塊
case R.id.radioButton3:
if(pos==0) {
seekBar.setProgress(fBlue);//設定並記憶前景色的位置
}else{
seekBar.setProgress(bBlue);
}
tvSelect.setText(rbBlue.getText());
tvSelect.setTextColor(Color.BLUE);
break;
}
}
};
//seekBar監聽器
SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(pos == 0) {
//如果顏色被選取的話,下面文字顏色會隨SEEKBAR的拖拉而改
if (rbRed.isChecked()) {
// tvShow.setTextColor(Color.rgb(progress,0,0));//只改變文字顏色
fRed = progress; //前景色=progress(跟著改變)
}
if (rbGreen.isChecked()) {
// tvShow.setTextColor(Color.rgb(0,progress,0));//只改變文字顏色
fGreen = progress; //前景色=progress(跟著改變)
}
if (rbBlue.isChecked()) {
// tvShow.setTextColor(Color.rgb(0,0,progress));//只改變文字顏色
fBlue = progress; //前景色=progress(跟著改變)
}
//設定文字顏色
tvShow.setTextColor(Color.rgb(fRed, fGreen, fBlue));//縮減程式碼剩這行,功能一樣
}else{
if (rbRed.isChecked()) {
// tvShow.setTextColor(Color.rgb(progress,0,0));//只改變文字顏色
bRed = progress; //背景色=progress(跟著改變)
}
if (rbGreen.isChecked()) {
// tvShow.setTextColor(Color.rgb(0,progress,0));//只改變文字顏色
bGreen = progress; //背景色=progress(跟著改變)
}
if (rbBlue.isChecked()) {
// tvShow.setTextColor(Color.rgb(0,0,progress));//只改變文字顏色
bBlue = progress; //背景色=progress(跟著改變)
}
//設定背景顏色
tvShow.setBackgroundColor(Color.rgb(fRed, fGreen, fBlue));
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
};
//spinner監聽器
AdapterView.OnItemSelectedListener spinnerListener=new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//(容器,每一個元件都是VIEW且用TEXTVIEW裝,從0開始
//前景色是0,背景色是1
pos=position; //監聽器
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
//toggleButton監聽器
CompoundButton.OnCheckedChangeListener tgbListener=new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
tvShow.setBackgroundColor(Color.WHITE);
}else{
tvShow.setBackgroundColor(Color.BLACK);
}
}
};
}