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); } } }; }
文章標籤
全站熱搜
