본문 바로가기

개발/Android 개발 주저리

[Android] ListView 에서 처음과 끝 구분하기( 최상단 , 최하단 체크 하기 ) 안드로이드 ListView 를 사용하면서 최하단과 최상단을 체크할일이 생겼다최하단인지를 체크하는 이유는 하단에서 데이터를 더 가져오기 위함이고, 최상단에서 체크하는 이유는 Pull to refresh 때문이었다. 위 처럼 OnScrollListener 을 이용하여 최상단과 최하단을 체크할 수 있다. 더보기
[Android] Activity를 dialog띄웠을때 영역외 터치시 닫히는거 막기 액티비티를 다이얼로그로 띄우면 기본적으로 다일러로그 영역외(뒷배경)을 터치하면 다이얼로그가 닫힌다이를 막기 위해서는 아래와 같은 오버라이드해서 터치발생시 return 을 주면된다 @Override public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub Rect dialogBounds = new Rect(); getWindow().getDecorView().getHitRect(dialogBounds); if (!dialogBounds.contains((int) ev.getX(), (int) ev.getY())) { // 영역외 터치시 닫히지 않도록 return false; } return super.disp.. 더보기
[Android] 3초간 중복터치 막기 Android에서 간단하게 중복터치를 막는 방법입니다.3초간 또다른 액션이 들어온다면 return 을 통해 터치를 막습니다 // 중복터치 체크if (SystemClock.elapsedRealtime() - mLastClickTime < 3000){MMLog.d("중복터치 막음"); return; }mLastClickTime = SystemClock.elapsedRealtime(); 더보기
[Android] Android4.4 에서 루팅없이 ADB로 화면 녹화 하기 Android4.4 로 업데이트되면서 새롭게 추가된게 있습니다바로 화면녹화(Screen Recording) 기능이 추가되었습니다. 하지만 앱자체에서 제어할 수 있는건 아니고 ADB를 통해서 녹화가 가능합니다. 물론 루팅(rooting)는 필요없습니다. 사용환경: Windows / Linux / MAC Step.1[개발자 옵션 - USB디버깅] 옵션을 체크한뒤 컴퓨터와 연결 Step.2ADB가 설치된 경로로 이동(Windows 의 경으 CMD / Linux,MAC 의 경우 터미널 이용 )( android-sdk-windows\platform-tools) Step.3휴대폰 ADB접속 확인해보기platform-tools> adb devices List of devices attached0171352dxxxxx.. 더보기
[Android] OutOfMemory Error 해결방법 , 이미지 처리 이미지를 메모리에 올리지 않고, 이미지의 사이즈 구하는 방법 ( 이는 OutOfMemory 오류를 방지합니다 ) /** Get Bitmap's Width **/ public static int getBitmapOfWidth( String fileName ){ try { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(fileName, options); return options.outWidth; } catch(Exception e) { return 0; } } /** Get Bitmap's height **/ public static in.. 더보기
[Android] 국가별 언어 지정 코드(국가 코드) 언어 (국가) 폴더 이름 (언어) 폴더 이름 (언어 + 국가) 체코어 (체코) values-cs values-cs-rCZ 독일어 (독일) values-de values-de-rDE 독일어 (오스트리아) values-de-rAT 독일어 (스위스) values-de-rCH 독일어 (리히텐슈타인) valued-de-rLI 영어 (미국) values-en values-en-rUS 영어 (영국) values-en-rGB 영어 (캐나다) values-en-rCA 영어 (호주) values-en-rAU 영어 (뉴질랜드) values-en-rNZ 영어 (싱가포르) values-en-rSG 스페인어 (스페인) values-es values-es-rES 프랑스어 (프랑스) values-fr values-fr-rFR 프랑스.. 더보기
[Android]SQLite 기본 명령어 정리 데이터베이스 리스트 조회 ContextWrapper.databaseList(); ContextWrapper == ConText 데이터베이스 삭제 ContextWrapper.deleteDatabase("삭제할 데이터베이스명"); 예) if (Arrays.binarySearch(databaseList(), DATABASE_NAME) >= 0) { deleteDatabase(DATABASE_NAME); } 어플리케이션내에 데이터베이스 열거나 생성 ContextWrapper.openOrCreateDatabase("데이터베이스명.db", 데이터베이스모드, 쿼리가호출되는 커서를 선택); 예) SQLiteDatabase mydb=openOrCreateDatabase(DATABASE_NAME, SQLiteDatabas.. 더보기
[Android] 루팅(rooting)여부 확인하기 안드로이폰이 루팅이 되어있을경우 어플의 실행을 막고싶으면 폰이 루팅되어있는지 체크를 해야한다가장 간단한 방법은 두가지(솔직히 더는 모르겠다) 1.직접 su에 루트권한을 요청한다.2.루팅 구성파일 su 파일이 있는지를 체크한다. 일단 첫번째 방법이 가장 낳은듯 하다.. 두번째 방법은 파일 구성이 바뀌거나 하면 못잡아내므로.. 방법은 루팅권한 요청 -> 루팅권한 요청을 날려봤자 의미가 없으면 exception 발생즉 요청이 들어가면(수락을 하든 안하든 상관없이) exception이 발생하지 않으므로, 어플을 종료시켜버리면된다만약 예외처리가 발생하게되면 어플을 정상적으로 실행하면 된다. 뭐 그 반대로 해도될듯 하다 try {Runtime.getRuntime().exec("su");Toast.makeText(T.. 더보기