Programming 106

[Android] 키보드 위에 레이아웃, 버튼 올리기

자주 작업할 때는 적용 시키기가 쉽지만,, 한동안 작업을 하지 않다가, 막상 버튼을 키보드 위에 올리려고 하면, 가물가물... 먼저 적용하려고 하는 Activity의 Manifest 정보에 android:windowSoftInputMode="adjustResize" 를 추가한다. 이 옵션은 키보드가 화면을 가렸을 때 현재 보여지는 화면의 크기로 리사이징을 할 것인지에 대한 값이다. 따라서 위의 옵션을 주게 되면 Activity 화면 크기 자체가 줄어들게 된다. 그리고 적용시킬 레이아웃 또는 버튼에 아래와 같이 추가하면 된다. RelativeLayout에서 alignParentBottom을 주면 키보드 위로 올라오게 배치할 수 있었지만.. 가끔 안먹을 때가 있어서...고민을 많이 하게 되는데. 위와 같이 ..

Programming/Android 2016.07.26

[Hybrid, Web] 키 입력시 숫자만 가능하도록 세팅.

오래만에 글 올리네요. 모바일 웹 그리고 일반적인 웹의 input tag 에서 키 입력 제어하는 방법입니다. 모바일 웹의 경우 type 으로 숫자키보드를 보이게 하거나, pattern 에 정규식을 넣어서 숫자를 제어하는 경우가 많습니다. 하지만! 가끔씩.....적용이 안되는 단말기가 있더군요. 특히 type의 경우 tel로 해놓아도 커스텀 키보드의 경우는 지원되지 않는 경우도 발생합니다. 키 입력시 자바스크립트로 제어 코드를 넣는다면 간단히 해결 가능합니다. 아래와 같은 input tag에.... onkeypress 이벤트에 validate 라는 function을 넣어주면 됩니다. function validate() { if (event.keyCode >=48 && event.keyCode

[Android] 클릭 이벤트를 뒤에 배치된 레이아웃에 전달되지 않게 하기

느낌은 아는데 제목을 정하기가 쉽지 않군요. 레이아웃을 작업할 때 뒤에 배치된 버튼이나 레이아웃에 대한 클릭이벤트를 무시하고 싶을 때가 있습니다. 화면 전체를 덮는 레이아웃을 만들어서 하위에 있는 이벤트를 막는 경우도 있구요. 아래의 코드를 화면 전체를 덮는 최 상단 레이아웃에 적용 시키면, 하위에 있는 레이아웃에 클릭이벤트가 전달되지 않습니다. mTopLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); 위의 코드에서 핵심은 return 값을 true 주는 것인데 Developer 에는 아래 와 같이 적혀 있습니다...

Programming/Android 2015.11.27

[Javascript,Java]ReplaceAll 에서 점, dot(.) 문제 해결하기.

자바스크립트에는 replaceAll이 존재하지 않는데 기본으로 제공하는 것처럼 포스팅 했군요. replaceAll 관련 function을 추가하는 포스팅을 했었는데요. 관련 페이지를 첨부합니다. [Javascript] 자바스크립트에서 replaceAll 하기 (Click!) ====================================================================================== 자바스크립트에서 replace를 사용하였을때 점(.)이 다른 문자로 잘 치환되나, replaceAll을 사용하였을 경우 모든 문자로 인식하는 문제점이 있다. 물론 자바에서도 마찬가지 인데, 간단하게 아래와 같이 사용하면 점(.)을 다른 문자로 치환할 수 있다. //replaceAl..

Programming/Web 2015.10.08

[Javascript] backspace, delete 키 이벤트 잡기

웹에는 많은 이벤트들이 존재하는데요. 흔히 키 입력이벤트를 잡아낼 때, keypress 또는 keyup 이벤트를 사용합니다. 하지만...두 이벤트들은 backspace, delete 키는 잡아내지 못한다는 점... 두 이벤트를 포함해서 잡아내고 싶을때는 "keydown" 을 사용하시면 됩니다. 아래의 필드에 키를 입력해 보시면 이벤트 차이를 알 수 있습니다. - keypress - keydown

Programming/Web 2015.06.08

[Android] 앱 캐시 제거(Webview 등)

오랜만에 글쓰네요.. 프로젝트가 안정화 단계에 접어들다보니 포스팅할만한 내용이 없었네요. 하이브리드 앱을 제작하다보면 앱캐시로 인해 변경된 화면이 표시가 안되는 경우가 종종 있었는데요. 앱캐시를 확실하게 날릴 수 있는 코드입니다. /** * 앱 캐시를 가차없이 지운다. */ public static void clearApplicationCache(Context context, File file) { File dir = null; if (file == null) { dir = context.getCacheDir(); } else { dir = file; } if (dir == null) return; File[] children = dir.listFiles(); try { for (int i = 0; i ..

Programming/Android 2015.04.27

[Android] Notification에 큰 이미지 적용하기

최근에 많은 앱들이 젤리빈(Android 4.1) 버전에서 추가된 BicPictureStyle을 이용하여 노티바에 큰 이미지를 보여주고 있다. 두손가락을 이용해 위로 드래그 하게 되면 접히고, 아래로 드래그 하면 큰이미지가 보이면서 열리게 된다. 즉..접혔을때의 컨텐츠와 열렸을때 서로 다른 컨텐츠를 지정할 수 있다. 필자는 다양한 버전을 지원하기 위해 v4 support library를 사용하였으며 해당 값들의 세팅은 임의로 지정하였다. /** * 먼저 NotificationCompat Builder를 선언한다. * Builder의 경우 접혔을 때 노티바에 표시할 컨텐츠를 설정한다. */ NotificationCompat.Builder builder = new NotificationCompat.Build..

Programming/Android 2014.12.30

[Javascript] 커스텀 이벤트 만들기.

jQuery의 경우 trigger를 통해 간단하게 커스텀이벤트를 만들 수 있다. 하지만 실제로는 약간은...복잡한 형태로 되어 있다. - 샘플코드 var customEvent; if (document.createEvent) { customEvent = document.createEvent("HTMLEvents"); customEvent.initEvent("fimtrus", true, true); } else { customEvent = document.createEventObject(); customEvent.eventType = "fimtrus"; } if (document.createEvent) { mtk.now.inputObj.dispatchEvent(customEvent); } else { mtk..

Programming/Web 2014.10.31

[Javascript] get으로 넘어온 파라미터를 Object 형태로 변환

아래와 같이 데이터가 주소에 포함되어 있을 때, 하나하나 꺼내오려면 상당히 귀찮다(어렵진 않지만...) http://fimtrus.tistory.com/1?data1=123&data2=1234 화면이 로딩되는 시점에서 아래 function을 넣어주면 주소에 포함되어 있는 파라미터 값들을 편하게 들고 올 수 있다. /** * @author jonghyun.jeong * @since 2014.04.01 * URL과 함께 넘어온 데이터들을 리턴한다. */ function getUrlValue( key ) { var valueObject = {}, hash, value; var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1)...

Programming/Web 2014.10.21