1. 한줄짜리 editview
이전에는 singleline이란 것을 사용했으나 지금은 deprecated되었음.
android:inputType="none" android:scrollHorizontally="true" 으로 해결 가능

2. 코드에서 IME 사라지게 하기 
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0); 

3. 코드에서 IME 나타나게 하기
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.showSoftInput(e_search, InputMethodManager.SHOW_IMPLICIT); 

4. focus 주기/ 뺏기
e_serch.requestFocus();
e_earch.clearFocus(); 

 허접한 글이지만, 도움이 되신다면 아래 손가락 꾹 눌러주세요.

'<안드로이드>개발 > 안드로이드/App' 카테고리의 다른 글

[TIP] Activity  (0) 2011.11.09
GalleryView 옵션  (0) 2011.07.14
EditView 관련 정리  (0) 2011.07.11
[팁] 소스코드에서 해상도 처리하기.  (0) 2011.07.06
[TIP] WebView  (0) 2011.03.22
[팁] TextView 관련 팁들  (0) 2011.02.21
Posted by 소혼
안드로이드의 다양한 해상도 땜에 가끔 귀찮을 때가 있다.

어쨌든 이러한 해상도 문제를 해결하기 위해 몇가지 꼼수를 써서 해결해 보았습니다.
정답이 아니며, 더 좋은 방법이 있으면 공유 부탁드립니다.
이전에 쓴 관련글 : [팁] Density를 고려한 어플리케이션 만들기.

1) onCreate에서 width, height 정보를 획득
Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int displayWidth = display.getWidth();
int displayHeight = display.getHeight(); 

2) width, height에 따라 변수 설정
if (displayWidth == 600 && displayHeight == 1024)
    isItTab = true; 

3) LayoutParams 조정하기
if (isItTab) {
LinearLayout.LayoutParams params = null;
params = (LinearLayout.LayoutParams) mylayout.getLayoutParams();
params.width = 105;
params.height = 66;
mylayout.setLayoutParams(params);
...
} else {
...
}

허접한 글이지만, 도움이 되신다면 아래 손가락 꾹 눌러주세요.


'<안드로이드>개발 > 안드로이드/App' 카테고리의 다른 글

GalleryView 옵션  (0) 2011.07.14
EditView 관련 정리  (0) 2011.07.11
[팁] 소스코드에서 해상도 처리하기.  (0) 2011.07.06
[TIP] WebView  (0) 2011.03.22
[팁] TextView 관련 팁들  (0) 2011.02.21
안드로이드 gles 첫번째 예제.  (0) 2010.11.02
Posted by 소혼
안드로이드의 WebView는 WebKit/android포트를
JNI 인터페이스를 통해 java형태로 제공하는 Widget 입니다.











1. html 파일로 네트워크에 접속하려면 permission이 필요합니다. 
   AndroidManifest.xml 파일에 
<uses-permission android:name="android.permission.INTERNET"/>  
   추가

 2. HTML에 <body onload="a();"> 와 같은 자바스크립트를 썼을 때 동작하지 않는 문제는 WebView가 기본적으로 Javascript 사용이 disable 되어 있기 때문입니다.
    wv.getSettings().setJavaScriptEnabled(true);

3. WebView를 load했을 때 오른쪽에 흰 줄(흰 배경)이 보이는 것은 scrollbar 영역이 잡혀있기 때문입니다.
이것을 사라지게 하려면 아래 한줄을 추가합니다.
   wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);


Posted by 소혼

Ellipsize
  텍스트가 너무 길 때, 자동 줄임 역할을 수행한다. (한줄로 보이게 하려면 maxLines="1")
    android:ellipsize="none" : 그냥 자름
    android:ellipsize="start" : 앞 부분에 ...
    android:ellipsize="middle" : 가운데 부분에 ...
    android:ellipsize="end" : 뒷 부분에 ...
    android:ellipsize="marquee" :

* ListView 안의 custom textview에서 Ellipsize 쓰려면
    android:scrollHorizontally="true"

textAppearance
   ?


코드에서 텍스트 사이즈를 바꿀 때 Unit 정보를 주는 법
예) sp를 주려고 한다면
ret.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);


HTML을 통해 스타일 주기
참고 : http://developer.android.com/reference/android/text/Html.html
참고 : http://developer.android.com/guide/appendix/faq/commontasks.html#selectingtext
    몇개 적용이 되진 않지만 HTML에 스타일을 줄 수 있다.
      예) wordView.setText(Html.fromHtml("<font color=red>test</font>"));
    안타깝게 폰트 크기 변경은 잘 되지 않는다.
    하지만 유사한 방법으로 <small>이란 태그를 사용하여 글자를 줄일 수 있다.



