Android常用アニメーションViewGroupの使用


View Groupは、Viewサブクラスを含むコンテナであり、SDKドキュメントからはLayoutと一部のViewの親であることがわかり、View GroupでLayoutを削除するコントロールを追加することができます.以下では、ViewGroupでアニメーション効果で画像を追加して削除する方法を見てみましょう.
レイアウトファイルxmは2つのボタンと1枚の画像を定義します.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutId"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <Button 
        android:id="@+id/add"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="    "/>
    <Button 
        android:id="@+id/delete"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/add"
        android:text="    "/>
    
    <ImageView 
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"/>

</RelativeLayout>

Activityファイル
package com.example.animation;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.ImageView;

import com.example.widgetdemo.R;

public class AnimationViewGroup extends Activity {

	private Button add = null;
	private Button delete = null;
	private ImageView image = null;
	private ViewGroup viewGroup = null;
	private boolean isExist = true;  //   true      ,       

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.viewgroup);
		add = (Button) findViewById(R.id.add);
		delete = (Button) findViewById(R.id.delete);
		image = (ImageView) findViewById(R.id.image);
		viewGroup = (ViewGroup) findViewById(R.id.layoutId);

		add.setOnClickListener(new addListener());
		delete.setOnClickListener(new deleteListener());
	}

	/**
	 *         
	 * 
	 * @author Administrator
	 * 
	 */
	private class addListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			if(!isExist){
				AlphaAnimation alpha = new AlphaAnimation(0.0f, 1.0f);
				alpha.setDuration(1000); //           
				alpha.setStartOffset(500); //     500ms   
				image.setImageResource(R.drawable.ic_launcher);
				viewGroup.addView(image, new LayoutParams(
						LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
				image.setAnimation(alpha);
				isExist = true;
			}
		}

	}

	/**
	 *         
	 * 
	 * @author Administrator
	 * 
	 */
	private class deleteListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			if(isExist){
				AlphaAnimation alpha = new AlphaAnimation(1.0f, 0.0f);
				alpha.setDuration(1000); //           
				alpha.setStartOffset(500); //     500ms   
				alpha.setAnimationListener(new RemoveAnimationListener()); //         
				image.setAnimation(alpha);
				isExist = false;
			}
		}

	}

	private class RemoveAnimationListener implements AnimationListener {

		@Override
		public void onAnimationEnd(Animation animation) {
			// TODO Auto-generated method stub
			System.out.println("End");
			viewGroup.removeView(image); //     
		}

		@Override
		public void onAnimationRepeat(Animation animation) {
			// TODO Auto-generated method stub
			System.out.println("Repeat");
		}

		@Override
		public void onAnimationStart(Animation animation) {
			// TODO Auto-generated method stub
			System.out.println("Start");
		}

	}
}

点でピクチャを削除すると、まずフェードアウト効果が実行され、アニメーションが終了するとアニメーションリスナーでピクチャが削除されます.
ソースのダウンロード
クリックしてリンクを開く