Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형

안드로이드(Android) 레이아웃에 애니메이션 기능을 이용해 시각효과 주기

 

개발환경 : window 7 64bit, Eclipse Mars, Android 4.2.2

 

안드로이드에서는 레이아웃을 애니메이션 효과를

줄수 있습니다. 리스트에서 글이 서서나 나타나면서

커진다던지 아니면 화면전환이 서서히 사라지듯이

표현하는 기능 말이죠.

 

 

레이아웃에 애니메이션효과를 주기위해 우선 추가

해야할 xml 파일이 있습니다.

res/drawable 폴더에 2개의 xml 파일을 추가합니다.

애니메이션 효과를 주기 위한 옵션값들입니다.

List_layout_controll.xml animation 값에 scale.xml 셋팅합니다.

그리고 메인 activity 레이아웃에 list_layout_controll.xml

셋팅하시면 됩니다.

 

list_layout_controller.xml

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
 android:delay="80%"
 android:animation="@drawable/scale" />

 

scale.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >

    <scale
        android:duration="2000"
        android:fromXScale="0.1"
        android:fromYScale="0.1"
        android:pivotX="20%"
        android:pivotY="20%"
        android:startOffset="100"
        android:toXScale="1"
        android:toYScale="1.0" />

</set>

 

메인 activity 레이아웃 입니다. ListView 에 애니메이션

효과를 주기 위해 layoutAnimation 속성값에

list_layout_controll.xml 파일을 링크합니다.

 

<?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" >

    <ListView
        android:id="@+id/myListView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layoutAnimation="@drawable/list_layout_controller"
        android:persistentDrawingCache="animation|scrolling" />

    <Button
        android:id="@+id/myRestartButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="다시시작" />

</LinearLayout>

 

메인에 리스트를 만들기 위한 함수입니다.

샘플로 텍스트들을 만들어 ArrayAdapter 객체를

만든후 ListView 에 셋팅합니다.

 

private void setupListView() {
	String[] listItems = new String[] { "안녕하세요. 녹두장군입니다.",
			"이것은 애니메이션 효과를 사용한 것입니다.", "다들 잘 지내시죠?",
			"사이트에 가서 소스보기","오늘은 청명한 가을날씨" };

	ArrayAdapter<String> listItemAdapter = new ArrayAdapter<String>(this,
			android.R.layout.simple_list_item_1, listItems);

	ListView lv = (ListView) this.findViewById(R.id.myListView);
	lv.setAdapter(listItemAdapter);
}

 

이미 xml 에 애니메이션 효과를 다 셋팅해 놓았기 때문에

메인 Activity 에서는 별로 할게 없습니다. setContentView()

에 메인 레이아웃을 셋팅해 주기만 하면 됩니다.

아래는 전체 소스입니다.


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

public class SampleActivity15 extends Activity {
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		loadScreen();
	}

	private Button.OnClickListener restartButtonOnClickListener 
                                       = new Button.OnClickListener() {

		public void onClick(View v) {
			loadScreen();
		}
	};

	private void loadScreen() {
		setContentView(R.layout.activity_sample_activity15);
		setupListView();

		Button MyRestartButton = (Button) findViewById(R.id.myRestartButton);
		MyRestartButton.setOnClickListener(restartButtonOnClickListener);
	}

	private void setupListView() {
		String[] listItems = new String[] { "안녕하세요. 녹두장군입니다.",
				"이것은 애니메이션 효과를 사용한 것입니다.", "다들 잘 지내시죠?",
				"사이트에 가서 소스보기","오늘은 청명한 가을날씨" };

		ArrayAdapter<String> listItemAdapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, listItems);

		ListView lv = (ListView) this.findViewById(R.id.myListView);
		lv.setAdapter(listItemAdapter);
	}
}

 

반응형
Posted by 녹두장군1
,