미리보기 스크린샷 최대 3장소개이미지 최대 10장5.5-Inch Retina Display 기준으로 디자인앱스토어에서 다른 해상도로 자동 리사이징 처리 [각 해상도별 사이즈]5.8-Inch Super Retina Display - 1125 x 2436미리보기 886 x 1920 5.5-Inch Retina Display - 1242 x 2208미리보기 1080 x 1920 4.7-Inch Retina Display - 750 x 1334미리보기 750 x 1334 4-Inch Retina Display - 640 x 1096미리보기 1080 x 1920 3.5-Inch Retina Display - 640 x 920미리보기 없음 [참고URL]앱 미리보기 규격 http://help.apple.com/itu..
배포용일 때 keytool -exportcert -alias -keystore | openssl sha1 -binary | openssl base64 Generate Signed APK 화면에서 Key alias 입력 내용 위 같은 화면에서 Key store 저장 경로 디버그용일 때(아래 내용 그대로 입력하면 됨) keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Volley 라이브러리를 이용해 개발 진행 시에 리턴되는 에러 메시지가 제대로 표시 되지 않을때가 있다.이럴때 onErrorResponse에서 해당 내용을 표시해 주면 더 쉽게 이해가 될텐데 그렇지 않아 이유를 알아보는데 한참 걸렸다. 방법은 다음과 같다. 1234@Overridepublic void onErrorResponse(VolleyError error) { Log.d(TAG, "onErrorResponse : " + String.valueOf(error));}Colored by Color Scriptercs 여지껏 보통 이렇게 에러 메시지를 확인 했다. 12345678910111213141516171819@Overridepublic void onErrorResponse(VolleyError er..
폰트 중 나눔바른고딕을 제일 좋아하는데 앱에 넣어보고 싶어 경량화 폰트를 찾아 보았지만 나오지 않네요.그래서 직접 만들어 보았습니다. 제작 관련해서 Spoqa 기술블로그를 참조하였습니다.https://spoqa.github.io/2015/10/14/making-spoqa-han-sans.html 일단 앱에서 잘 돌아가는 것까지는 확인 했습니다. ㅎㄷㄷ 한글완성형 모음 2,350자로 구성되어 있습니다. !"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧..
Icon-Small.png [29x29] ipad SettingIcon-Small@2x.png [58x58] iPhone Settings, iPad Settings for Retina displayIcon-Small@3x.png [87x87] iPhone Settings for Retina display Icon-40.png [40x40] iPad Spotlight resultsIcon-40@2x.png [80x80] iPhone Spotlight results, iPad Spotlight results for Retina displayIcon-40@3x.png [120x120] iPhone Spotlight results for Retina display Icon-60@2x.png [120x120] i..
Custom Dialog를 통해 EditText에서 내용을 받을려고 구현을 했는데 어찌된 것인지 java.lang.NullPointerException을 막 뿜어 댄다.분명히 구현된 부분에 이상은 없는데 도통 알 수가 없는 상황이었다. 구글신께 여쭤보니 문제는 Activity를 상속 받도록 한 것에 있었다. inputLink = (EditText) findViewById(R.id.inputLink);이놈이 부모 Activity를 상송받는 형태로 되어 있어서 다이얼로그에서는 값을 받지 못하고 NullPointException을 내는 것이었다. Custom 다이얼로그를 위해 캐스팅한 View를 상속받도록inputLink = (EditText) dialogView.findViewById(R.id.inputLi..
pc에서 배너 땜시 글이 가려져 내려씀 String strTest = "#우와 " + "어마어마한 스케일이네요. #25년 " + "동안 #4억 " + "이나 들여 만들다니 #취미생활";예를 들어 위와 같이 내용을 받는다면 내용에 들어 있는 링크를 추출하기 위해 setTextViewHTML(body, strTest);를 호출한다. body는 캐스팅된 TextView, strTest는 문자열 protected void setTextViewHTML(TextView text, String html) { CharSequence sequence = Html.fromHtml(html); SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);..
이번에 런칭한 앱에 욕심이 생겨 자꾸 기능을 추가하고 있다.원래는 간단한 게시판 네이티브앱을 만드는 것이었는데 이것저것 추가하다 보니 이번엔 페이스북 공유기능을 추가하게 되었다. 제가 만든 앱이 궁금해요?! 궁금하면 설치해 주십쇼~ 굽신굽신~https://play.google.com/store/apps/details?id=com.zzanfactory.interpoll 기존에 페이스북 로그인을 구현해 놓았기 때문에 크게 뭔가를 하지 않아도 가능하다. 일단 기초부터 정리하자면 1. build.gradle(app) 에 페이스북SDK를 추가한다.1234567dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:jun..
앱을 사용하다 홈버튼을 누르거나 다른 앱으로 이동한 후 다시 우리 앱으로 돌아왔을 때 앱을 새로 로딩하고 싶었다. 첨에는 lifeCycle을 이용하면 될거 같아 시도해 보았지만 앱내에서 Activity를 띄우는 것만으로도 Background로 인식하는 바람에 다른 방법을 찾다가우연히 발견하게 되었다. 역시 없는게 없어~ 결론은 액티비티 생명주기가 아니라 Application에 있었다. 출처 : http://yslibrary.net/2015/07/30/android_how_to_detect_app_is_background_or_not/ 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525..
가변적이지 않은 목록을 여지껏 노가다(?) xml로 배치해 오다가 이제야 방법을 알아 냈다.문득 GridLayout을 쓰면 어떨까 해서 확인해 보니...GridView를 활용한 방법이 딱! [String 내 배열리소스]1234567891011121314151617181920 서울 경기 인천 대전 세종 충남 충북 광주 전남 전북 대구 경북 부산 울산 경남 강원 제주 해외cs [activity_area.xml 원하는 위치에 GridView배치]12345678cs [activity_area_layout_item.xml GridView내에 보여지 레이아웃 아이템(난 버튼으로 처리)]123456789cs [아답터 소스]12345678910111213141516171819202122232425262728293031..
안드로이드 어플리케이션 업데이트 방법을 고민하던 중 구글플레이에서 정보를 가져와 업데이트를 유도하는 방법을 구현한 블로그를 찾았다. [참고] http://gun0912.tistory.com/8 자세하게 잘 설명되어 있지만 실제 구현해 보니 android.os.NetworkOnMainThreadException 이 나왔다.이 에러는 네트워크 관련 처리를 메인 쓰레드에서 처리할 경우 발생하게 된다고 한다.나 같은 초짜는 이런 부분이 어렵고 난감하다.그래서 내가 위 참고 소스에서 추가로 구현한 부분을 정리해 보았다. 우선 HTML 파싱을 위해 Jsoup 라이브러리가 필요하다.라이브러리는 http://jsoup.org/download에서 다운로드 받거나, 그레들에 다음과 같이 추가하면 된다.123dependen..
안드로이드 기본으로 Roboto를 지원하고 있었군...아쉽지만 한글은 안됨...ㅠㅠ android:fontFamily="sans-serif" // roboto regular android:fontFamily="sans-serif-light" // roboto light android:fontFamily="sans-serif-condensed" // roboto condensed android:fontFamily="sans-serif-thin" // roboto thin (android 4.2) android:fontFamily="sans-serif-medium" // roboto medium (android 5.0)
다이얼로그 관련 정리 [일반적인 다이얼로그]1234567891011121314151617181920212223AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( new ContextThemeWrapper(getActivity(), android.R.style.Theme_DeviceDefault_Light)); // 다이얼로그 디자인을 디바이스의 기본 형태를 사용하도록 처리 alertDialogBuilder.setTitle("타이틀");alertDialogBuilder .setMessage("다이얼로그 내용") .setPositiveButton("확인", new DialogInterface.OnClickListener() { @Overrid..
AccelerateDecelerateInterpolator()점점 빠르게 움직이다 점차 느려지는 동작 AccelerateInterpolator()점점 빠르게 동작 AnticipateInterpolator()애니메이션 시작 시 진행 방향 반대방향으로 동작 후 본래 방향으로 이동 AnticipateOvershootInterpolator()애니메이션 시작 시 진행 방향 반대방향으로 동작 후 종료지점을 오버하여 진행했다가 종료지점으로 다시 돌아 옴 BounceInterpolator()종료 지점에서 튕기는 스프링 효과 CycleInterpolator()사이클의 지정된 번호에 따른 애니메이션 반복. 속도 변화는 사인곡선에 따름(?).. DecelerateInterpolator()점점 느리게 동작 FastOutLin..
12345678910111213141516float[] matrix_sharpen = { 0, -1, 0, -1, 5, -1, 0, -1, 0}; private Bitmap createBitmap_convolve(Bitmap src, float[] coefficients) { Bitmap result = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig()); RenderScript renderScript = RenderScript.create(getActivity()); Allocation input = Allocation.createFromBitmap(renderScript, src); Allocation output = Alloc..
//EFFECT public static final String EFFECT_AQUA="aqua"; public static final String EFFECT_BLACKBOARD ="blackboard"; public static final String EFFECT_MONO = "mono"; public static final String EFFECT_NEGATIVE = "negative"; public static final String EFFECT_NONE = "none"; public static final String EFFECT_POSTERIZE ="posterize"; public static final String EFFECT_SEPIA = "sepia"; public static fina..
자바 어노테이션(Annotation)으로 컴파일러가 경고하는 내용 중에 제외시킬 내용을 설정할때 사용 [옵션] all : 모든 경고 제외 cast : 캐스트 연산자 관련 경고 제외 dep-ann : 사용하지 말아야 할 주석 관련 경고 제외 deprecation : 사용하지 말아야 할 메소드 관련 경고 제외 fallthrough : switch구문의 break문 누락 관련 경고 제외 finally : 반환하지 않는 finally블럭 관련 경고 제외 null : null블럭 관련 경고 제외 rawtypes : 제네럴을 사용하는 클래스가 불특정일때 경고 제외 unchecked : 검증되지 않은 연산자 관련 경고 제외 unused : 사용되지 않은 코드 관련 경고 제외 (컴파일러 경고가 발생하는 대부분의 코드상..