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);
            }

        }
    };
}

 

文章標籤
全站熱搜
創作者介紹
創作者 mingyilai 的頭像
mingyilai

mingyilai的部落格

mingyilai 發表在 痞客邦 留言(0) 人氣(15)