티스토리 뷰
화면을 좀더 다양하게 만들 수 있는 방법을 알고 싶다?
1 2 3 4 5 6 7 | - 손가락 눌렀을 때 어떻게 처리하는지 안다. - 사용자에게 간단하게 알려주는 방법을 안다 - 간단한 애니메이션을 넣는 방법을 알아본다. - 메뉴와 액션바 그리고 탭을 사용하는 방법을 알아본다. - 프래그먼트에 대해 알아본다 - 화면에 웹브라우저를 포함시키는 방법 - 입력상자를 터치 했을 때 뜨는 키패드 형태를 다르게 만들어 본다. | cs |
대표적인 이벤트
1 2 3 4 5 | 1. 터치 이벤트 - 화면을 손가락으로 누를 때 발생하는 이벤트 2. 키 이벤트 - 키패드나 하드웨어 버튼누를때 발생하는 이벤트 3. 제스처 이벤트 - 테스트 이벤트중 일정 패턴을 만들어 내는 이벤트 4. 포커스 - 뷰마다 순서대로 주어지는 포커스 5. 화면 방향 변경 - 화면의 방향이 가로/세로로 바뀜에 따라 발생하는 이벤트 | cs |
터치 이벤트 처리하기 예제)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 1. 화면 구성은 어떻게 할까? constraintLayout -> Text 탭 -> LinearLayout으로 바꿔준다 -> 영역을 세개로 나누어 줄것이다. 상황이 변경시 뿌려주는식으로 할것이다. 이벤트 발생시 ->처리할것. 2. LinearLayout은 방향성이 있어야하므로 orientation 속성으로 방향성 처리 3. layout_weight = 1로 분할할 것이다. 4. id값을 지정한다 @+id/View 이렇게 View를 하나더 생성해서 @+id/View2 5 scrollView 생성 마찬가지로 layout_weight = 1로 분할할 것이다. ScrollView 안에 TextView를 생성해준다. 6. 이제 화면이 3분할 된것을 확인 할 수 있다. 7. 화면 꾸미기(Backgroud) | cs |
8. 이제 Main.java로 가보자
123456789101112131415161718192021222324 package com.example.example_event;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends AppCompatActivity {TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.textView);}// 로그 찍기public void println(String data){textView.append(data + "\n");}}cs
9. 이제 또 디자인탭에 가서 textsize와 textcolor를 설정 해준다.
10. 이제 이벤트 처리를 해보자. Main.java 파일 (setOnTouchListener)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 package com.example.example_event;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.MotionEvent;import android.view.View;import android.widget.TextView;public class MainActivity extends AppCompatActivity {TextView textView;@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;}});}public void println(String data){textView.append(data + "\n");}}cs
<결과>
이벤트 처리가 되면 너무많은 좌표 값이 나온다? 이럴 땐 어떻게 하냐?
1. 제스처 라는것을 사용하면 자동으로 계산되게 해줄 수 있다.
2. main.java 파일 + 추가
(좌표값 찍기)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 package com.example.example_event;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import android.widget.TextView;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;}});}public void println(String data){textView.append(data + "\n");}}cs
결과
'Android' 카테고리의 다른 글
[Android] 단말 방향 전환 이벤트 (0) | 2017.09.24 |
---|---|
[Android] 키 입력 이벤트 처리하기 (0) | 2017.09.24 |
[Android] 위험 권한 부여 하기 (0) | 2017.09.24 |
[Android] 브로드캐스트 수신자 (1) | 2017.09.23 |
[Android] 서비스(Service) (0) | 2017.09.22 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 알고리즘
- node.js
- 리버싱
- MVC
- 감자개발자
- 개발하는 관광이
- programming
- 텐서플로우
- C언어
- Android
- 노드
- C langauge
- BFS
- Algorigm
- 스프링
- 프로그래밍
- 백준
- 학교
- TensorFlow
- 안드로이드
- 초보자를 위한 C언어 300제
- db
- 복습
- node
- Spring
- 감자코딩
- 코드엔진
- Controller
- 백준알고리즘
- 머신러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함