[Android] About ConstraintLayout

오늘은 최근에 사용하기 시작한 ConstraintLayout에 대해 이야기해볼까 합니다.
“이제야 ConstraintLayout을 사용하기 시작했다구요!?”
네.. 그렇습니다.
두달 전까지만 해도 저는 LinearLayout과 RelativeLayout을 이용해 UI를 그렸습니다.
하지만 새 프로젝트를 시작하며 ConstraintLayout과 CoordinatorLayout을 사용해보고는 자연스럽게 LinearLayout과 RelativeLayout의 사용 빈도가 줄어 들었습니다.
특히 RelativeLayout은 더욱요.

ConstraintLayout

이 단어를 검색하기만 해도 수많은 사이트들이 쏟아져나올겁니다.
한 2년 전 쯤에 처음 접한것 같아요.
한창 LinearLayout과 RelativeLayout을 사용하는 제게는 굳이 왜 써야되는지 이해가 안갔습니다.

TIL

[Android] Fragment Example

오늘 포스트는 이전 포스트에서 언급했던 Fragment에 대해서 간단한 예제를 만들어 보려고 합니다.
주말에 포스팅 하려고 했는데 시간도 시간이고 개인적인 스터디를 따로 하고 있어서 짬이 나지 않네요 ㅜㅜ.
개인적인 스터디에 대해서 필요한 포스팅은 또 따로 진행하도록 하겠습니다.
각설하고 시작해봅시다.

어떤 예제를 만들 것인가?

사실 너무 간단한 예제입니다.
스크린샷부터 볼게요.

2개의 Fragment를 만들고(분홍색, 파란색)
Fragment 1 버튼을 눌렀을 때는 분홍색 Fragment가
Fragment 2 버튼을 눌렀을 때는 파란색 Fragment가 보이도록 할 겁니다.

[Android] About fragment

좋은 예제나 라이브러리에 심심치 않게 Fragment를 사용하는것을 보았습니다.
잘은 모르겠지만 Activity와 비슷한 것 같은데..
명확한 차이를 알 수 없어 알아보았습니다.

일단 Fragment가 나오기 전 상황을 좀 알아야 겠군요.

Activity, Context

안드로이드 시작과 함께 Activity가 무엇인지 Context가 무엇인지 알아야 했습니다.
기존에 C, C++, Java를 배울때와는 사뭇 다르고 저에게는 러닝 커브또한 굉장히 높았습니다.
점점 익숙해질 무렵 Activity는 어플리케이션 구성 요소로 단어 그대로 사용자가 어떠한 행위를 하기 위해 작용할 수 있는 화면이고
Context는 Activity에 따라 정보를 담고 있는 인터페이스라는것을 알게되었습니다.
이 두가지의 개념으로 화면단위를 컨트롤하고 문제없이 개발이 되는 줄 알았습니다.

어플리케이션의 덩치는 날로 커져갔습니다.
단순히 Multi Activity로 해결되던 어플리케이션이 그 이상의 수준을 넘어 Super Ultra Multi Activity로 엄청난 서비스를 제공하는 어플리케이션이 등장합니다.

그런데 여기서 문제점이 생깁니다.
많이 흡사한 페이지가 여러개인데.. 그때마다 Activity와 Layout이 하나씩 생성되고 중복 코드들이 기하급수적으로 늘어나게 됩니다.

이때 Google에서 Fragment를 조용히 내놓습니다.

TIL

[Android] 앱이 갑자기 꺼지는 이슈

이번 포스트는 며칠전에 맞닥들인 이슈와 해결을 서술할까 합니다.

WTF?

구글맵을 사용하는 앱을 한창한창 개발중에 이슈가 터졌습니다.
구글맵 화면에서 마커를 보여주거나 이미지를 보여주는등 이런저런 처리를 하는데 앱의 퍼포먼스가 갑자기 떨어지기 시작했습니다.
그러더니 앱이 갑자기 꺼지는 사태가.. 심지어 앱이 비정상 종료되었고 다시 실행하겠냐는 팝업이 뜨지 않았습니다.
테스트로 사용한 폰은 무려 Galaxy S8+였는데..
사실 이 페이지를 그때 생성한것이 아니고 한달전부터 생성해서 써오던 페이지였는데 이런 크리티컬한 이슈라니 조금 황당했습니다.

원인을 찾자

항상 하던대로 로그캣을 켜봤습니다.

[iOS] 새로운 뷰컨트롤러를 시작하는 방법

iOS

이틀…

