메뉴 건너뛰기

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.}


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


  1. 스토리보드 짜는 방법

    Date2015.07.16 Views15419
    Read More
  2. 탭 뷰에 탭 추가하기, 아이콘 넣기

    Date2015.07.16 Views9360
    Read More
  3. 푸쉬 알림 기능. GCM (Google Cloud Messaging) 사용하기 (3)

    Date2015.07.16 Views6267
    Read More
  4. 푸쉬 알림 기능. GCM (Google Cloud Messaging) 사용하기 (2)

    Date2015.07.16 Views7292
    Read More
  5. 푸쉬 알림 기능. GCM (Google Cloud Messaging) 사용하기 (1)

    Date2015.07.16 Views6726
    Read More
  6. 네트워크 상태 변화 감지하기(BroadcastReceiver 사용)

    Date2015.07.16 Views9935
    Read More
  7. 옵션 메뉴 동적으로 생성하기

    Date2015.07.16 Views6926
    Read More
  8. EditText의 글자 수 제한 걸기

    Date2015.07.16 Views13881
    Read More
  9. 사용자 정의 팝업창 띄우기

    Date2015.07.16 Views6337
    Read More
  10. 체크 박스(CheckBox)의 이미지 바꾸기

    Date2015.07.16 Views6398
    Read More
  11. 이미지 버튼(ImageButton) 만들기

    Date2015.07.16 Views7114
    Read More
  12. 이미지의 Orientation를 체크해서 이미지 회전하기

    Date2015.07.16 Views7658
    Read More
  13. 화면 회전에 따른 애니메이션 효과 구현하기

    Date2015.07.16 Views8055
    Read More
  14. 화면 해상도에 관계없는 레이아웃(Layout) 만들기

    Date2015.07.16 Views8641
    Read More
  15. 네트워크를 통해 받은 이미지를 파일로 저장하고, 크기 조절해서 불러오기

    Date2015.07.16 Views6155
    Read More
  16. 특정 폴더에서 오래된 파일 삭제하기

    Date2015.07.16 Views6767
    Read More
  17. ScrollView의 활용

    Date2015.07.16 Views6530
    Read More
  18. ViewFlipper 사용하기

    Date2015.07.16 Views9631
    Read More
  19. URL을 이용해서 이미지 다운로드 하기 (멀티 쓰레드 이용)

    Date2015.07.16 Views8992
    Read More
  20. URL을 이용해서 이미지 다운로드 하기

    Date2015.07.16 Views7401
    Read More
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved