安卓開發學習筆記(15)補間動畫(實例:實現淡入淡出的補間動畫)

開發步驟:

1.創建一個通過手勢滑動查看相片的手機相冊

2.創建動畫資源文件

3.定義並初始化動畫數組

4.指定切換的動畫效果

第一步:創建像片切換器

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
<!--圖像切換器-->
<ViewFlipper
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/flipper">

</ViewFlipper>
</RelativeLayout>

第二步:創建動畫資源文件

res->anim->anim_alpha_in.xml   淡入動畫

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0"
    android:toAlpha="1"
    android:duration="4000"/>
</set>

 同樣方法編寫淡出動畫

anim_alpha_out

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="1"
    android:toAlpha="0"
    android:duration="4000"/>
</set>

第三步:MainActivity.java

package com.example.pictures;

import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ViewFlipper;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener {
    ViewFlipper flipper;//定義ViewFlipper
    GestureDetector detector;//定義手勢檢測器
    final int distance=50;//定義手勢動作兩點之間最小距離
    //定義數組圖片
    private int []images=new int[]{R.drawable.picture1,R.drawable.picture2,R.drawable.picture3,R.drawable.picture4,R.drawable.picture5,R.drawable.picture6};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        detector=new GestureDetector(this,this);//創建手勢檢測器
        flipper=findViewById(R.id.flipper);//獲取ViewFlipper
        for(int i=0;i<images.length;i++)
        {
            ImageView imageView=new ImageView(this);
            imageView.setImageResource(images[i]);
            flipper.addView(imageView);//加載圖片
        }
        //定義並初始化數組
        Animation[] animations=new Animation[2];//定義動畫數組
        animations[0]= AnimationUtils.loadAnimation(this ,R.anim.anim_alpha_in);//淡入動畫
        animations[1]=AnimationUtils.loadAnimation(this,R.anim.anim_alpha_out);//淡出動畫
        //指定切換動畫效果
        flipper.setInAnimation(animations[0]);
        flipper.setOutAnimation(animations[1]);

    }

    @Override
    public boolean onDown(MotionEvent e) {
        return false;
    }

    @Override
    public void onShowPress(MotionEvent e) {

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        return false;
    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {

    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        return false;
    }
}

不知道我的代碼哪裏出了問題,運行結果只顯示第一張圖片,其他圖片不顯示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章