안 드 로 이 드 아이 폰 목록 데이터 보기 새로 고침 애니메이션 상세 설명
8094 단어 AndroidiPhone목록 데이터 새로 고침
쓸데없는 소리 하지 말고 먼저 효 과 를 보고 코드 를 봐!!
효과 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 간 의 애니메이션 은 제 가 전에 쓴 이 글(연결 은 다음 과 같 습 니 다)을 참조 하여 여러분 에 게 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.