2015.04.05 22:18


FAQ : 프로그래밍적으로 키보드 숨김/감춤/보기. 액티비티 시작시 키보드 숨김/감춤/보기, EditText선택시 키보드 안뜨게하기 등 소프트 키보드 동작 관련 질문에 대한 답변

1. 키보드 감추기

EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

2. 키보드 보여주기
EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);

위 코드로 안보이는 경우 아래코드도 시도해보세요
- imm.showSoftInputFromInputMethod (editText .getApplicationWindowToken(),InputMethodManager.SHOW_FORCED);

onCreate등에서 제대로 동작하지 않는다면 
Handler로 post를 해서 위 코드를 실행시켜보세요.

3. 키보드 토글 - 위 두가지 방법으로 안되는 경우 다음과 같은 코드로 동작하는 경우가 있습니다.
imm.toggleSoftInputFromWindow(editText.getApplicationWindowToken(),  InputMethodManager.SHOW_FORCED, 0); 

4. 액티비티 시작시 자동으로 키보드 보여주기
AndroidManifest.xml의 activity 태그의 속성에 android:windowSoftInputMode="stateVisible" 혹은 "stateAlwaysVisible"삽입

5. 액티비티 시작시 자동으로 키보드 보여주지 않기
AndroidManifest.xml의 activity 태그의 속성에 android:windowSoftInputMode="stateHidden" 혹은 "stateAlwaysHidden" 삽입

6. 에디트 텍스트 선택해도 키보드 안뜨게 하기
EditText xml 속성에서 inputType 을 0으로 주면 안뜹니다.


신고


Posted by injunech
2015.04.05 17:01


IPv4 유효성 검사 정규식


설명 하기 앞서  정규식의 간단한 개념?적 의미는

일정한 규칙을 가진 문자열의 집합을 어떠한 형식으로 나타낼수 있는 형식 언어 라고 한다.


정규식을 이용하여 유효성 검사를 할때 / /로 감싸주어야 한다.

"를 사용하면 잘못된 방법


 IPv4 정규식은 아래와 같다.


/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/

?

분석


?크게 정규식을 2개로 나누어 보았다.

1. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}


