Android实例(区域显示或隐藏加翻页动画)
Android实例(区域显示或隐藏加翻页动画)<div id="cnblogs_post_body">
我们经常会让一块区显示或者隐藏,但是setVisibility VISIBLE或者GONE的话有点单调,所以加上一个翻页动画会比较好看。
效果图
http://pic002.cnblogs.com/images/2012/338120/2012111716211579.png
http://pic002.cnblogs.com/images/2012/338120/2012111716220234.png
http://pic002.cnblogs.com/images/2012/338120/2012111716221485.png
代码
AnimationActivity.java
<div class="cnblogs_code">1 package com.android.animation;2 import android.app.Activity;3 import android.os.Bundle;4 import android.view.View;5 import android.view.ViewGroup;6 import android.view.animation.AccelerateInterpolator;7 import android.view.animation.Animation;8 import android.view.animation.DecelerateInterpolator;9 import android.widget.AdapterView; 10 import android.widget.AdapterView.OnItemClickListener; 11 import android.widget.ArrayAdapter; 12 import android.widget.ImageView; 13 import android.widget.ListView; 14 15 public class AnimationActivity extends Activity { 16 private ListView mPhotosList; 17 private ViewGroup mContainer; 18 private ImageView mImageView; 19 private static final String[] PHOTOS_NAMES = new String[] { 20 "num one", 21 "num two", 22 "num three", 23 "num fore", 24 "num five", 25 "num six" 26 }; 27 private static final int[] PHOTOS_RESOURCES = new int[] { 28 R.drawable.photo1, 29 R.drawable.photo2, 30 R.drawable.photo3, 31 R.drawable.photo4, 32 R.drawable.photo5, 33 R.drawable.photo6 34 }; 35 @Override 36 public void onCreate(Bundle savedInstanceState) { 37 super.onCreate(savedInstanceState); 38 setContentView(R.layout.animations_main_screen); 39 mPhotosList = (ListView) findViewById(android.R.id.list); 40 mImageView = (ImageView) findViewById(R.id.picture); 41 mContainer = (ViewGroup) findViewById(R.id.container); 42 43 // Prepare the ListView 44 final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 45 android.R.layout.simple_list_item_1, PHOTOS_NAMES); 46 47 mPhotosList.setAdapter(adapter); 48 mPhotosList.setOnItemClickListener(listener); 49 // Prepare the ImageView 50 mImageView.setClickable(true); 51 mImageView.setFocusable(true); 52 mImageView.setOnClickListener(viewlistener); 53 } 54 private AdapterView.OnItemClickListener listener=new OnItemClickListener() { 55 56 @Override 57 public void onItemClick(AdapterView arg0, View arg1, int arg2, 58 long arg3) { 59 mImageView.setImageResource(PHOTOS_RESOURCES); 60 applyRotation(arg2, 0, 90); 61 62 } 63 }; 64 private View.OnClickListener viewlistener=new View.OnClickListener() { 65 66 @Override 67 public void onClick(View v) { 68 applyRotation(-1, 180, 90); 69 } 70 }; 71 private void applyRotation(int position, float start, float end) { 72 // Find the center of the container 73 final float centerX = mContainer.getWidth() / 2.0f; 74 final float centerY = mContainer.getHeight() / 2.0f; 75 76 // Create a new 3D rotation with the supplied parameter 77 // The animation listener is used to trigger the next animation 78 final Rotate3dAnimation rotation = 79 new Rotate3dAnimation(start, end, centerX, centerY, 310.0f, true); 80 rotation.setDuration(500); 81 rotation.setFillAfter(true); 82 rotation.setInterpolator(new AccelerateInterpolator()); 83 rotation.setAnimationListener(new DisplayNextView(position)); 84 85 mContainer.startAnimation(rotation); 86 } 87 88 private final class DisplayNextView implements Animation.AnimationListener { 89 private final int mPosition; 90 91 private DisplayNextView(int position) { 92 mPosition = position; 93 } 94 95 public void onAnimationStart(Animation animation) { 96 } 97 98 public void onAnimationEnd(Animation animation) { 99 mContainer.post(new SwapViews(mPosition));100 }101 102 public void onAnimationRepeat(Animation animation) {103 }104 }105 private final class SwapViews implements Runnable {106 private final int mPosition;107 108 public SwapViews(int position) {109 mPosition = position;110 }111 112 public void run() {113 final float centerX = mContainer.getWidth() / 2.0f;114 final float centerY = mContainer.getHeight() / 2.0f;115 Rotate3dAnimation rotation;116 117 if (mPosition > -1) {118 mPhotosList.setVisibility(View.GONE);119 mImageView.setVisibility(View.VISIBLE);120 mImageView.requestFocus();121 122 rotation = new Rotate3dAnimation(90, 180, centerX, centerY, 310.0f, false);123 } else {124 mImageView.setVisibility(View.GONE);125 mPhotosList.setVisibility(View.VISIBLE);126 mPhotosList.requestFocus();127 128 rotation = new Rotate3dAnimation(90, 0, centerX, centerY, 310.0f, false);129 }130 131 rotation.setDuration(500);132 rotation.setFillAfter(true);133 rotation.setInterpolator(new DecelerateInterpolator());134 mContainer.startAnimation(rotation);135 }136 }137 }
页:
[1]