http://fanpro.springnote.com/pages/4801589.xhtml
http://babtingdev.tistory.com/251
http://blog.naver.com/PostView.nhn?blogId=lowmans&logNo=100118611161&redirect=Dlog&widgetTypeCall=true
Posted by 소혼
eclipse에서 안드로이드 앱을 실행할때 용량이 커지면 아래처럼 Launch canceled라는 에러 메시지가 뜨곤 한다.


uploading하다가 에러가 난 것인데, 해결 방법은 비교적 간단하다.
아래 그림처럼 Preference의 Android 탭을 선택하고 DDMS를 선택하여 connection time out을 늘려주면 된다.



Posted by 소혼
안드로이드 NDK하다 이런 에러를 만나서 검색을 해봤더니

9.04, 9.10에서는 NDK r5 로 컴파일 할수없다고 한다.

어쩔수 없이 10.10을 설치해야 했다.

설치하고 다시 환경설정을 하니 아무 문제 없이 정상동작했다.


PS> 그러나! 10.10으로 바꾸기 위해 데이터를 외장 하드에 백업하고 외장하드가 꽂힌채로 10.10을 설치했더니 이놈의 우분투가 외장하드에 설치되었다 ㅠ_ㅠ
뭐가 날라갔는지 도저히 알 수가 없다.
중요한 데이터는 백업본, 아니 원본이 남아있어서 살렸지만 이걸 찾아 해결한다고 어제 새벽한시까지 못잔걸 생각하니 눈물이 난다 ㅠㅠ
Posted by 소혼
TAG error
이제 3D 공부를 시작해봅니다.

FirstGLRenderer.java

Act3D1.java


Posted by 소혼

관련 글1 : http://bunhere.tistory.com/140 [Widget][예제]ListView with CursorAdaptor
관련 글2 : http://bunhere.tistory.com/153 [팁]기존에 생성된 (Sqlite3) DB를 안드로이드에서 이용하기

생성된 DB를 사용하는 것과 관련된 질문들이 많아 예제 프로그램을 작성해보았습니다.

옛날 만들었던 ListView with CursorAdaptor의 코드를 거의 그대로 들고 왔으나, DB를 만드는 부분은 153번의 initialize를 사용했습니다.

1. DB를 준비하자

먼저 DB 파일이 있어야 할 것입니다.
SQLITE3을 통해 아래와 같이 만들었습니다.(리눅스에서)

필요하신 분들을 위해 해당 파일 첨부합니다.

SQLite version 3.6.16
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table lecture (_id integer, name);
sqlite> insert into lecture values(1, 'ryuan');
sqlite> insert into lecture values(2, 'yesum');
sqlite> insert into lecture values(3, 'mindong');
sqlite> .q

2. 새 프로젝트를 만듭니다.
생성하는 방법은 익히 아실거라 생각됩니다. 중요한 것은 Package name입니다.
com.sohon.testDB 으로 패키지명을 정한 경우
해당 안드로이드 어플리케이션은 위 패키지 경로가 지정한 곳에 생깁니다.
그리고 /data/data/com.sohon.testDB 아래에 패키지 관련 파일들이 아래 그림과 같이 생기게 됩니다.
DDMS의 일부를 캡쳐한 화면입니다. 상단에 /data/data/는 다른 프로젝트들 떄문에 같이 캡쳐하지 못한 점 양해 부탁드립니다.

일단 위와 같이 새 프로젝트 정보를 입력하고 Finish를 누릅니다.
그러면 이클립스 개발환경이 뜹니다.

3. 코딩하기
ActTestDB.java 파일에 아래와 같은 내용을 코딩합니다
아래 내용은 관련글1과 관련글2의 내용을 합쳐놓은 코드와 유사합니다.
꼭 필요한 부분만 설명드리겠습니다. 관련글1,2를 참고하시기 바랍니다.

먼저 onCreate에서 initialze(this)를 통해 DB 파일을 asset으로부터, /data/data/com.sohon.testDB/databases 아래로 복사할 것입니다.

그리고 setAdaptor를 이용해 m_listbox에 DB를 연결합니다.
이것을 위해 수정해야 할 정보는 먼저 ROOT_DIR, DATABASE_NAME, TABLE_NAME 입니다.

실행하시면 아래와 같은 결과를 얻으실 수 있습니다.
에뮬레이터 resolution이 좀 이상한 것은 제 에뮬레이터 해상도를 이상하게 맞춰놔서 그렇습니다.(테스트용)