2. ([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

?



1번부터 해석을 해보겠다.

?

 ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}

 

? ^  :  뒤에오는 문자, 숫자로 정규식을 시작하겠다는 의미

 -> 위의 정규식을 보면 ^로 시작하고 소괄호로 감싸주었는데 다음 소괄호 안에 있는 정규식으로 시작 하겠다는 의미 이다.


[] 를 정규식에서는 META ?문자 라고 하는데 [] 안에 있는 문자로 정규식에 들어갈 범위를 지정해주는 것


[0-9] 0 ~ 9 까지 문자열을 사용하겠다는 의미

[1-9] 1 ~ 9 까지 문자열을 사용하겠다는 의미

[0-4] 0 ~ 4 까지 문자열을 사용하겠다는 의미

[0-5] 0 ~ 5 까지 문자열을 사용하겠다는 의미


이 정도 설명했으면 대충은 의미가 갈것이라고 생각한다.


뭐.. 0~9, 1~9 , 0~9 등등 뒤에 문자의 조합으로 시작하겠다는  의미구나

이제 나머지 이해가 되도록 설명을 하겠다.


| :  프로그래밍 공부를 조금이라도 한사람이라면  OR 라는 의미라는것을 대충 짐작을 했을텐데 맞다

     OR와 같은 의미


자 그럼 한층더 이해도가 높아 지지 않는가??!

정규식 안에 들어가는 1, 2, 25 는 그 형태 그대로 문자, 문자열 그대로 인식된다.

\. 은 문자열  comma 를 의미


 ^    ((  [0-9]  |  [1-9][0-9]   |   1[0-9]{2}  |    2[0-4][0-9]  |   25 [0-5]) \.){3}

시작    0~9  OR  1~9  0~9   OR   1 0~9       OR  2 0~4 0~9   OR  25 0~5   .


{n}을 설명하면 이제 모두 이해가 될것이다.

x{n} : n반 큼 반복하다. 즉 앞의 x가 n만큼 반복 될것이라는 의미



 ^    ((  [0-9]  |  [1-9][0-9]   |   1[0-9]{2}  |    2[0-4][0-9]  |   25 [0-5]) \.){3}

시작  (( 0~9  OR  1~9  0~9   OR   1 0~9       OR  2 0~4 0~9   OR  25 0~5   . ) <-앞의 모든 식이 3번 반복

                                                  ↑ 앞의 식이 2번 반복


자 다시한번 정리를 한다면

 ^  : 시작    

 [0-9]  : 0~9  - 1 자리 숫자   1,2,3,4,5,6,7,8,9,

 [1-9][0-9] : 1~9, 0~9  - 2자리 숫자  10~99

 1[0-9]{2}  : 1, 0~9, 0~9 - 3자리 숫자 100 ~ 199

 2[0-4][0-9] : 2, 0~4, 0~9 -  3자리 숫자 200 ~ 249

 25 [0-5] : 25, 0~5 - 3자리 숫자 250~ 255

--------여기까지 각 식마다 |가 붙었기때문에 1자리, 2자리, 3자리 숫자중 위의 조건에 맞춰 다 들어 갈수있다는것을 알수 있다.

  \.   :  . comma

{3} : 위의 숫자가  3번 반복 즉  Ip주소 1.255.11. 이런식의 문자가 들어갈수 있다는 의미

        최대 숫자가 255 인것은 ip주소에서 쓸수 있는 숫자가 255까지 표현 할수 있기 때문에


여기까지 1번 식의 설명이였다.. 1번이 이해가 된다면 2번도 마찬가지 이기때문에 충분이 분석이 가능할 것이다.


1. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}


2. ([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$


$ :  예) x$  x로 끝내겠다는 의미

즉 마지막에 $표시는 앞의 식으로 끝내겠다는 의미이다.



즉 77.11.22.33

이런식으로 끝내겠다는 의미이다.


JavaScript에 다음 정규식을 적용 시켜보는 예제이다.



function checkIpForm(ip_addr){
 
 var filter = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/;

 if (filter.test(ip_addr) == true){
  return false;
 } else{
  alert("IP 주소 형식이 틀립니다.");
  return true;
 }

}



참조 site

http://www.nextree.co.kr/p4327/


정규식을 테스트 해 볼수 있는 website이다. 정규식을 만들어보고 잘 맞는치 테스트 해볼수 있다.http://gskinner.com/RegExr/  


신고

'Programming > Etc' 카테고리의 다른 글

ASCII Code Table  (0) 2017.02.21
정규식 문법 이해  (0) 2015.04.05
2015년 프로그래밍 언어 사용률  (0) 2015.03.05
[Tistory] 티스토리 본문 폭 변경하기  (0) 2015.02.22
[Git] Git 설치 및 초기 설정  (0) 2015.02.16


Posted by injunech
2015.04.05 15:06


배경 : 
 안드로이드 앱을 등록할때, 2.2~ 2.3 버전별 앱과
 4.0 이상의 버전에 대한 앱을 만들고,
 이를 같은 배포 버전인 1.1로 하여 사용자에 따라 해당 앱을 다운로드 받게 하기 위함.

방법 :
 SDK버전별 앱을 두개를 만들고,
 각 배포 버전으로 똑같이 한다.
 단, 버전 코드를 다르게 해야 마켓에 동시에 활성화를 시킬수 있다.
 따라서 버전코드는 다르게 하고, 버전은 똑같이하여 APK 만들어서 마켓에 올린 후, 둘다 활성화 시킨다. 
 예) 2.2~2.3 용 : 버전코드 1, 버전 1.1
      4.0 ~     용 : 버전코드 2, 버전 1.1

신고

'Operating System > Android' 카테고리의 다른 글

Android Market SDK버전별 어플 등록하기  (0) 2015.04.05


Posted by injunech

티스토리 툴바