Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백엔드
- 취업연계
- 활성화함수
- 교차검증
- 2차 실전프로젝트
- MVCmodel
- 취업성공패키지
- 프로젝트
- JSP/Servlet
- 2차프로젝트
- randomForest
- 손실함수
- 머신러닝
- KNN모델
- 선형모델 분류
- 스마트인재개발원
- 하이퍼파라미터튜닝
- 1차프로젝트
- 내일배움카드
- 안드로이드
- 오픈소스깃허브사용
- 비스포크시네마
- semantic_segmentation
- 국비지원
- gitclone
- 크롤링
- ERD
- intent
- springSTS
- MSE
Archives
- Today
- Total
또자의 코딩교실
[스마트인재개발원]Android - intent 본문
✅ Intent란?
Intent는 안드로이드 내에서 다른 액티비티를 실행하거나 데이터를 전달할 때 사용되는 시스템이다.
하나의 액티비티가 다른 액티비티를 실행 시킬 수 있는 메세지 시스템으로
액티비티끼리 액션과 데이터를 주면 결과를 주는 관계이다.
✅ 묵시적 Intent 와 명시적 Intent의 비교
인텐트는 묵시적 인텐트 방식/ 명시적 인텐트 방식으로 나뉘게 된다.
- 묵시적 Intent
- When: 인텐트의 액션과 데이터를 지정하긴 했지만, 호출할 대상이 달라질 수 있는 경우
- Process : 안드로이드 시스템이 인텐트를 이용해 요청한 정보를 처리할 수 있는 적절한 프로그램를 찾아본 다음 사용자에게 그 대상과 처리 결과를 보여줌
- Action 기능을 가짐
- 안드로이드 시스템에 설치된 기본앱을 바로 실행시킬 수 있고, 수행할 기능들을 적을 수 있음
- When: 인텐트의 액션과 데이터를 지정하긴 했지만, 호출할 대상이 달라질 수 있는 경우
- 명시적 Intent
- When: 인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출할 대상을 확실히 알 수 있는 경우에 사용
- Where : 주로 애플리케이션 내부에서 사용
- Why : 특정 컴포넌트나 액티비티가 명확하게 실행되어야할 경우에 사용
자바로 치면 setAttribute/getAttribute , 클라이언트와 서버 같은 느낌같은데,
자세하고 명확한 차이점은 나중에 더 알아봐야겠다.
✅ Intent 실습 - 버튼을 눌렀을 때 각각의 기능을 실행하게 하는 Intent
위 사진은 실습에 사용한 Layout xml파일과 java코드들이다.
다음은 버튼을 눌렀을 때 각각에 Intent를 지정하고 활용하여 작업을 수행하게 하는 코드이다.
btnWeb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.naver.com"));
//Uri는 접근할 수 있게 브라우저로 변경해주는 역할. java의 setAttribute 같은건가?
startActivity(intent);
}
});
btnCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);
}
});
btnDial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:01012345678"));
//안드로이드에서 전화관련된걸 정보를 전달하는 프로토콜 키워드는 tel.
//웹이라면 http, 다른거는 image?
startActivity(intent);
}
});
버튼 call 버튼을 누르면 전화를 걸고 받는 기능은 민감한 사생활적 정보기능이기 때문에
AndroidManifest 파일에서 사용자의 권한부여가 반드시 필요하다.
또한 java파일에서도 이러한 권한부여 요청사항을 꼭 확인하는 코드가 필요하다.
btnCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:01012345678"));
//안드로이드에서 전화관련된걸 정보를 전달하는 프로토콜 키워드는 tel
//사용자가 권한부여를 허락했는지 확인하는 method
if(ContextCompat.checkSelfPermission(MainActivity2.this,
Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){
//해당 권한을 사용자에게 요청하는 메소드
ActivityCompat.requestPermissions(MainActivity2.this,
new String[]{Manifest.permission.CALL_PHONE},0);
return;
}
startActivity(intent);
}
});
✅ Toast란?
Toast.makeText(MainActivity.this, "무승부!", Toast.LENGTH_SHORT).show();
/*Toast : HTML의 Alert과 비슷한 기능.
메인엑티비티화면의 정보를 매개변수로 넘기고(MainActivity.this)
무승부라는 글자를("무승부!")
짧게 띄울거에요.(Toast.LENGTH_SHORT)*/
✅ 이벤트 처리 방식
- xml의 OnClick속성에 메소드 연결
- 거의 사용하지 않는다.
- interface를 class에 구현
- 같은 기능의 버튼이 여러 개 정의되어있는 경우 사용함. (상속만 하면 되니까)
- interface를 익명 class로 정의하는 방법.
- 독립적으로 버튼의 기능을 구현해야 할 때 사용함.
✅ Layout의 종류
- Linear Layout : 두가지 방향으로만 구성과 정렬이 가능한 Box모델을 기반한 레이아웃.
- vertical : 세로 방향으로 쌓는 방식으로 레이아웃을 만든다.
- horizontonal : 가로 방향으로 쌓는 방식으로 레이아웃을 만든다.
- Relative Layout : 원하는 위치에는 둘 수 있지만 인근에 있는 View와 자동으로 연결된다.
- Grid Layout : 해상도가 바뀌면 다 깨져버릴수도 있음, 테이블과 비교하면 가로와 세로에 대한 병합이 가능함
- Table Layout : 수평으로만 병합이 가능함.
- Constraint Layout : 제약조건을 사용해 화면을 구성하는 Layout
각각 X, y축에 대한 최소 하나의 제약 연결이 필요하다.
'코딩공부 > Android' 카테고리의 다른 글
[스마트인재개발원] 이미지 슬라이드 앱 만들기 (0) | 2022.01.03 |
---|---|
[스마트인재개발원] 주사위 게임 예제 만들기 (0) | 2022.01.03 |
[스마트인재개발원] Constraint Layout에서 Chain 사용하기 (0) | 2022.01.03 |
[스마트인재개발원] Android - 개요 (0) | 2021.12.24 |
[스마트인재개발원] (Intent)Lotto_Simulator 실습(개선과정 포함) (0) | 2021.12.03 |
Comments