본문 바로가기
Android

Button + onclick속성

by noddu 2021. 3. 11.
728x90
반응형

 

imageView ( 파일명에 대문자가 포함되어있으면 x , 첫글자 숫자 x )

image 넣는곳

 

srcCompat 으로 이미지 바꿀 수 있음

 

 

img 크기 조절

 

 

생성된 프로젝트 불러오는법

 

 

 

 

● 클릭메소드 1개로 3개의 버튼 클릭이벤트 처리하기

 

매개변수 View의 뜻 - 현재 Event가 발생한 View

 

public class MainActivity extends AppCompatActivity {

    ImageView iv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 어플 실행시켰을때 딱 한번만 View 찾아오기
        iv = findViewById(R.id.imageView);

    }
    
    //버튼 눌렀을 때 실행될 메소드 생성하기
    public void btnClick1(View v){
        if(v.getId() == R.id.btn_1){
            //현재 이벤트가 잘생한 view의 id값이 button이라면
            iv.setImageResource(R.drawable.a);
        }else if(v.getId() == R.id.btn_2){
            iv.setImageResource(R.drawable.a2);
        }else if(v.getId() == R.id.btn_3){
            iv.setImageResource(R.drawable.a3);
        }
    }
}

각 버튼의 id속성값을 불러와서 각각맞는 이미지 띄워주는 방식

 

 

 

 }else if(v.getId() == R.id.btn_onoff){
            cnt++;
            if(cnt%2==1){
                iv.setVisibility(View.INVISIBLE);
            }else{
                iv.setVisibility(View.VISIBLE);
            }

View의 속성중 visiility - visible(보이게) , invisible(공간은 차지하며 안보이게), gone(공간도차지x 안보이게)

 

버튼하나 추가해서 cnt방식으로 on/off 버튼 누를때마다 보이게/안보이게 만들기

 

 

else if(v.getId() == R.id.btn_onoff){ //사라지기 버튼을 눌렀을때
            //현재 이미지뷰의 visibility 상태를 가져오기
            if(iv.getVisibility() == View.INVISIBLE){
                iv.setVisibility(View.VISIBLE);
            }else{
                iv.setVisibility(View.INVISIBLE);
            }

visibility상태를 가져와서 보이면 안보이게, 안보이면 보이게하는 방법

 

 

 

 ConstraintLayout layout;
  @Override
    protected void onCreate(Bundle savedInstanceState) {
		layout = findViewById(R.id.Layout);
}

public void btnc(View v){
        if (v.getId()==R.id.btn_r){
            layout.setBackgroundColor(Color.rgb(250,0,0));
        }else if(v.getId()==R.id.btn_g){
            layout.setBackgroundColor(Color.rgb(0,250,0));
        }else if(v.getId()==R.id.btn_b){
            layout.setBackgroundColor(Color.rgb(0,0,250));
        }
    }

btnc onclick으로 각 버튼 눌렀을때 배경색 바꾸기

layout . setBackgroundColor(Color.RED); 식으로도 가능함

 

 

public void btnlr(View v){
        if (v.getId() == R.id.btn_pre){
            cnt--;
            if (cnt==2){
                iv.setImageResource(R.drawable.a2);
            }else if(cnt==1){
                iv.setImageResource(R.drawable.a);
            }else if(cnt<1){
                cnt=1;
            }

        }
        else if(v.getId()==R.id.btn_next){
            cnt++;
            if(cnt==2){
                iv.setImageResource(R.drawable.a2);
            }else if (cnt==3){
                iv.setImageResource(R.drawable.a3);
            }else if(cnt>3){
                cnt=3;
            }
        }
    }

 ◀ 버튼누르면 이전사진            ▶ 버튼누르면 다음사진으로 바꾸기

cnt를이용해 1이하면 첫번째사진에 머물게하고3이상이면 세번째사진에 머물게 한다.

 

 

◆다른방법

else if(v.getId() == R.id.btn_next){ // 다음으로 버튼 눌렀을때
            //이미지들에 index 부여하기
            // 순서가 없는 데이터에 순서 부여하려면 배열사용!
            current++;
            if(current==1){
                iv.setImageResource(imgRes[1]);
            }else if(current==2){
                iv.setImageResource(imgRes[2]);
            }
        }

current와 배열index의 수가 같으니 ▼이렇게 만들 수 있음

 else if(v.getId() == R.id.btn_next){ // 다음으로 버튼 눌렀을때
            //이미지들에 index 부여하기
            // 순서가 없는 데이터에 순서 부여하려면 배열사용!
            current++;
            iv.setImageResource(imgRes[current]);
        }else if(v.getId() == R.id.btn_pre){
            current--;
            iv.setImageResource(imgRes[current]);
        }
    }

 

 

 

 

 

   public void btnClick1(View v){
        if(v.getId() == R.id.btn_1){
            current = 0;

        }else if(v.getId() == R.id.btn_2){
            current = 1;

        }else if(v.getId() == R.id.btn_3){
            current = 2;

        }else if(v.getId() == R.id.btn_onoff) { //사라지기 버튼을 눌렀을때
            //현재 이미지뷰의 visibility 상태를 가져오기
            if (iv.getVisibility() == View.INVISIBLE) {
                iv.setVisibility(View.VISIBLE);
            } else {
                iv.setVisibility(View.INVISIBLE);
            }

            } else if(v.getId() == R.id.btn_next){ // 다음으로 버튼 눌렀을때
            //이미지들에 index 부여하기
            // 순서가 없는 데이터에 순서 부여하려면 배열사용!
            if (current == imgRes.length-1){
                Toast.makeText(MainActivity.this,"마지막사진임",Toast.LENGTH_SHORT).show();
            }else{
                current++;

            }
        }else if(v.getId() == R.id.btn_pre){
            if(current==0){
                Toast.makeText(MainActivity.this,"첫사진임",Toast.LENGTH_SHORT).show();
            }else {
                current--;
            }

        }
        iv.setImageResource(imgRes[current]);

    }

1, 2, 3 버튼과 pre , next버튼 쓰면서

if문 빠져나오면 무조건 imgRes[current]번째가 되게

반응형

'Android' 카테고리의 다른 글

Intent 사용하기  (0) 2021.03.22
Constraint Layout + 주사위게임 만들기  (0) 2021.03.21
View와 xml 이란  (0) 2021.03.21
Constraint Layout 예제 실습  (0) 2021.03.19
에뮬레이터 설정 , 간단한onclick  (0) 2021.03.09