implements View.OnClickListener
btn_red.setOnClickListener(this);
package com.example.androidexam;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.solver.state.State;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ChangeColor extends AppCompatActivity implements View.OnClickListener {
ConstraintLayout background;
Button btn_red,btn_green,btn_blue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 어느 XML파일을 실행 할 것인지 정해주는 부분
setContentView(R.layout.activity_change_color);
background = findViewById(R.id.background);
btn_blue=findViewById(R.id.btn_blue);
btn_red=findViewById(R.id.btn_red);
btn_green=findViewById(R.id.btn_green);
btn_red.setOnClickListener(this);
btn_blue.setOnClickListener(this);
btn_green.setOnClickListener(this);
btn_red.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
background.setBackgroundColor(Color.parseColor("red"));
}
});
}
@Override
public void onClick(View view) {
if(view.getId()==R.id.btn_blue){
background.setBackgroundColor(Color.parseColor("blue"));
} else if(view.getId()==R.id.btn_red){
background.setBackgroundColor(Color.parseColor("red"));
} else if(view.getId()==R.id.btn_green){
background.setBackgroundColor(Color.parseColor("green"));
}
}
}
사용자가 EditText에 입력하고 버튼 클릭시 TextView 에 계산 결과 나오게
package com.example.androidexam;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Calculator extends AppCompatActivity implements View.OnClickListener {
TextView result;
EditText num1,num2;
Button btn_plus2, btn_minus2, btn_multi, btn_divi;
int result_;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
// setContentView 다음 findView 가 이루어짐
result = findViewById(R.id.result);
num1 = findViewById(R.id.num1);
num2 = findViewById(R.id.num2);
btn_plus2 = findViewById(R.id.btn_plus2);
btn_minus2 = findViewById(R.id.btn_minus2);
btn_multi = findViewById(R.id.btn_multi);
btn_divi = findViewById(R.id.btn_divi);
btn_plus2.setOnClickListener(this);
btn_minus2.setOnClickListener(this);
btn_multi.setOnClickListener(this);
btn_divi.setOnClickListener(this);
}
@Override
public void onClick(View view) {
int num3 = Integer.parseInt(num1.getText().toString());
int num4 = Integer.parseInt(num2.getText().toString());
if(view.getId()==R.id.btn_plus2){
result_ = num3+num4;
}else if(view.getId()==R.id.btn_minus2){
result_ = num3-num4;
}else if(view.getId()==R.id.btn_multi){
result_ = num3*num4;
}else if(view.getId()==R.id.btn_divi){
result_ = num3/num4;
}
result.setText("연산결과 : "+ result_);
}
}
전혀 다른 기능을 각 View에 적용시키고 싶을 때 사용함
각 버튼의 기능이 전혀 다르고, 로직이 길어질때
리스너 인터페이스는 익명클래스로 정의해서 사용함 임시적으로 만듦
리스너를 입시적으로 만들어 버튼에 적용시킴
이전, 다음 버튼 클릭시 이미지 바뀌게 만들기
이미지를 drawable 폴더에 넣어준다.
이미지 파일은 res\drawable 에 넣어줘야됨 경로 끝이 24로 되어있는거는 안됨
아래 같은 제약조건
package com.example.myapplication0504;
import androidx.appcompat.app.AppCompatActivity;
import android.location.GnssAntennaInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.util.Random;
public class MainActivity extends AppCompatActivity{
Button btn_before, btn_after;
ImageView imagepoke;
//이미지를 관리할 배열을 만들어줌
int[] imgArr = {R.drawable.poke1,R.drawable.poke2,R.drawable.poke3};
// 이미지배열의 인덱스 변수 인덱싱해줌
int index = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_before = findViewById(R.id.btn_before);
btn_after = findViewById(R.id.btn_after);
imagepoke = findViewById(R.id.imagepoke);
//이벤트 적용 3번째방법 : 각 버튼의 기능이 전혀 다르고, 로직이 길어질때
//리스너 인터페이스는 익명클래스로 정의해서 사용함 임시적으로 만듦
//리스너를 입시적으로 만들어 버튼에 적용시킴
btn_after.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 다음버튼 클릭 되었을 때 랜덤 이미지가 출력 되게
Random ran = new Random();
int num = ran.nextInt(3); //nextInt(숫자): 숫자-1 중 랜덤 수 추출
imagepoke.setImageResource(imgArr[num]);
/* index++;
if(index==3) {
index = 0;
}
imagepoke.setImageResource(imgArr[index]);*/
}
});
btn_before.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
index--;
imagepoke.setImageResource(imgArr[index]);
}
});
}
//인터페이스 상속받아 이벤트 적용하는 방법 : 각버튼의 기능이 비슷할때 사용됨 간단로직, 사칙연산 등
/* @Override
public void onClick(View view) {
//클릭한 정보를 가지고있는 객체 view
if (view.getId()==R.id.btn_before){
index--;
imagepoke.setImageResource(imgArr[index]);
} else if(view.getId()==R.id.btn_after){
index++;
if(index==3) {
index = 0;
}
imagepoke.setImageResource(imgArr[index]);
}
}
*/
//마지막 버튼을 클릭하면 첫번째 이미지로 돌아오게ㅔ끔 만들어주세요
// xml로 사용하는 방법
/* public void change(View view){
index++;
imagepoke.setImageResource(imgArr[index]); //해당하는 이미지로 바꿔줌 저장시킴->매개변수는 int타입
// 배열에서 차례대로 가져와줌
}
public void before(View view){
index--;
imagepoke.setImageResource(imgArr[index]);
}*/
}
btn_play 버튼 누르면 사용자, 컴퓨터의 주사위 눈이 랜덤으로 바뀌고 텍스트뷰인 스코어가 바뀜
먼저 10점이 나면 토스트 메시지가 나왔다 사라짐
토스트 알림창 띄우는 법 (띄워졌다가 사라지는 알림창)
Toast.makeText(파일명.this,"띄울메시지 내용 입력",Toast.LENGTH_LONG(길게할지 결정)).show();
package com.example.myapplication0504;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Random;
public class DiceGame extends AppCompatActivity {
Button btn_play;
ImageView img_user, img_com;
TextView score;
int[] diceArray = {R.drawable.dice1,R.drawable.dice2,R.drawable.dice3,R.drawable.dice4,
R.drawable.dice5,R.drawable.dice6};
int index = 0;
int user=0; int com = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dice_game);
img_com = findViewById(R.id.img_com);
img_user = findViewById(R.id.img_user);
btn_play = findViewById(R.id.btn_play);
score = findViewById(R.id.score);
btn_play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Random rd = new Random();
int num1 = rd.nextInt(6);
img_user.setImageResource(diceArray[num1]);
Random rd2 = new Random();
int num2 = rd2.nextInt(6);
img_com.setImageResource(diceArray[num2]);
if (num1 > num2) {
user++;
if(user>=10){
//토스트 알림창 띄우는 법 (띄워졌다가 사라지는 알림창)
Toast.makeText(DiceGame.this,"user 승리입니다.",Toast.LENGTH_LONG).show();
}
} else if(num2>num1){
com++;
if(com>=10){
Toast.makeText(DiceGame.this,"컴퓨터의 승리입니다.",Toast.LENGTH_LONG).show();
}
}
score.setText(user + ":" + com);
}
});
}
}