안 드 로 이 드 아이 폰 목록 데이터 보기 새로 고침 애니메이션 상세 설명

저 는 서로 다른 페이지 사 이 를 뛰 어 다 닐 때 재 미 있 는 애니메이션 을 좋아 하기 때문에 오늘 은 본의 아니 게 애니메이션 효과 가 좋 은 것 을 보 았 습 니 다.몇 가지 효과 도 는 다음 과 같 습 니 다.재 미 있 으 면 블 로그 에 쓰 세 요.즉,이 효 과 는 아이 폰 에서 View 의 전환 그림 효과 와 비슷 하고 오늘 은 위 에서 보 여 준 효과 만 소개 하 겠 습 니 다.
쓸데없는 소리 하지 말고 먼저 효 과 를 보고 코드 를 봐!!
효과 1:

효과 2:

효과 3:

효과 4:(오류 의 효과):

효과 5(회전 효과 1):

효과 6(회전 효과 2):

효 과 를 다 보 았 으 니 위의 효과 가 실 현 된 구체 적 인 코드 를 살 펴 보 세 요.중간 에 제 가 직접 테스트 하고 저 지 른 실 수 를 모두 주석 형식 으로 쓰 겠 습 니 다.여러분 이 사용 할 때 실 수 를 하지 않 으 면 됩 니 다!먼저 사용 하 는 레이아웃 파일 을 보 세 요.간단 한 레이아웃 입 니 다.
XML/HTML 코드

<?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/firstPage" 
 android:layout_width="fill_parent" 
 android:layout_weight="1.0" 
 android:layout_height="0dip"/> 
 <ListView 
 android:id="@+id/secondPage" 
 android:layout_width="fill_parent" 
 android:layout_weight="1.0" 
 android:layout_height="0dip" 
 android:visibility="gone"/> 
 <Button 
 android:id="@+id/startNext" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
 android:text="@string/next" 
 
 /> 
 
</LinearLayout> 
XML/HTML 코드
아래 에서 상기 효 과 를 실현 하 는 구체 적 인 코드 를 살 펴 보 겠 습 니 다.코드 에 표 시 된 순 서 는 위 에 표 시 된 효과 그림 과 일치 합 니 다.     
자바 코드

package com.xiaoma.www; 
 
import android.animation.Animator; 
import android.animation.AnimatorListenerAdapter; 
import android.animation.ObjectAnimator; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.animation.AccelerateInterpolator; 
import android.view.animation.CycleInterpolator; 
import android.view.animation.DecelerateInterpolator; 
import android.view.animation.Interpolator; 
import android.view.animation.OvershootInterpolator; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
 
/** 
* @Title: BetweenAnimationActivity.java 
* @Package com.xiaoma.www 
* @Description:       iPhone         
* @author XiaoMa 
*/ 
 
public class BetweenAnimationActivity extends Activity implements OnClickListener { 
 
 /**    */ 
 private Button startNext = null ; 
 private ListView firstPage = null ; 
 private ListView secondPage = null ; 
 
 /**     */ 
 private static final String firstItem[] = 
 {"    ","    ","    ","    ","    ","    ","    "}; 
 
 private static final String secondItem[] = 
 {"   ","   ","   ","   ","   ","   ","   "}; 
 
 /**              */ 
 private Interpolator accelerator = new AccelerateInterpolator(); 
 private Interpolator decelerator = new DecelerateInterpolator(); 
 
 /**      :              */ 
 private Interpolator accelerator1= new CycleInterpolator(45f); 
 private Interpolator decelerator1= new OvershootInterpolator(); 
 
 /** Called when the activity is first created. */ 
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.main); 
 
 /** 
  *       ,       onCreate         , 
  *                      onCreate()    
  *  ,  :  、      setContentView()   , 
  *    onCreate()         ,   :  !! 
  * */ 
 
 init(); 
 } 
 
 /** 
 *       
 */ 
 private void init(){ 
 
 /**    ,    */ 
 startNext = (Button)findViewById(R.id.startNext); 
 startNext.setOnClickListener(this); 
 
 firstPage = (ListView)findViewById(R.id.firstPage); 
 secondPage = (ListView)findViewById(R.id.secondPage); 
 
 ArrayAdapter<String> firstAdapter = new ArrayAdapter<String> 
  (this, android.R.layout.simple_list_item_1,firstItem); 
 ArrayAdapter<String> secondAdapter = new ArrayAdapter<String> 
  (this, android.R.layout.simple_list_item_1, secondItem); 
 
 firstPage.setAdapter(firstAdapter); 
 secondPage.setAdapter(secondAdapter); 
 
 } 
 
 @Override 
 public void onClick(View v) { 
 changePage(); 
 } 
 
 //         
 
 private void changePage() { 
 
 final ListView visiable ; 
 final ListView invisiable ; 
 
 if(firstPage.getVisibility() == View.GONE){ 
  visiable = secondPage ; 
  invisiable = firstPage ; 
 }else{ 
  visiable = firstPage ; 
  invisiable = secondPage ; 
 } 
 
//           ObjectAnimator   ,             ,   ,     ,            , //    ,       ,   ,    ,         ,       :    ValueAnimator   ,      //                 
 
 //   (              ) 
 //final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisiable, "rotationX",-90f, 0f); 
 ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visiable, "rotationX", 0f, 90f); 
 
 //    
 final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisiable, "rotationY",-90f, 0f); 
  ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visiable, "rotationY", 0f, 90f); 
 
 //   (     alpha         :           !!!) 
 //final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisiable, "alpha", 0.0f, 1.0f ); 
 //ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visiable, "alpha", 1.0f, 0.0f ); 
 
//   (          ,          rotationZ    ,     , ofFloat          ,    //         ,                    ,          ,    ,        ListView  //  ,           ,         ): ObjectAnimator.ofFloat(invisiable, "rotationZ",-90f, 0f); 
 
  visToInvis.setDuration(500); 
  visToInvis.setInterpolator(accelerator); 
  invisToVis.setDuration(500); 
  invisToVis.setInterpolator(decelerator); 
 
//       ,              ,          :              :  、  、    、 //     ,    : Animation         ,        
  visToInvis.addListener(new AnimatorListenerAdapter() { 
  @Override 
  public void onAnimationEnd(Animator anim) { 
 
   /* 
   *          : 
   *  :anim.isRunning(){//TODO} 
   *  :anim.isStarted(){//TODO} 
   *  :anim.end(){//TODO} 
   */ 
 
   visiable.setVisibility(View.GONE); 
   invisToVis.start(); 
   invisiable.setVisibility(View.VISIBLE); 
  } 
  }); 
  visToInvis.start(); 
 } 
 
}
마지막 으로 글 의 제목 은 페이지 애니메이션 이 라 고 하 는데 사실은 이런 애니메이션 들 은 페이지 위 에 만 국한 되 는 것 이 아니 라 만약 에 여러분 들 이 플러그 인,애니메이션 을 유연 하 게 사용 하면 개성 있 게 많은 애니메이션 을 응용 할 수 있 습 니 다.게다가 Activity 간 의 애니메이션 과 이런 것들 을 결합 시 키 면 더욱 완벽 합 니 다.Activity 간 의 애니메이션 은 제 가 전에 쓴 이 글(연결 은 다음 과 같 습 니 다)을 참조 하여 여러분 에 게 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기