입력위젯 : 버튼, 텍스트필드, 시크바, 체크박스, 줌버튼, 토글버튼
입력위젯의 종류


이벤트 처리

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View target){
Toast.makeText(getApplicationContext(), "버튼이 눌러졌습니다", Toast.LENGTH_SHORT).show();
/* Toast 메시지를 띄우기 위해서는
Toast 클래스의 static 멤버 함수인 makeText() 함수를 통하여 Toast 객체를 생성해야 한다.
makeText() 함수에는 3개의 인자 정보를 넘겨준다.
첫 번째 인자는 현재 프로세스의 Context 정보를 넘겨주고
두 번째 인자는 Toast 메시지로 사용자에게 보여줄 문자열을 넘겨준다다
세 번쨰 인자는 메시지를 보여주는 시간
*/
}
}

안드로이드에서의 이벤트 처리 방법
- XML 파일에 이벤트 처리 메소드를 등록하는 방법 ( 가장 쉬운 방법 <- 권장 , 위에서 한 방법)
- 이벤트 처리 객체를 생성하여 컴포넌트에 등록 ( 일반적인 방법 )
- 뷰 클래스의 이벤트 처리 메소드를 재정의 ( 커스텀 뷰를 작성하는 경우 ex.게임 )
이벤트 처리 객체이용
이벤트 리스너
Class Myclass{
class Listner implements OnClickListener{ // 인터페이스를 구현한 클래스 재정의
public void onClick(View V){ // 사용자가 클릭하면 호출된다.
...
}
}
...
Listener lis = new Listener(); // 이벤트 리스너 객체 생성
button.setOnclickListenr(lis); // 버튼에 이벤트 리스너 객체를 등록
...
}
리스너의 종류

리스너 객체를 생성하는 방법
- 리스너 클래스를 내부 클래스로 정의한다.
- 리스너 클래스를 무명 클래스로 정의한다. >> 가장 많이 사용되는 방법!
- 리스너 인터페이스를 액티비티 클래스에 구현한다.
무명클래스
- 클래스 몸체는 정의 되지만 이름이 없는 클래스이다.
- 무명 클래스는 클래스를 정의하면서 동시에 객체를 생성하게 된다.
class ClickListener implements OnClickListener{ //기존 클래스
...
}
obj = new ClickListener();
obj = new OnClickListener(){...}; // 무명 클래스
회전하기 버튼 클릭시 고양이가 10도씩 회전

<activity_main.xml>
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="20dp" tools:context=".MainActivity"> <Button android:id="@+id/button1" android:layout_width="200dp" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="100dp" android:text="회전하기" /> <ImageView android:id="@+id/image1" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/cat"/> </RelativeLayout> |
<MainActivity.java>
package kr.ac.skuniv.rotationtest;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
Button button1;
ImageView image1;
int n=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
image1 = (ImageView) findViewById(R.id.image1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
n = n +10;
image1.setRotation(n); //시계방향으로 회전시켜주는 View클래스의 메서드
}
});
}
}
에디트 텍스트에 키가 눌릴 때마다, 바뀐 글자가 Toast 메시지로 나오도록.
<실행화면>

<string.xml>
<resources> <string name="app_name"> KeyEventTest </string> </resources> |
<activity_main.xml>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <EditText android:id="@+id/edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:layout_weight="1" android:hint="입력"/> </LinearLayout> |
<MainActivity.java 코드>
package kr.ac.skuniv.keyeventtest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText edit;
String result; // 문자를 작성할 String
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//변환할 타입 , id = "edit"인 Edittext
edit = (EditText) findViewById(R.id.edit); // 변수를 위젯에 대입
edit.setOnKeyListener(new View.OnKeyListener(){
// setOnKeyListener > 키가 눌릴때 마다 발생하는 이벤트 나타내는 함수
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
// 위젯 내용
result = edit.getText().toString(); //EditText에 입력된 값 가져오기
Toast.makeText(getApplicationContext(),result,Toast.LENGTH_SHORT).show();
return false;
}
});
}
}
'study > android' 카테고리의 다른 글
고급 위젯과 프래그먼트 (0) | 2020.10.22 |
---|---|
Activity and Intent (0) | 2020.10.12 |
dialog (0) | 2020.10.11 |
Layout (0) | 2020.09.20 |
기본구조 (0) | 2020.09.08 |