메뉴 건너뛰기

2015.07.16 19:35

ViewFlipper 사용하기

조회 수 9631 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

아이폰이나 안드로이드 어플들을 사용하다보면, 화면을 왼쪽 또는 오른쪽으로 드래그했을때,
화면이 휙휙 슬라이딩 되는 것처럼 전환되는 것들을 볼 수 있습니다.


ViewFlipper은 이러한 효과를 더 손쉽게 사용할 수 있도록 제공해줍니다.

ViewFlipperExample.zip

 

 

ViewFlipper를 사용한 예제와는 조금 다르지만, 이런 효과를 구현할 수 있습니다.


ViewFlipper은 FrameLayout을 상속받습니다.  


FrameLayout은 AbsoluteLayout과 비슷하게 Layout안의 각각의 View 들이 서로 좌표를 겹쳐서 가집니다.
(나중에 그려진 View가 먼저 그려진 View를 덮어 버립니다.) 이 점을 주의해야 합니다.


View를 좌우로 밀었을 때의 애니메이션 효과를 미리 만들어줍니다.
이전에 다루었던 애니메이션 부분들과 어느 정도 이어집니다. 

 

[안드로이드] Layout을 통해 Tween Animation 구현하기 (투명도 조절) - http://snowbora.com/390
[안드로이드] Layout을 통해 Tween Animation 구현하기 (개체 움직임) - http://snowbora.com/391
[안드로이드] Layout을 통해 Tween Animation 구현하기 (Set 태그) - http://snowbora.com/392



appear_from_left.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate 

android:fromXDelta="-100%p" 

android:toXDelta="0%p" 

android:duration="500"/>

<alpha 

android:fromAlpha="0.0" 

android:toAlpha="1.0" 

android:duration="500" />

</set>


appear_from_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate 

android:fromXDelta="100%p" 

android:toXDelta="0%p" 

android:duration="500"/>

<alpha 

android:fromAlpha="0.0" 

android:toAlpha="1.0" 

android:duration="500" />

</set>


disappear_to_left.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate 

android:fromXDelta="0%p" 

android:toXDelta="-100%p" 

android:duration="500"/>

<alpha 

android:fromAlpha="1.0" 

android:toAlpha="0.0" 

android:duration="500" />

</set>


disappear_to_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate 

android:fromXDelta="0%p" 

android:toXDelta="100%p" 

android:duration="500"/>

<alpha 

android:fromAlpha="1.0" 

android:toAlpha="0.0" 

android:duration="500" />

</set>


그리고 main.xml을 작성해봅니다.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

    

<TextView  

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello"/>

    

    <ViewFlipper

android:id="@+id/viewFlipper"  

   android:layout_width="fill_parent" 

   android:layout_height="fill_parent">


<TextView

   android:id="@+id/view1"

   android:layout_width="fill_parent"

   android:layout_height="fill_parent"

   android:layout_gravity="center"

   android:text="View 1"

   android:textSize="30px"/>


<Button

    android:id="@+id/view2"

android:src="@drawable/icon"

android:text="View 2"

android:layout_width="wrap_content"

   android:layout_height="wrap_content"/>

<ImageView

android:id="@+id/view3"

android:src="@drawable/icon"

android:layout_width="fill_parent"

   android:layout_height="fill_parent"

   android:layout_gravity="center"/>

   

</ViewFlipper>

</LinearLayout>


마지막으로 actViewFlipper.java 파일에 다음과 같은 코드를 입력합니다.

01.package View.Flipper;
02. 
03.import android.app.Activity;
04.import android.os.Bundle;
05.import android.view.MotionEvent;
06.import android.view.View;
07.import android.view.animation.AnimationUtils;
08.import android.widget.ViewFlipper;
09. 
10.public class actViewFlipper extends Activity {
11.    private ViewFlipper m_viewFlipper;
12.     
13.    private int m_nPreTouchPosX = 0;
14.     
15.    /** Called when the activity is first created. */
16.    @Override
17.    public void onCreate(Bundle savedInstanceState)
18.    {
19.        super.onCreate(savedInstanceState);
20.        setContentView(R.layout.main);
21.         
22.        m_viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper);
23.        m_viewFlipper.setOnTouchListener(MyTouchListener);
24.    }
25.     
26.    private void MoveNextView()
27.    {
28.        m_viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.appear_from_right));
29.        m_viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.disappear_to_left));
30.        m_viewFlipper.showNext();
31.    }
32.     
33.    private void MovewPreviousView()
34.    {
35.        m_viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.appear_from_left));
36.        m_viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.disappear_to_right));
37.        m_viewFlipper.showPrevious();
38.    }
39.     
40.    View.OnTouchListener MyTouchListener = new View.OnTouchListener()
41.    {
42.        public boolean onTouch(View v, MotionEvent event)
43.        {
44.            if (event.getAction() == MotionEvent.ACTION_DOWN)
45.            {
46.                m_nPreTouchPosX = (int)event.getX();
47.            }
48.             
49.            if (event.getAction() == MotionEvent.ACTION_UP)
50.            {
51.                int nTouchPosX = (int)event.getX();
52.                 
53.                if (nTouchPosX < m_nPreTouchPosX)
54.                {
55.                    MoveNextView();
56.                }
57.                else if (nTouchPosX > m_nPreTouchPosX)
58.                {
59.                    MovewPreviousView();
60.                }
61.                 
62.                m_nPreTouchPosX = nTouchPosX;
63.            }
64.             
65.            return true;
66.        }
67.    };
68.}


전체 프로젝트 파일을 첨부합니다.


List of Articles
번호 제목 날짜 조회 수
177 [Android 2.3] SharePreference 2015.07.01 7051
176 [Android 2.3] spinner file 2015.07.01 7647
175 [Android] 퍼미션 권한체크(테드퍼미션) 2021.09.14 616
174 [DB] 서버/클라이언트 소켓 통신하기 2015.07.13 20566
173 [DB]Android - DB 연동 기술 정리 2015.07.13 13798
172 [안드로이드 강좌] 초보자들이 많이 하는 실수 file 2015.08.11 6832
171 [안드로이드] Activity에 대해서 file 2015.07.16 6767
170 [안드로이드] 레이아웃의 기본1 file 2015.07.16 6962
169 [안드로이드] 레이아웃의 기본2 file 2015.07.16 7071
168 [안드로이드] 리스트 뷰의 한 항목에 대한 컨텍스트 메뉴 만들기 file 2015.09.04 9080
167 [안드로이드] 버튼 이벤트 처리하기 file 2015.07.17 7029
166 [안드로이드] 뷰(View)에 여백넣기 file 2015.07.17 7225
165 [안드로이드] 뷰(View)의 너비와 높이 지정하기 file 2015.07.17 7140
164 [안드로이드] 빠르게 사용할수 있는 컨텍스트 메뉴 만들기 file 2015.09.03 6789
163 [안드로이드] 콘텍스트 메뉴 사용예제 file 2015.09.03 7345
162 [안드로이드] 팝업메뉴 사용법 file 2015.09.03 9390
161 [안드로이드] 페이스북 같은 슬라이드 메뉴 만들기 file 2015.07.21 8182
160 [안드로이드] 화면추가 버튼 리스너 file 2015.07.22 7681
159 [안드로이드스튜디오] 단축키 2015.07.02 7160
158 [하이브리드앱] userAgent를 이용해서 웹 / 앱 접속 구분하기 2021.09.30 1282
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved