티스토리 뷰
키 입력 이벤트 처리하기
1 2 3 4 | 뷰를 상속할 때 키 이벤트 처리를 위한 메소드 재정의 - boolean onKeyDown(int keyCode,KeyEvent event) - boolean onKey(View v, int keyCode, KeyEvent event) | cs |
Example_Event 프로젝트로 이어서 실습 하겠습니다.
1. main.java(시스템,핸드폰에 붙어져있는 키를 눌렀을 때 발생하는 이벤트처리)
generate -> override -> onKeyDown 생성
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 package com.example.example_event;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.GestureDetector;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity {TextView textView;GestureDetector detector;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.textView);View view = findViewById(R.id.view1); // 어차피 View 타입이라 캐스팅 Xview.setOnTouchListener(new View.OnTouchListener() {// 움직이는 순간순간을 계속 호출해준다.@Overridepublic boolean onTouch(View view, MotionEvent event) {// 각각의 상태를 getAction으로 가져온다.int action = event.getAction(); // 상태 구분자역할float curX = event.getX();float curY = event.getY();// 터치 했을때if(action == MotionEvent.ACTION_DOWN){println("손가락 눌렸음" + curX +"," + curY);// 좌표값도 확인할 수 있는데, 터치가 된곳에}else if(action == MotionEvent.ACTION_MOVE){ // 터치하고 이동println("손가락 움직임" + curX +"," + curY);}else if(action == MotionEvent.ACTION_UP){ // 터치하고 뗐을때println("손가락 떼졌음" + curX +"," + curY);}return true;}});// 제스처를 사용하면 속도나, 좌표값 자동으로 계산해서 넘겨준다.detector = new GestureDetector(this, new GestureDetector.OnGestureListener() {@Overridepublic boolean onDown(MotionEvent motionEvent) {println("onDown() 호출됨.");return true;}@Overridepublic void onShowPress(MotionEvent motionEvent) {println("onShowPress() 호출됨.");}@Overridepublic boolean onSingleTapUp(MotionEvent motionEvent) {println("onSingleTapUp() 호출됨.");return true;}@Overridepublic boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {println("onScroll() 호출됨." + v + "," + v1);return true;}@Overridepublic void onLongPress(MotionEvent motionEvent) {println("onLongPress() 호출됨.");}@Overridepublic boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {println("onFling() 호출됨." + v + "," + v1);return true;}});View view2 = findViewById(R.id.view2);view2.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View view, MotionEvent event) {detector.onTouchEvent(event);return true;}});}// 시스템에 붙어있는 키를 눌렀을 때 발생하는 이벤트@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_BACK){Toast.makeText(this,"시스템 BACK 버튼 눌림", Toast.LENGTH_LONG).show();return true;}return false;// 이런식으로 처리를 하게 되면 시스템 백 버튼을 누르게 되어도 바탕화면으로 나가지지않고// 다른 기능을 실행시킬 수 있도록 시스템 버튼을 제어 할수 있다.}public void println(String data){textView.append(data + "\n");}}cs
2. 이제 xml 파일로 이동해서 입력 상자 넣기
background 속성에서 drawble 이미지로 만들수도 있다.
xml 파일로도 설정 할 수 있다.
3. app -> res -> drawble-> 오른쪽 마우스 -> new ->Drawble resource file
생성시킨다 ( my_selector.xml)파일
4. selector은 무엇을 의미하냐?
상태에 따라 drawble을 보여주려고하는것이 selector이다.
5. 이미지 파일을 red,blue. png파일을 다운받아서 drawablew 폴더에 넣는다
6. 이 이미지 파일들을 배경으로 지정 할 수 있는데,
1 android:background="@drawable/red"cs
이런식으로 바꿀 수가 있다.
123456789101112131415161718192021222324252627282930313233343536373839404142434445 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Viewandroid:id="@+id/view1"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="@android:color/holo_blue_bright" /><Viewandroid:id="@+id/view2"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="@android:color/holo_orange_dark" /><ScrollViewandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="match_parent"android:textColor="#000000"android:textSize="16dp" /></ScrollView><EditTextandroid:id="@+id/editText"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/my_selector"android:ems="10"android:inputType="text"android:text="" /></LinearLayout>cs
- <결과>
my_selector에의해 상태에 따른 배경이 변화를 바꿀 수 있다.
'Android' 카테고리의 다른 글
[Android] 토스트와 대화상자 (0) | 2017.09.24 |
---|---|
[Android] 단말 방향 전환 이벤트 (0) | 2017.09.24 |
[Android] 다양한 위젯과 이벤트 활용하기(터치이벤트) (0) | 2017.09.24 |
[Android] 위험 권한 부여 하기 (0) | 2017.09.24 |
[Android] 브로드캐스트 수신자 (1) | 2017.09.23 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 텐서플로우
- 학교
- node.js
- 코드엔진
- 백준알고리즘
- 스프링
- 복습
- C langauge
- 프로그래밍
- 백준
- Controller
- C언어
- 감자개발자
- TensorFlow
- node
- Spring
- BFS
- 머신러닝
- db
- 안드로이드
- Algorigm
- 감자코딩
- 리버싱
- MVC
- 노드
- 개발하는 관광이
- 알고리즘
- Android
- programming
- 초보자를 위한 C언어 300제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함