잡다한 프로젝트/안드로이드 7

<안드로이드> ios개발자의 안드로이드 개발 공부 1편

https://www.youtube.com/watch?v=WlJszSmK_es 일단 이거 정주행중, 현재 39분까지봄. 1. ios랑 안드랑 다른 점이 있는데, ios는 뷰컨트롤러 파일에서 어떤 화면을 사용할지 정할 수 있는데, 주로 정하는데 안드로이드는 Activity 파일에서 setContentView를 통해 어떤 layout을 사용할지 지정한다. 좀 더 말하면 ios도 코드상에서 어떤 뷰컨에 어떤 뷰를 넣고 그런게 가능한데, 일단 스토리보드상에서 뷰컨트롤러와 뷰가 기본적으로 연결되어 있는데, 이게 안드로이드는 코드상에서 아예 뷰컨트롤러가 Activity파일에 있고, 뷰가 아예 layout 파일로 따로 있다. 뭔가 ios는 하면서 뷰컨트롤러와 뷰가 함께 MVC에서 V의 영역에 해당하는 느낌이였다면 안..

<안드로이드> Fragment vs Activity 차이

[medium.com/mobile-app-development-publication/activities-or-fragments-a-little-sharing-c1ddc1041f79] 이걸 번역, 정리한다. 프래그먼트의 역사 2008년 안드로이드가 처음 나온 당시에는 엑티비티에 모든 뷰를 담고자 했다. 그리고 다른 스크린이 필요하면 그냥 액티비티를 한개 더 만드는 방법을 사용했다. 그러다 안드로이드 3.0에서 프래그먼트가 소개되었다... 프래그먼트는 타블릿을 위한거였다, 타블릿은 화면이 폰보다 크기 때문에 문제였다. 타블릿은 크니까 한 액티비티 안에 프래그먼트가 두개 들어올 수 있는다. 그에 반해 폰은 한 액티비티에 프래그먼트가 한개만 들어올 수 있다. 대신에 폰은 프래그먼트를 스왑 인 , 아웃 할수 있다..

<안드로이드> android studio에 assets 폴더에 1mb이상 파일 넣고 sqlite로 읽어야된다.

1,2단계로 나누면 1단계: assets폴더에 내가 외부에서 가져온 db파일을 넣어준다. 왜냐면 거기다 넣어야 apk로 만들어질때 접근 가능한 데이터들을 assets 폴더에 넣고 뺄거라 그렇다. 그니까 assets폴더에 디비 파일을 넣는 포인트가 중요하다. 그래서 이걸 위해 사용하는 방법이 assetManager로 파일을 열어 앱 내부에 새로운 경로로 파일을 복사해주어야 한다. [www.bubblecat.co.kr/2019/05/assets-database.html] 근데 문제가 assets폴더에 파일은 1mb이하여야 한단다... 내꺼는 40메가가 넘는다... 2단계: 1mb가 넘는 디비 파일을 assets 폴더에 넣는 방법. 찾았다. -> assets 폴더에 mp4로 확장자 바꿔서 넣으면 된다. ㅎㅎ

<안드로이드 개발> 화면 잘리는 문제 2편: 안드로이드 레이아웃 동적 대응

여전히 constraintLayout을 사용했다. 이전에는 서로 버튼 간에 margin을 제한한 방식으로 일일이 해주었다. 이번에는 가이드라인의 위치를 화면 width중에 10%, 20%, 30%등등 동적으로 변하도록 정했다. 그리고 첫번째와 두번째 가이드 라인 사이에 버튼을 위치시키는 방법으로 위치를 정했다. 결과적으로 화면 크기는 작고 픽셀 밀도가 높은 화면에서도 동적으로 반응하였다.

<안드로이드 개발> 화면 잘리는 문제 1편: 해상도, dp, ppi, dpi개념

음 s10E에서 좌측이 깨짐, 이런 경우 버튼 크기를 줄여야되나? 근본 문제는 맨 좌측 버튼들과 왼쪽 화면간의 레이아웃 관계가 지정되있지 않아서 그런거 같다. 안드로이드 기기별 대응이란 이름으로 검색하는데 해상도등 모르는 단어가 많이 나왔다. 일단 해상도를 알아보자. [m.blog.naver.com/PostView.nhn?blogId=k_bc19941&logNo=220965101916&proxyReferer=https:%2F%2Fwww.google.com%2F] 해상도란 즉 픽셀의 가로*세로 갯수를 표현한것이다. 모니터를 보면 qhd, uhd등 종류가 많은데 그게 해상도에 따른 것이였다. 근데 이제 여기서 추가 개념으로 ppi를 알아야 모니터의 화질을 표현할수 있다. ppi는 pixel per inch로..