목록개발자료/Android (30)
[위미르 개발팀] Android, iOS , Web 제작
안드로이드 스튜디오에서 Gradle을 이용하여 라이브러리를 추가하다보면Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536또는trouble writing output: Too many field references: 131000; max is 65536. You may try using --multi-dex option.와 같은 에러로 인해 빌드가 불가능한 상황을 맞게 됩니다. 이럴때는 multidex를 사용하면 65536개가 넘는 메소드를 사용할수 있습니다. 먼저 app.gradle을 열어주세요 그런다음 defaultConfig에 multiDexEnabled true를 추가합니다. and..
현재 보여지고있는 최상위 프래그먼트를 구하는 방법입니다 for (Fragment fragment: getSupportFragmentManager().getFragments()) { if (fragment.isVisible()) { //할일 } } FragmentManager에서 모든 프래그먼트를 구한다음 해당 프래그먼트가 보여지고 있는지 확인 합니다. 그리고 해당 프래그먼트가 무엇인지에 따라서 작업을 할때는 다음과 같이 확인 할수 있습니다. for (Fragment fragment: getSupportFragmentManager().getFragments()) { if (fragment.isVisible()) { if(fragment instanceof 프래그먼트클래스){ //할일 } } }Fragmen..
각종 API를 사용하다보면 인증서 키를 요구하는 경우가 있습니다. 릴리즈버전의 apk와 디버그용 apk는 서로 이 값들이 다르기 때문에 두 환경에서 모두 작동하게 하려면 두가지 모두 등록을 해주어야 정상적으로 디버깅과 릴리즈가 가능합니다. 터미널에서 커맨드로 이것들을 확인하기에는 디버그버전의 경우 경로도 잘 모르겠고 불편이 이만저만이 아닙니다. 하지만 안드로이드 스튜디오에서는 이것을 그러한 작업없이 바로 볼수가 있는데 안드로이드 스튜디오에서 Gradle 탭을 찾아주세요 이 탭의 위치는 개인마다 배치한 위치가 다를수가 있으니 왼쪽 탐색기 부분과 모두 살펴 보세요 이 탭을 열어보시면 이러한것들이 나오는데 제가 열어놓은 경로를 그대로 타고 가서 signingReport를 더블 클릭 해보시면 위와 같이 MD5와..
안드로이드에서 앱에 파일로 존재하는 html을 Webview에 띄우는 방법입니다. 먼저 html파일이 들어갈 위치는 Android Studio 프로젝트 기준 Project/app/src/main/assets 입니다. assets 폴더는 없다면 만들면 됩니다. 원래 웹뷰에서 인터넷의 url을 로드할때와 큰 차이는 없습니다. 기본 동작 코드는 다음과 같습니다. Webview webview = (Webview) findViewById(R.id.webview); webview.loadUrl("file:///android_asset/파일명"); assets폴더에 넣고 urlUrl에 assets의 경로를 정확하게 입력해주는게 핵심입니다.
디자인상에서 프로필사진을 원형으로 많이 나타냅니다. 하지만 안드로이드에서 이를 직접 구현하려고하면 android.support.v4.widget.CircleImageView라는 클래스가 존재하지만 이름과는 달리 원형으로 나타나지않습니다. 그래서 보통 무조건 원형으로만 나타나도록 하는 이미지뷰 라이브러리를 사용 하곤 하지만, 어차피 이미지뷰를 사용한다면 Glide는 거의 항상 사용하고 있을것입니다. Glide에서 이를 지원하는데, 그렇기때문에 이중으로 라이브러리를 사용할 필요가 없는것입니다. 먼저 사용법입니다. Glide가 4.0으로 버전업하면서 사용법이 많이 바뀌었습니다. apply()가 대표적인데요, 여기에서 변형이란 변형은 다 먹일수 있습니다. 우리가 필요한것은 원형자르기 이기 때문에 이것에 대해서 ..
ViewPager의 아이템에 이미지 하나를 보여주는 경우가 있는데, 이럴경우 뷰페이저의 높이를 고정으로 설정했을때 기종별로 실제로 가지는 높이가 다르게 나타날수있고, 이미지의 사이즈에 따라서 유동적으로 변해야 합니다. 그래서 ImageView를 adjustBoundView = true 로 설정해도 뷰페이져가 고정된 높이를 가지게 되면 빈공간이 보이게 될것입니다. 그래서 뷰페이져의 높이를 wrap_content로 설정을 해도 안드로이드 기본 뷰페이져는 wrap_content적용시 match_parent와 똑같이 나타난다는 문제가 있습니다. 이를 해결하기 위해서는 ViewPager를 상속받은 클래스를 만들어서 onMeasure를 오버라이딩 해주어야 합니다. package com.wimir.example pu..
체크박스 여러개를 사용할때 다음과같이 전체를 체크하는 체크박스가 있고, 이에 연동되는 다른 체크박스들이 있을때 전체를 누르면 나머지것들이 체크되고 전체를 제외하고 나머지중에 하나라도 체크해제하면 전체동의 부분만 체크해제 되어야 할때가 있습니다. 이를 전체동의를 누르면 모든 체크박스가 체크되고 나머지 3개가 모두 체크되면 전체동의 체크박스도 같이 체크되며전체 체크된상태에서 하나라도 체크해제한다면 전체동의 체크박스가 같이 체크해제되도록 한 소스코드입니다. @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { switch (compoundButton.getId()){ case R.id.all_check: isall ..
Glide는 분명 이미지 로딩에 있어서 좋은 라이브러리는 맞지만 비트맵을 받아서 사용할경우가 있는데, 이때는 이미지를 로딩한 이미지뷰에서 비트맵을 가져오려고하면 일반적인 비트맵이 들어있지않아서 비트맵을 가져오는데 어려움이 있습니다. Glide 4.0버전부터 지원하는것이 있는데 이미지를 로딩할때 비트맵으로 가져와서 이를 이미지에 넣고 동시에 다른곳에 이용하는것입니다. 먼저 프로젝트의 gradle 파일에 다음을 추가해주세요. repositories { mavenCentral() google() } dependencies { implementation 'com.github.bumptech.glide:glide:4.4.0' annotationProcessor 'com.github.bumptech.glide:co..
안드로이드에서 상황에 따라 뷰를 정의할때 어떠한 뷰는 보여야할때와 보이지 않아야할때가 있습니다. 이럴때 setVisibility에서 gone과 invisible을 사용하게 되는데, 이 둘을 사용을 하면서도 차이를 모르고 사용하는 분들이 많이 있습니다. 이 둘은 보이지 않는다는점은 같지만 차이는 뷰가 공간을 그대로 차지하고있느냐 완전히 없어지느냐 하는 것입니다. RelativeLayout에서 다른 뷰를 기준으로 위치를 잡았을때 기준으로 잡은 뷰가 invisible일 경우 해당뷰에서 아무런 영향이 없지만, gone일 경우 기준이 된 뷰가 사라졌으므로 해당뷰의 위치가 변경됩니다. 그리고 LinearLayout에서도 horizontal 일때와 vertical 일때 모두 중간의 뷰가 invisible이면 빈공간이..
요즘은 거의 대부분이 안드로이드 스튜디오로 넘어 갔지만, 기존에 사용하던툴의 익숙함과 기존에 존재하고 있던 프로젝트때문에 어쩔수없이 이클립스를 계속 사용하는 분들이 아직도 있습니다. 하지만, ADT는 구글에서 SDK버전을 업데이트를 공식적으로 중단 하여 개발에 불편한점이 몇몇 존재합니다. 일반 이클립스에서 플러그인 형식으로 ADT를 설치 했을 경우 디버깅모드로 연결해서 어플리케이션을 Run 할수는 있지만 로그캣을 읽을수 없는 현상이 있습니다. 이럴경우, 이클립스 인스톨러에서 Eclipse IDE for Android Developers 라고 되어있는것을 설치하시면 됩니다. 이클립스용 SDK만 설치되어 있다면 설치후 별다른 설정없이 바로 안드로이드 개발이 가능하고, 로그캣도 문제없이 출력됩니다. 우측상단에..