[안드로이드 공부]/UI 50

java.lang.RuntimeException: Performing stop of activity that is not resumed

보통 스플래시, 로딩화면을 넣은 경우 발생함. 이런 경우 앱 포즈시 발생하는 에러! 에러: java.lang.RuntimeException: Performing stop of activity that is not resumed 해결 : private final int SPLASH_DELAY_MESSAGE = 100; Handler splashHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { switch (msg.what) { case SPLASH_DELAY_MESSAGE: startActivity(new Intent(mContext, MainActivity.class)); d..

안드로이드 툴바 우측 서랍 아이콘 만들기

안드로이드 액션바 우측에 원하는 이미지로 메뉴를 만들어 보자. 상위 버전의 경우 기본적으로 만들어지지만, 하위 버전의 경우에는 하나 하나 해줘야만 한다. 애플은 OS 버전이 올라가면 참 난감하게도 예전 API를 통보도 없이 없애 버리지만, 아직 구글은 친절하게 하위 버전에서도 사용 할 수 있도록 많은 지원을 아끼지 않고 있다. 1. 우선 툴바를 만들고2. 툴바에 메뉴를 붙이고3. 메뉴에 붙을 이미지를 Drawable로 만든다.4. 만든 drawable을 툴바에 붙인다. toolbar.setOverflowIcon(drawable); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(""); toolbar.addView(cust..

[안드로이드] EditText 여러개 포커스, 커서 변경

안드로이드 EditText가 여러개 있거나, 다른 곳으로 포커스를 옮겨야 할 경우가 있다. 어떻게 해야 할까? 1. 현재 에디트텍스트의 커서를 지운다.setCursorVisible(false) 2. 다른 에디트텍스트나 아이템에 커서를 살린다. setCursorVisible(true) 3. 죽이고, 살리면 살아난 애는 깜빡일까? 그냥 자고 있다. 포커스를 요청 해야 한다. 4. 포커스 좀 주세요... mEditText.requestFocus(); 이러면 끝났나? 그럼 혼난다. 1. 왠만하면 setCursorVisible(false)를 쓰지 마라. 2. 다시 살려야 하고 복잡해진다. 3. 그리고 setForcusable, setForcusableInTouchMode 는 기본으로 True 4. editable..

[안드로이드] EditText 맨 뒤에 커서 위치 시키기 -java.lang.indexoutofboundsexception setspan ends beyond length

안드로이드 에디트 텍스트의 맨 뒤에 커서를 위치 시키는 방법을 알아 보자. 이게 기본이 아니라는 것이 그렇지만... 공부 하라는 선생님의 말씀이라는 것 같아서... 숙제를 해본다. 1. 길이의 맨 뒤에 붙여 보자 editText.setSelection(editText.length()); 2. 선생님을 만나라java.lang.indexoutofboundsexception setspan ends beyond length 3. 선생님의 충고를 들어라. Editable editable = mFrontEditText.getText(); Selection.setSelection(editable, editable.length()); 4. 짐싸라. 5. 하산 하라. 6. 뒤통수 맞고 다시 책상에 앉아라.

[안드로이드] TextView 글자 흐르기 marquee 효과

글자가 흘러간다? HTML에서 많이 봐왔던 흘러가는 글자를 안드로이드에서도 할 수 있다? 당연히 코드 친구들인데 안 될리가 없다. 이 친구들끼리 흘러가는 세월의 이름은 marquee로 통한다. 간단히.... XML에서 아래와 같이 하고, android:ellipsize="marquee" android:focusable="true" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" marquee_forever 는 기본 값이 -1이다. 즉, 몇 번 반복 할 것인가 라고 유추 할 수 있다.1을 넣으면 1번만 100을 넣으면 100 번 흐른 뒤 멈춘다. 코드에서 textView.setSelected(true)를 해주면 된다. 단, 주의..

안드로이드 Edittext 엔터 인식 및 event null 처리

안드로이드 에디터 텍스트(edit text)에서 엔터키나 Done키를 받기 위해서는 아래와 같이 리스너(setOnEditorActionListener) 를 등록 하면 된다. @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if ( actionId == EditorInfo.IME_ACTION_DONE || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){ 그런데 여기서 문제가 있다. event가 null 이 들어 오는 것이다. 죽음이란 거다. 이럴 경우 null 처리(event != null &&)를 해주면 그만이겠거니 하고 생각 하겠지만... 그렇다면 엔터에 대한 반응 ..

EditeText 키보드 내리고 포커스 내보내기

EditText를 여러개 사용하다보면 포커스 때문에 불편한 점이 생길 때가 많다. 이럴 때는 필요할 때만 포커스를 넣고 그외에는 포커스를 기본적으로 죽여야 한다. 그렇지 않으면 시도 때도 없이 키보드가 올라가고 사라지지 않기 때문이다. 키보드 강제로 내리기 private void hideKeyBoard(){ InputMethodManager iM= (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); iM.hideSoftInputFromWindow(mEditText.getWindowToken(), 0); } 키보드의 포커스를 기본으로 다른 곳으로 보내기아래 코드를 다른 레이아웃등에 넣어 주면 수동으로 포커스를 줄 수 있다..