본문 바로가기
개발

TIL : 20231214

by kks950115 2023. 12. 14.
728x90

ui의 기본 단위는 view이다.
 위젯 -> 화면을 구성하는 요소. 예)버튼,리스트,메뉴 등등
 레이아웃 -> 뷰를 감싸면서 정렬하는 기능을 지는 ui요소
 
match_parent(혹은fill_parent) -> 부모 UI컴포넌트의 크기에 맞춤
    
wrap_content -> UI컴포넌트의 내용물 크기에 맞춤

위젯의 크기를 px로 쓰지 않고 dp로 쓰는 이유는 px은 절대값이기 때문에 화면의 크기가 달라지면 비율이 이상해진다.
그래서 비례값인 dp로 쓰는 것이다.
 
TextView 속성
text -> 내용
textsize - > 글자 크기
textStyle -> 텍스트 스타일 normal,bold, italic
typeface - > 폰트
textColor ->글자 색상
singleLine -> true면 위젯의 폭보다 길 때 줄바꿈하지 않고 강제로 정렬한다.

findViewByID() -> onCreate() 메소드 안에 setContentView를 통해서 연결된 xml리소스에만 접근이 가능하다. 다른 액티비티와 연결된 xml 리소스에 있는 위젯은 findViewByID()로 가져올 수 없다.

이미지를 버튼으로 활용할 떄 jpg보단 png를 선호한다. png는 배경을 투명하게 할 수 있기 때문이다.

스케입 타입 속성들 -> center, centercrop,  centerInside, fitCenter, fitStart, fitEnd, fitXY, matrix

layoutWight -> 비율에 따라 크기를 늘리고싶을 때 쓴다.

Linear Layout -> 자식요소들을 한방향으로만 배치
Relative Layout -> 서로 간의 관계로 배치하는 레이아웃. css의 position을 생각하면 비슷하다.
Table layout -> 표 형식으로 자식을 배치. 잘 안쓰인다.
Frame Layout -> 컨테이너에 포함된 뷰들을 전부 좌상단에 배치. 여러 위젯을 넣어 쓰기보단 미디어플레이어 같은 한장을 쓸 때 주로 쓴다.
Constraint Layout -> 제약 조건을 사용해 화면에 배치. 위에 모든 레이아웃을 표현할 수 있고, 위에 레이아웃으로도 표현할 수 없던 것도 표현할 수 있어서 가장 많이 쓰임.

Constraint툴바
1. Autoconnect -> 켜두면 위젯을 배치할때 자동으로 이웃한 위젯과 관계를 맺어줍니다.

2. Clear All Constraints -> 모든 관계를 삭제합니다.

3. Infer constraints -> 레이아웃내 배치된 모든 위젯을 현재 위치를 기반으로 관계를 맺어줍니다.

4. Default Margins -> 위젯 간의 기본 마진 같을 지정합니다.

5. Guidelines -> 수평,수직 가이드라인을 만들 수 있습니다.위젯을 이 가이드라인을 기준으로 정렬 할 수 있습니다.

 



액티비티 (Activity) -> 액티비티는 사용자가 직접 상호작용하는 화면이다 . 우리가 앱을 켰을 때 보는 화면(UI)을 말한다.

서비스 (Service) -> 백그라운드에서 실행되어야 하는 작업. 게시글을 올렸을 때를 예로 들면  1.서버에 게시글을 업로드 2.서버로부터 성공 여부를 받음 3.업로드완료, 혹은 업로드 실패를 알려줌

브로드캐스트 리시버 (Broadcast Receiver) -> 안드로이드 시스템으로부터 발송되는 다양한 이벤트나 정보를 애플리케이션이 받을 수 있게 해주는 컴포넌트.  예를 들어 배터리가 부족할 때, 사양을 최소한으로 먹는 절전모드로 전환됨. 화면이 꺼졌을 때 현재 쓰고 있던 글을 임시 저장함.

콘텐트 프로바이더 (Content Provider) -> 어플리케이션 간의 데이터 공유를 가능하게 한다. 예를 들어 연락처 애플리케이션이 다른 애플리케이션에 연락처 데이터를 제공할 때 사용. 데이터를 저장하고 관리하는 일종의 데이터베이스 역할을 하며, 다른 애플리케이션에 안전하게 데이터를 공유

명시적 인텐트 ->  앱 내부에서 다른 액티비티나 서비스를 호출할 때 직접 특정 컴포넌트를 지정해서 호출하는 것을 말한다.
암시적 인텐트 -> 주로 다른 앱의 컴포넌트를 실행시키는데 사용된다. 컴포넌트를 지정하지 않고 작업을 인텐트 객체에 넣어서 startActivity() 에 넘기면 안드로이드 시스템은 이 인텐트를 처리할 수 있는 모든 어플리케이션을 검색하여  적합한 인텐트 필터를 가진 컴포넌트를 찾아서 실행합니다.

인텐트 객체 분석

컴포넌트 이름 (Component Name) ->타겟 컴포넌트의 이름을 명시하여, 인텐트가 전달될 정확한 대상을 지정합니다.
new Intent(context, TargetActivity.class)에서 TargetActivity.class가 컴포넌트 이름입니다.
컴포넌트 이름이 없으면 암시적으로 처리 된다.

액션 (Action) -> 인텐트가 수행해야 할 일반적인 작업을 정의한다. 
예)Intent.ACTION_DIAL은 다이얼이 있는걸 보니 다이얼과 관련이 있음을 알 수 있다...
Intent.ACTION_VIEW는 view가 있는걸보니 보여주는 것과 있다는 것을 유추할 수 있다... 

데이터 (Data) -> 작업에 필요한 데이터의 uri를 지정한다. 보통 uri객체로 액션과 결합하여 사용한다. 예)Uri.parse("tel:010-1234-1234")

카테고리 (Category) -> 인텐트의 유형을 더 구체적으로 지정하는 역할을 한다. 
예: `Intent.CATEGORY_HOME`은 홈 화면 애플리케이션을 시작할 때 사용됩니다.

엑스트라 (Extras) -> 복잡한 데이터를 인텐트에 전달하기 위한 키-값 쌍의 추가 정보입니다. 다양한 타입을 넣어서 전해줄 수 있다.

728x90
반응형

댓글