Posted by 소혼

화면 유지 : 
PowerManager.WakeLock



WIFI 유지 : WifiLock

WifiManager wManager = (WifiManager)mCtx.getSystemService(Context.WIFI_SERVICE);
WifiLock wLock = wManager.createWifiLock("HandsWIFILock");
wLock.acquire();

//doing something

wLock.release();
Posted by 소혼
< 계속 업데이트 합니다. 질문 환영 >
10-06-18 초기 문서
10-08-28 팁 몇개 추가
10-11-30 팁 하나 추가

- Listview


말그대로 List이다. 한 개 이상의 항목을 담아 뿌려주는 것을 기본으로 한다.
ListView는 다소 복잡한 Control이나 빈번히 사용하게 될 Widget이다.
ListView의 보이는 영역은 Scrollbar, 각 Row Item들, Selector (구분자? seperator? ), Divisor 로 이루어진다.

Scrollbar
위 그림에서는 Gallery와 Grid에 걸쳐있는 회색 계통의 긴 막대를 말한다.
Scrollbar는 ScrollView를 참조하면 될 것 같다.

RowItem
각각의 Row에 저장하는 정보들을 표현한다. 여기에 저장할 수 있는 정보는 매우 다양할 수 있기 때문에 다양한 Adaptor 형태로 ListView에 제공된다.
가장 기본 적인 것은 ArrayAdaptor이고, Database를 위해 CursorAdaptor도 제공한다.
사용자가 직접 재정의해서 다양한 정보들을 넣을 수 있다.

android.R.layout.simple_list_item_1
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2006 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
 
          http://www.apache.org/licenses/LICENSE-2.0
 
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:paddingLeft="6dip"
    android:minHeight="?android:attr/listPreferredItemHeight"
/>

Selector
Selector는 위 그림에서 Grid와 같이 사용자가 선택된 것을 알려주는 역할을 수행한다. 기본은 노란색 배경이라 너무 눈에 튀기 때문에 적당히 자신만의 Selector를 쓰는게 좋다.

Divisor
Divisor는 각 RowItem을 구분하는 역할을 하는 선을 말한다.

SectionIndexer, AlphabetIndexer
http://www.androidpub.com/97392
 

1) 만드는 법
   -
2) Adaptor 정리

3) style 바꾸는 법
   - selector 바꾸는 법
     selector를 바꾸는 법은 쉽다. 함수를 사용할 경우,
     mListView.setSelector(myDrawable);
   - background, foregound 바꾸는 법


4)

5) TIP
 a] 배경이 있는 Listview를 스크롤시, 회색이 나오는 문제
   android:cacheColorHint="#00000000" 을 추가
 b) 만약, listview의 아이템을 선택할 때 한 줄이 선택되지 않고 일부만 선택된다면 (textview가 있는 영역만 선택된다면)
   ListView의 layout_width="fill_parent" 속성을 확인할 것
 c) Custom ListView에서 Selector가 안보인다면,
   Selector의 기본 옵션은 Row 아래 깔리도록 되어 있는 것 같다. ListView 속성  
   android:drawSelectorOnTop="true"을 준다.
 d) ListView 아래 라인(Divisor) 제거하기
   listview.setDivisor(null);
 e) ListView 위아래 흐림 효과 막기
   android:fadingEdge="none"

6) 문제 해결
 setOnItemClickListener 가 동작하지 않을 때
 => 커스텀 뷰를 만들어서 쓸 경우, setOnItemClickListener가 동작하지 않는 경우가 발생했다. 문제는 커스텀 뷰에서 이벤트를 소비하고 있기 때문인데, 소비하는 부분을 찾아 제거해주는 것이 필요하다. 나의 경우, TextView와 marque 때문에 이런 문제가 발생했다. 3시간 소비 -_-;

* ListView 안의 custom textview에서 Ellipsize 쓰려면
    android:scrollHorizontally="true"
    http://stackoverflow.com/questions/1424276/ellipsize-not-working-for-textview-inside-custom-listview

참고 자료
http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html : 배경이 검게 나오는 것과 관련한 자료
http://blog.naver.com/PostView.nhn?blogId=kippee&logNo=130076565197&viewDate=&currentPage=1&listtype=0&userTopListOpen=false&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=undefined
http://www.androidguys.com
http://comma.byus.net/blog/2younow/trackback/6
Posted by 소혼
이전버튼 1 2 3 4 5 이전버튼

티스토리 툴바