검색결과 리스트
Mobile Programming에 해당되는 글 28건
- 2010.11.11 Android 개발 Tip - 5. GestureListener
- 2010.11.10 Android 입문자를 위한 Tutorial - 7. 탭뷰의 이용
- 2010.11.09 Android 입문자를 위한 Tutorial - 6. 커스텀 위젯
글
Android 개발 Tip - 5. GestureListener
Mobile Programming/Android Tip
2010. 11. 11. 18:17
더블클릭 입력을 받을때는 어떻게 해야할까 ?
OnTouchEvent로 Down이 발생했을때 타이머를 봐서 몇초안에 다시 눌리면 ...
아아. 생각만해도 현기증난다.
안드로이드는 꽤나 세심하게 더블클릭에 대한 리스너도 만들어 두었다.
바로 GestureListener가 그것.
java 소스에서 GestureDetector.SimpleOnGestureListener 를 상속한 리스너 클래스를 만들고
GestureDetector 형 객체 선언,
해당 객체를 사용한 클래스의 생성자부분에서 new GestureDetector(context,new GestureListener());를 호출해준다.
그 객체의 리스너를 포함한 정보를 제공하는 문장으로 보인다 ^^
이제 GestureDetector를 등록한 해당 클래스에서 더블클릭이 발생했을때 GestureListener클래스로 자동 호출이되고,
그 클래스내의 오버라이딩 함수로 이벤트가 전달된다.
class GestureListener extends GestureDetector.SimpleOnGestureListener{ AnimationDrawable ani; @Override public boolean onDoubleTap(MotionEvent e) { // doubletap이 발생할때 할일. } }
GestureDetector mGesture; mGesture = new GestureDetector(context,new GestureListener()); if(mGesture.onTouchEvent(event)) return true;
'Mobile Programming > Android Tip' 카테고리의 다른 글
Android 개발 Tip - 7. 단말기 화면 사이즈 얻어오기 (0) | 2010.11.15 |
---|---|
Android 개발 Tip - 6. 이클립스 로그캣이 맛이갔어요! (2) | 2010.11.15 |
Android 개발 Tip - 4. 키보드 숨기기 , Edit 제한 넣기 (0) | 2010.10.21 |
Android 개발 Tip - 3. Landscape layout (0) | 2010.10.19 |
Android 개발 Tip - 2. MenuItem (0) | 2010.10.19 |
설정
트랙백
댓글
글
Android 입문자를 위한 Tutorial - 7. 탭뷰의 이용
Mobile Programming/Android
2010. 11. 10. 18:49
프로젝트하면서 이용했던 탭뷴데 , 다시 정리해둬야 할 것 같아서!
탭뷰는 조금 조잡하다 .
XML에서 탭뷰의 구성요소는 크게 3가지.
<TabHost>, <TabWidget> , <Layout>이다.
TabHost는 Tab을 보유한 레이아웃이며 ,
TabWidget은 흔히들 생각하는 탭,
Layout은 탭에따라 전환되는 "뷰"이다.
보통 전환할 수 있도록 FrameLayout안에 Linear등의 일반 레이아웃을 배치하는 것이 일반적이다.
Java에서 탭뷰 연결방법은 다음과 같다.
1. TabHost를 얻어온다 (findViewById)
2. Host의 setup함수 호출 ( 탭들을 add하기 위한 준비작업 )
3. Host의 newTabSpec을 통해 탭메뉴들을 생성.
4. TabSpec.setIndicater로 탭에 표시될 내용 지정
5. setContent로 XML에서 선언한 전환 뷰 지정
6. Host에 add
7. 3~6을 원하는 탭 메뉴 수만큼 추가
8. setCurrentTab으로 처음 탭뷰 진입했을때의 화면 지정.
탭뷰의 높이 또한 지정 가능하다.
모두 추가한뒤(7)에
for(int tab = 0; tab < tab_host.getTabWidget().getChildCount(); ++tab){ tab_host.getTabWidget().getChildAt(tab).getLayoutParams().height= 50; }
와 같이 for문을 작성하면 해당 height가 변경된다.
다음은 위에서 설명한 과정의 Java 소스 예이다.
TabHost tab_host = (TabHost)findViewById(R.id.tab_host); tab_host.setup(); TabSpec ts1 = tab_host.newTabSpec("TAB_HOME"); ts1.setIndicator("home"); ts1.setContent(R.id.home); tab_host.addTab(ts1);
다음은 XML코드의 일부분이다.
;; 사진은 우리 캠퍼스의 상징물. 암튼 탭뷰만을 보실때 실행화면은 다음과 같다.
'Mobile Programming > Android' 카테고리의 다른 글
AIDL을 이용한 RPC 서비스를 구현해보자! (0) | 2011.01.19 |
---|---|
Local Service를 이용해보자! (0) | 2011.01.18 |
Android 입문자를 위한 Tutorial - 6. 커스텀 위젯 (0) | 2010.11.09 |
Android 입문자를 위한 Tutorial - 5. ArrayList (0) | 2010.11.04 |
Android 입문자를 위한 Tutorial - 4. 라디오 버튼 (2) | 2010.10.21 |
설정
트랙백
댓글
글
Android 입문자를 위한 Tutorial - 6. 커스텀 위젯
Mobile Programming/Android
2010. 11. 9. 14:46
위젯을 사용자가 정의하고 이를 사용한다.
package geng.mm.jnu; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; public class ch9 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } class Editlength extends LinearLayout implements TextWatcher{ EditText mEdit; TextView mText; public Editlength(Context context) { super(context); init(); } public Editlength(Context context,AttributeSet attrs) { super(context,attrs); init(); } void init() { setOrientation(LinearLayout.VERTICAL); mEdit = new EditText(getContext()); mText = new TextView(getContext()); mText.setText("Now Length : 0 Char"); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); addView(mEdit,params); addView(mText,params); mEdit.addTextChangedListener(this); } @Override public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub mText.setText("Now Length : " + s.length() + "Characters"); } } class EditEcho extends LinearLayout implements TextWatcher{ EditText mEdit; TextView mText; public EditEcho(Context context) { super(context); // TODO Auto-generated constructor stub init(); } public EditEcho(Context context,AttributeSet attrs) { super(context,attrs); init(); } void init() { setOrientation(LinearLayout.VERTICAL); mEdit = new EditText(getContext()); mText = new TextView(getContext()); mText.setText("Now Length : 0 Char"); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); addView(mEdit,params); addView(mText,params); mEdit.addTextChangedListener(this); } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub mText.setText("Now Length : " + s + "Characters"); } }
외부 클래스로 만들고자 하는 위젯을 만들어야 한다.
본 예제에서의 위젯은 리니어 레이아웃을 기반으로한 텍스트뷰 위젯이므로 먼저 linearlayout을 상속하고, 위젯이 사용해야하는 두 생성자를 사용, 그리고 초기화 함수를 호출하여 위젯을 구성한다.
두 리니어 레이아웃 모두 텍스트 에디트 + 텍스트뷰이기 때문에 init함수에서 에디트와 텍스트뷰를 add하고 있다.
Text뷰의 변화 감지를위해 addTextChangedLister를 호출하고,
역시 implements 되어있기 때문에 현재 클래스에서 찾을 수 있도록 (this)를 넘겨주었다.
'Mobile Programming > Android' 카테고리의 다른 글
Local Service를 이용해보자! (0) | 2011.01.18 |
---|---|
Android 입문자를 위한 Tutorial - 7. 탭뷰의 이용 (0) | 2010.11.10 |
Android 입문자를 위한 Tutorial - 5. ArrayList (0) | 2010.11.04 |
Android 입문자를 위한 Tutorial - 4. 라디오 버튼 (2) | 2010.10.21 |
Android 입문자를 위한 Tutorial - 3. Layout (0) | 2010.09.28 |