본문 바로가기
카테고리 없음

안드로이드 스튜디오 독학하기 22일째

by 인터넷떠돌이 2017. 3. 12.
반응형

안녕하세요?


어느덧 [Do it 안드로이드 앱 프로그래밍]이라는 책으로 독학하기를 이어가기 시작한지 몇일이 된 것 같은데, 이번 포스팅에서는 역시나 유용한 팁과 안드로이드 스튜디오가 2.3으로 버젼업이 되면서 변경된 사항을 포스팅하고자 합니다.


우선은 새로운 액티비티를 생성하고자 했늰데, 아래와 같이 시작을 하였습니다.



Layout폴더 위에서 우클릭을 한 다음, [New]->[Layout resource file]을 눌러서 새로운 레이아웃이 생성되도록 합니다.



여기서 한가지 실수를 하였는데, 안드로이드 스튜디오가 2.3버젼 이상일때 만들어진 프로젝트만이 Root element항목에다가 android.support.constraint.ConstraintLayout 이라는 것을 지정할 수 있었습니다. 이 글을 읽으시는 분들도 ConstraintLayout이라고 하는 것을 만들기 위해서는 안드로이드 스튜디오 2.3버젼 이상일 때 만들어진 프로젝트에서 가능하다는 사실을 기억하시기 바랍니다.


이 ConstraintLayout을 [제약 레이아웃]이라고 하는데, 무엇이 변경 되었느냐 하면 다음과 같은 변경점이 생겼다고 합니다.



여기서 버튼하나를 화면에 배치하면, 안드로이드 스튜디오 2.3부터는 화면 모서리 벽면이나 다른 컴포넌트 사이의 간격을 지정할 수 있습니다. 


우선 여기 사각형의 버튼하나만 봐도, 상하좌우로 동그란 버튼이 나 있는 것을 볼 수 있는데 이 버튼의 화살표를 화면 가장 자리로 끌어와서 연결할 수 있습니다. 왜 이런 과정을 거치는가 했더니, 이렇게 하면서 버튼의 위지를 제대로 고정할 수 있다고 합니다.



이렇게 위 스크린샷과 같이 사방으로 화살표를 화면 가장자리와 연결하고, 여기서 properties란에 보면 상단에 네모 박스가 나와있으며, 여기서 숫자가 적혀 있는 선이 사방의 벽에 닿아 있는 것을 볼 수 있는데, 이게 화면 가장자리까지의 거리를 나타낸다고 합니다. 실제로 제가 숫자를 변경하면, 버튼의 위치가 변경되었습니다.



위 스크린샷은 한번 붉은 색 선으로 강조 표시된 가이드라인을 적용해서 위치를 바꾸어 본 것입니다. 이처럼 익숙하지는 않지만, 그래도 어떻게 해보면, 사용이 가능한 것으로 생각이 되는 기능이 안드로이드 스튜디오 2.3에서 추가가 되었다는 생각이 듭니다.



맨 처음으로 [Do it 안드로디으 앱 프로그래밍]책에서 다음과 같은 내용이 액티비티를 바꾸는 것으로 나와 있었습니다.


Intent 변수이름 = new Intent(getApplicationContext(),바꿀 액티비티의 이름.class);

startActivity(변수이름);


이렇게 해서 액티비티를 바꿀 수 있다고 합니다. 그런데 제가 입력한 레이아웃이름을 입력했는데, 계속해서 붉은색 줄로 에러라고 표시가 되어 있었습니다. 처음에는 이유를 몰랐습니다만, 가만히 보니 그 이유는 다음과 같았습니다.



제가 했던 실수는 다른게 아니라, 레이아웃을 만들게 아니라 위 스크린샷 처럼 액티비티(activity)를 만들었어야 한다는 것이었습니다. 즉, 레이아웃만 만들어서는 화면의 전환을 만들 수가 없다는 것이었습니다.



마지막으로 변경할 액티비티의 이름은 바로 java파일의 파일명을 확장자 떼고서 입력하는 것이었습니다. 즉 


Intent 변수이름 = new Intent(getApplicationContext(),바꿀 액티비티의 자바파일 이름.class);

startActivity(변수이름);


이런 식으로 만들어서 액티비티의 변경을 가능하게 만들 수 있습니다.



변경될 2번째 activity_menu.xml을 위 스크린샷과 같이 이전처럼 버튼을 배치하도록 하고, 다음에는 USB 케이블로 연결된 스마트폰을 통해서 제대로 작동이 되는지 확인을 해 보았습니다.



우선 좌측의 스크린샷과 같이 제대로 디자인이 된 것이 나오기는 합니다만, 문제는 저 버튼을 누르면 제대로 다른 액티비티로 넘어가는 것이 아니라, 우측의 스크린샥과 같이 에러 메세지가 나오면서 앱이 종료가 되는 현상이 벌어졌습니다. 어디가 문제인지 찾아보니, 이 경우는 버튼의 properties란에 있는 onClick란에 있는 값과 MainActivity.java에 있는 public void onClick란에 있는 값이 다를 경우 발생하는 에러였습니다.


실제로 이 값을 제대로 MainActivity.java에 입력했을 경우에는 아무런 문제없이 액티비티가 변경되는 것을 볼 수 있었습니다.



다음으로는 이전에 버튼의 배열을 해결하지 못한 DrumBox앱의 버튼배열을 수정해 보고자 했습니다. 일단 안드로이드 스튜디오가 2.3버젼이 되면서 이전과는 다른 제약 레이아웃이 기본으로 나오기 때문에, 위 스크린샷처럼 버튼이 화면 가장자리로 부터 얼마나 떨어지는지를 일일히 지정하였습니다.


마지막으로 USB를 연결한 스마트폰으로 확인한 결과 옆의 스크린샷과 같이 나오는 것을 볼 수 있었습니다.


이에 대해서는 다소 연습이 필요한 사항이라는 생각이 듭니다. 특히 가이드라인을 동원해서 어떻게 배치를 한다면, 제법 그럴듯하게 반듯한 버튼의 배치가 될 것이라는 생각도 듭니다만, 일단 이번 포스팅에서는 여기까지만 언급을 하도록 하겠습니다.


그래도 이번 실습으로 얻은 것이 하나 있다면, 바로 안드로이드 스튜디오의 버젼업으로 인해서 예전 포스팅에서 처음 Drumbox를 만들었을 때 버튼의 배치가 에러가 생긴 것을 볼 수 있었을 것입니다.


그 에러는 어떻게 해결이 되었고, 이제 버튼의 위치를 제대로 배열하기 위해서는 어느정도 디자인적인 측면에서 연습이 필요하다는 생각이 듭니다. 


이제와서 드는 생각이지만, 안드로이드의 환경이 2번이나 급격하게 바뀐 것을 보았고, 저와 같은 사람은 따라 가는 것도 매우 큰 일이라는 생각이 듭니다. 

반응형