티스토리 뷰

학교공부/안드로이드

안드로이드(1)

날따라해봐요요롷게 2021. 10. 15. 16:15

리스너와 내부익명클래스

 

 리스너 란?

 : 이벤트를 처리하는 메소드들이 정의된 인터페이스

개발자가 이벤트 리스너를 Implement 하여 클래스를 정의한 후 객체로 생성하여 이벤트가 발생하는 뷰에 설정해 놓으면 이벤트가 발생할 때 등록된 리스너 안의 콜백 메소드가 시스템에 의해 자동으로 호출됨

(하나의 리스너는 하나의 콜백 메소드를 갖는다.)

 

btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                
            }
        });

 

위의 콜백 메서드는 onClick 메서드 클릭이 될 때 마다 onClick 메서드가 실행된다.

 

- 리스너의 원형과 익명 내부 클래스

 

== 리스너의 원형

public class MainActivity extends AppCompatActivity {

    Button btn1;

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

        Listener lis = new Listener();  // 리스너 객체 생성
        btn1.setOnClickListener(lis); // 버튼에 리스너 객체 등록
    }

    public class Listener implements View.OnClickListener{ // 리스너(인터페이스 :View.OnClickListener)를 상속받아 구현한 클래스를 정의하기

        @Override
        public void onClick(View view) { // 파라미터는 View 이다!!
            Toast.makeText(MainActivity.this, "메세지", Toast.LENGTH_SHORT).show();
        }
    }

}

- 클래스 정의 : Listener 클래스를 정의한다.

- 정의한 클래스 객체를 생성한다.

- 이벤트가 일어나는 리스너에 생성한 객체를 등록한다.

 

 


project04_02

 

CheckBox 의 특징 알기

 

CheckBox chAgree;
chAgree = findViewById(R.id.chAgree); // 위젯에 객체 생성

chAgree.setOnCheckedChangeListener (new CompoundButton.OnCheckedChangeListner() {
	
    @override
    public void OnCheckedChange(CompoundButton compoundButton, Boolean isChecked){
    	if(chAgree.isChecked()){
        	
        }
        else ()
    }
});

위의 코드를 살펴보자.

기본적으로 체크박스는 checked, unchecked 두 개로 나눠진다.

chAgree 체크박스 위젯은 리스너로 setOnCheckedChangeListener를 사용한다.

해당 리스너는 체크박스가 체크되었을 시 보여지는 뷰를 위해 작동한다.

 

상속 받는 CompoundButton의 정의는

public abstract class CompoundButton extends Button implements Checkable

추상클래스인 CompoundButton은 Button 클래스와 Checkable 인터페이스를 상속받는다.

또한 nested classes 로 interface 인 CompoundButton.OnCheckedChangeListener 를 갖는다.

CompoundButton.OnCheckedChangeListener 는 추상메소드로  onCheckedChanged(CompoundButton buttonView, boolean isChecked)를 갖는다.

 

 

CheckBox chAgree;
chAgree = findViewById(R.id.chAgree);

Listener lis = new Listener();
chAgree.setOnCheckedChangeListener(lis);

public class Listener implements CompoundButton.OnCheckedChangeListener{
	@override
    pulbic void onCheckedChange(CompoundButton compoundButton, Boolean isChecked){
    	
    }
}

 

 

 


뷰 xml 작성 시

 

id : 작성시 ==> android:id="@+id/btn1"

 

뷰의 크기 설정 시

layout_width, layout_height

 - match_parent : 주어진 영역 내에서 자신의 부모(보통 레이아웃)에 폭이나 높이를 맞춘다는 의미

 - wrap_content : 자신의 폭이나 높이를 자신 안의 글자가 들어갈 정도로 설정

 

뷰의 색상 설정 시

android:background/backgroundTint="#RRGGBB" (#51RRGGBB) --> 앞의 숫자는 투명도를 나타내는 정도

 

뷰의 특성 : padding , layout_margin

padding : 뷰의 경계와 레이아웃 사이의 간격

layout_margin : 뷰와 뷰 사이의 간격

 

뷰의 특성 : visibility

android:visibility="invisible/visible/gone"

invisible 과 gone 의 차이 : invisible은 안보이더라도 뷰의 공간을 차지하고 있다.

gone은 보이지 않으면서 공간도 차지하지 않는다.

 

뷰의 특성 : enabled,clickable 속성
enabled 속성 : 뷰의 동작 여부 (비활성화)
clickable 속성 : 클릭이나 터치가 가능하도록 함

android:enabled="false"

android:clickable="false" ==> 디폴트가 true이다 그래서 클릭 시 사용이 된다.

 

뷰의 특성 : TextView 속성 : 

- textSize ==> android:textSize = "sp, dp, px, in, mm"

- textColor ==> android:textColor="#AARRGGBB"

- textStyle ==> android:textStyle="bold, italic, bold|italic" 디폴트는 normal

- singleLine : 글이 길어 한 줄로 표현되기 힘들 때 강제로 한 줄로 표현하는 방법

==> android:singleLine="true"

 

xml로 정적으로 디자인 한것은 JAVA 로 모두 동적 디자인 할 수 있다.

TextView tv1;
tv1 = findViewById(R.id.tv1);

tv1.setText("텍스트 입력!");
tv1.setTextColor(Color.RED);
tv1.setTextSize(30); // dp, sp 입력하지 않음!
tv1.setTextStyle("italic");

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함