note

터치해서 화면 전환 Flipper Touch 본문

Android/기본

터치해서 화면 전환 Flipper Touch

투한 2012. 1. 18. 16:55






터치 밀어내서 화면 전환 입니다(스마트폰 배경화면 화면이랑 비슷)





첨부파일 (구글에서 배포하는 파일)


 
xml파일은 res 폴더에 anim 폴더 생성후 파일을 붙여넣기 하면 됩니다

이미지 파일은 보는 폴더와 같이 하면 됩니다



 






<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ViewFlipper
        android:id="@+id/flipper"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>


package kr.android.flipper.touch;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ViewFlipper;

public class FlipperTouch extends Activity implements View.OnTouchListener {
	ViewFlipper flipper;

	// 터치 이벤트 발생 지점의 x좌표 저장
	float down_x;
	float up_x;
	int[] imageItems;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		imageItems = new int[] { R.drawable.image01, R.drawable.image02,
				R.drawable.image03 };
		flipper = (ViewFlipper) findViewById(R.id.flipper);

		for (int i : imageItems) {
			ImageView image = new ImageView(this);
			image.setImageResource(i);
			flipper.addView(image, new ViewGroup.LayoutParams(
					ViewGroup.LayoutParams.FILL_PARENT,
					ViewGroup.LayoutParams.FILL_PARENT));
		}
		flipper.setOnTouchListener(this);

	}

	public boolean onTouch(View v, MotionEvent event) {
		// 터치 이벤트가 일어난 뷰가 ViewFlipper가 아니면 return
		if (v != flipper)
			return false;

		if (event.getAction() == MotionEvent.ACTION_DOWN) {
			// 터치 시작지점 x좌표 저장
			down_x = event.getX();
		} else if (event.getAction() == MotionEvent.ACTION_UP) {
			// 터치 끝난 지점 X좌표 저장
			up_x = event.getX();

			if (up_x < down_x) {
				// 터치 할때 왼쪽방향으로 진행
				flipper.setInAnimation(AnimationUtils.loadAnimation(this,
						R.anim.push_left_in));

				flipper.setOutAnimation(AnimationUtils.loadAnimation(this,
						R.anim.push_left_out));

				flipper.showNext();
			} else if (up_x > down_x) {
				// 터치할때 오른쪽 방향으로 진행
				flipper.setInAnimation(AnimationUtils.loadAnimation(this,
						R.anim.push_right_in));
				flipper.setOutAnimation(AnimationUtils.loadAnimation(this,
						R.anim.push_right_out));
				flipper.showPrevious();
			}
		}
		return true;
	}
}


'Android > 기본' 카테고리의 다른 글

Xml 가져오기 (날씨)  (0) 2012.01.19
SQLite 연동하기  (0) 2012.01.18
ListIcon (ListView에 아이콘,버튼)  (0) 2012.01.18
News Service 주기적으로 데이터 가지고 오기  (0) 2012.01.18
SMSReceiver (BroadcastReceiver사용)  (0) 2012.01.18