이벤트 처리

2020. 9. 21. 00:13·study/android
반응형

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

 

                                                               입력위젯의 종류

 


 

이벤트 처리

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
'study/android' 카테고리의 다른 글
  • Activity and Intent
  • dialog
  • Layout
  • 기본구조
jjikky
jjikky
  • jjikky
    jikky.env
    jjikky
  • 전체
    오늘
    어제
    • 분류 전체보기
      • React
      • Node.js
        • TDD
        • Node.js
        • mern
        • OAuth
        • js_facebook login
      • Coding Test
        • 백준 알고리즘
        • CodeUp
        • 코테 이론
      • Js
        • Javascript
      • study
        • python
        • android
        • Big data analysis
        • Logic Circuit
      • git
      • 개발일지
      • 게임기획
      • Docker
      • IPFS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Ipfs
    파이썬
    git 유용한 명령어
    파이썬 딕셔너리
    파이썬 완전탐색
    Python
    nft
    NFT Marketplace
    파이썬 그리디
    빅데이터
    verilog할당문
    ipfs add
    verilog
    코딩테스트
    NFT IPFS
    안드로이드
    범주형 자료
    ifps 네트워크 지연
    그리디 알고리즘
    UI
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
jjikky
이벤트 처리
상단으로

티스토리툴바