지난번에 이어서 안드로이드 스튜디오 기본기 복습.
지난번 코드를 다시 보자면
public void onButtonClicked2(View v){
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://naver.com"));
startActivity(myIntent);
}
인텐트(Intent) : 내가 하고자 하는 행위. (ex. 앱을 구성하는 화면을 새로 띄우거나 화면 간 데이터를 전달)
Intent Action을 검색해보면 VIEW 말고도 다양한 게 있다. CALL, DIAL 등...
(CALL의 경우 바로 해당 전화번호로 전화를 건다. 근데 권한 허용이 되어있어야하기 때문에, 아래 링크 본문 따라서 하면 된다.)
아래에도 상세히 적혀있는데 아직은 좀 어려워서 간단히 훑어보기만 했다. 나중에 다시 한 번 읽어보자.
Uri는
URI(Uniform Resource Identifier) : 리소스를 구분하는 식별자. 리소스에 접근할 수 있는 식별자 역할.
(URL(Uniform Resource Locator) : 리소스가 있는 경로(Location)에 대한 식별자. URI에 포함되는 개념.)
그리고 내 핸드폰으로 앱 실행시키는 것도 다시 해봄.
1. 설정 > 휴대전화 정보 > 소프트웨어 정보 > 빌드번호(7번 터치 하면 개발자 모드 켜짐) > 설정 화면 맨 아래에 생긴 '개발자 옵션' 들어감 > USB 디버깅 허용으로 체크
2. PC랑 단말 연결
3. Device Explorer 창 열기. 단말이랑 연결된 게 확인되면 앱 실행.
창의 가장 왼쪽 아래에 있는 네모 아이콘에 커서를 가져다대면 가장 자리 메뉴를 선택할 수 있는 빠른 메뉴가 표시된다.
만약 탭 화면이 많을 때 빠르게 화면을 바꾸고 싶다면 Ctrl+TAB으로 빠른 화면 전환이 가능하다. (윈도우에서 Alt+TAB으로 화면 전환 하듯이.)
소괄호() 안에 들어갈 수 있는 매개변수(Parameter) 후보를 보고 싶을 때는 괄호 안에 커서를 두고 Ctrl+P
<메서드 통째로 입력하기>
먼저 빈 곳에 우클릭 > Generate > Override Methods
그러면 아래와 같이 사용 가능한 메소드들의 목록이 쫙 뜬다.
위에 MainActivity extends AppCompatActivity라고 되어있음, 즉 클래스 MainActivity의 부모인 클래스 AppCompatActivity에 정의된 메소드들을 재정의할 수 있는 것이다.
그 중 하나를 눌러보았다. 아래와 같이 생성됨.
저기서 @Override 라는 의미는 재정의한다는 거다.
<코드 검색하기>
Ctrl + Shift + F
또는 Edit > Find > Find in Path...
뷰그룹(ViewGroup) : 뷰를 여러개 포함하고 있는 것. 뷰그룹 안에 뷰뿐만 아니라 다른 뷰그룹도 넣을 수 있음.
(뷰그룹은 뷰의 특징을 그대로 가지고 있다. 왜냐면 뷰그룹은 뷰를 상속받아 만들어졌기 때문이다. 뷰⊃뷰그룹)
위젯(Widget) : 뷰 중에서 화면에 보이면서 일반적인 컨트롤의 역할을 하는 것
레이아웃(Layout) : 뷰그룹 중 내부에 뷰들을 포함하고 있으면서 그것들을 배치하는 역할을 하는 것
<XML 코드 분석>
<androidx.constraintlayout.widget.ConstraintLayout>만 마지막 끝 태그가 </androidx.constraintlayout.widget.ConstraintLayout>로 되어있고,
안에 있는 다른 태그는 모두 <TextView ... />, <Button ... /> 이런 식으로 하나의 태그로 정의된다.
<androidx.con...Layout>은 다른 뷰들을 담고 있는 레이아웃이라 그 안에 뷰를 위한 태그들이 들어가야 하기 때문에 저렇게 시작태그와 끝태그를 분리해서 사용한 것이다.
android: 은 안드로이드의 기본 API에서 정의한 속성이라는 의미이다.(직접 정의하거나 외부 라이브러리를 사용할 경우 앞에 다른 단어가 속성 앞에 붙을 수 있음)
wrap_content : 뷰에 들어있는 내용물의 크기에 자동으로 맞춤
match_parent : 뷰를 담고 있는 뷰그룹의 여유공간을 꽉 채움
숫자로 크기 지정 : 단위는 dp다. DP(Density Independent Pixel)는 160dpi 화면을 기준으로 한 밀도 독립적 픽셀이라고 책에 나와있음. 인터넷에서는.. "픽셀과 상관없이 독립적인 크기를 가진다"라는 뜻으로 해석할 수 있다고 뜸.
(어디서는 DP가 Device Independent Pixel로 디바이스 크기에 의존하지 않는 픽셀이라고 함. 둘다 맞는 말인지는 잘 모름)
SP(Scale Independent Pixel) : 축척 독립적 픽셀. 뷰는 dp, 텍스트 크기는 sp 단위 사용을 권장함. (그래야 단말 설정에 맞춰서 글자 크기가 바뀜)
<Linear Layout>
아래와 같이 Component Tree에서 가장 위에 있는 항목 우클릭 > Convert view... > LinearLayout을 누르면
아래와 같이 변한다. 무슨 차인지 알겠쥬.
한쪽 방향으로만 뷰를 추가하는 레이아웃임.
보통 제약조건(Constraint)을 이용한 ConstraintLayout을 사용한다.
아래와 같이 마진(Margin) 변경이 가능하다. 참고로 Left가 Start고 Right가 End다.
Autoconect. 자석모양의 아이콘. 활성화 시킬 시 가이드라인(기준점)에 맞춰서 컴포넌트를 배치하면 연결선을 이어주지 않아도 알아서 연결점이 연결됨
가이드라인은 가로 중앙, 세로 중앙에 기본적으로 하나씩 있다. 사용자가 임의로 가이드라인을 추가할 수도 있다.
Bias. 왼쪽에 있는게 세로 바이어스, 오른쪽 아래에 있는데 가로 바이어스다. 중앙에서 한쪽으로 더 치우치게 만들고 싶으면 드래그해서 기본(50) 숫자를 바꾸면 된다.
(50은 비율 퍼센트라고 보면된다. 50%. 화면의 시작이 0, 끝이 1이라고 칠 때 0.5에 위치한다는 의미임)
안쪽 선이 바뀌는 경우가 있는데 구별하자면 이렇다.
1. layout_width 값이 match_constraint이거나 0dp
2. layout_width 값이 wrap_content
3. layout_width 값을 마음대로 지정했을 때
와 근데 이거 그냥 안쪽 선 클릭해도 알아서 바뀐다. 오오
'TIL > 안드로이드 스튜디오' 카테고리의 다른 글
3장 기본 위젯 (0) | 2024.11.20 |
---|---|
도전!4 - SMS 입력 화면 만들고 글자의 수 표시하기 (0) | 2024.11.20 |
도전!3 - 두 개의 이미지뷰에 이미지 번갈아 보여주기 (0) | 2024.11.18 |
2장 레이아웃 (0) | 2024.11.15 |
오랜만에 다시 보는 안드로이드 스튜디오 (1) | 2024.11.07 |