버튼을 눌렀을때 메뉴페이지를 띄우는 부분을 구현할 차례가 왔습니다.
아직 iOS개발 초짜다 보니 이런것을 알아가는데도 시간이 굉장히 오래 걸리는 것 같습니다.
무려 이틀이나 걸렸네요.
검색해도 잘 안나오는 것이 안드로이드처럼 접근하면 안될 것 같다는 느낌이 듭니다.
각설하고 정리를 시작합니다.

ViewController

프로젝트 생성시 만들어지는 뷰 컨트롤러를 Main으로 잡았습니다.

ViewController는 위와 같습니다.
오른쪽 위에 메뉴를 눌렀을때 MenuViewController가 뜨도록 할거에요.

TIL

[ETC] Kotlin vs Java

ETC

아직까지는..

회사나 개인 프로젝트에서 사용하는 언어는 Kotlin보다는 Java입니다.
하지만 요즘 주변에서 Java만큼이나 Kotlin에 대해서 정보가 많이 들어옵니다.
아직 사용해보지 않은 Kotlin에 대해서 짧게나마 알아보고자 합니다.

Kotlin

Kotlin은 JVM, Android, Browser를 위한 정적 타입의 프로그래밍 언어입니다.
정적 으로 타입이 지정된다는 것은 Java와는 다른것입니다.

TIL

[iOS] UILabel을 클릭했을때 처리

iOS

개인 프로젝트를 진행하면서..

UILabel을 탭했을때 페이지를 넘어가거나 특정 일을 처리해야 하는 경우가 생겼습니다.
iOS와 특히 Objective C 문법 개념을 같이 학습하려고 하니 필요한 부분들은 정리해 둘 필요가 있는것 같습니다.
그래야 안잊어 버립니다..

검색해보니 생각보다 간단하게 처리할 수 있을 것 같습니다.
저는 viewDidLoad에 아래와 같이 UILabel을 클릭했을때 호출할 delegate와 action을 설정하였습니다.

1
2
3
4
5
6
7
8
- (void)viewDidLoad {
...
[labelMenu setUserInteractionEnabled:YES];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)];
[tapGesture setDelegate:self];
[labelMenu addGestureRecognizer:tapGesture];
...
}

그리고 같은 파일안에서 labelTap을 정의하고 처리작업을 넣었습니다.

1
2
3
- (void)labelTap:(UITapGestureRecognizer *)recognizer {
NSLog(@"label is tapped");
}

이제 해당 UILabel을 클릭하면 Log가 찍히는 것을 볼 수 있을 것입니다.

TIL

[Android] About Material Design

Material?

머티리얼 디자인은 기존에 안드로이드의 사용성, 가독성이 떨어지는 디자인을 개선하고 일관되도록 하는 지침입니다.
빠른 디바이스의 성장에 발맞추어 UI/UX도 진화해야 한다고 생각한 구글의 주도하에 이루어지고 있습니다.
구글은 모바일과 데스크탑 그리고 이외에 다양한 디바이스에서 적용할 수 있고 또 그렇게 하도록 가이드하고 있습니다.

머티리얼 디자인은 질감이 느껴지는 표면(tactile surfaces)과 대담하고 선명한 그래픽 디자인(bold graphic design),
그리고 아름답고 직관적인 사용자 경험을 위한 자연스러운 애니메이션을 특징으로 합니다.

설명이 어렵다구요? Google Developers에서 제작한 영상을 보면 더 쉽게 와닿을겁니다.

[Objectiv-C] id에 대해서

설명에 앞서

블로그에 쓰고있는 순서는 배움의 순서와는 상관이 없습니다.
단지 제가 필요하거나 혹은 방문자분들께 도움이 될만한 정보를 조각내서 올릴 예정입니다.
강좌 방식을 원하는 분들과는 조금 거리가 있을 수 있습니다.

포인터는 포인터인데..

객체를 가리키기 위한 포인터를 선언 할 때 해당 객체의 클래스를 지정합니다.

1
NSString *str;
TIL

PNG? SVG?

ETC

이미지…

공부용으로 만들고있는 어플리케이션에 사용할 이미지를 찾고있는데 꼭 다운로드 포멧에 PNG와 함께 SVG가 있었습니다.
너무 당연하게 PNG로만 다운받아서 사용하고(사실 이게 쓰기도 편하긴 한데..) 있었는데 문득 SVG가 무엇인지 궁금했습니다.
그래서 짧은 시간 동안 특징만 알아보고 앞으로 PNG와 SVG의 사용을 달리하려고 합니다.