亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android 使用XML做動畫UI的深入解析

2020-04-11 12:05:00
字體:
來源:轉載
供稿:網友

效果: http://www.56.com/u82/v_OTM4MDk5MTk.html
第一步: 創建anim文件夾放置動畫xml文件
在res文件夾下,創建一個anim的子文件夾。

         

第二步: 加載動畫
接著在Activity創建一個Animation類,然后使用AnimationUtils類加載動畫xml

復制代碼 代碼如下:

Animation animFadein;

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

txtMessage = (TextView) findViewById(R.id.txtMessage);
btnStart = (Button) findViewById(R.id.btnStart);

// 加載動畫
animFadein = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.fade_in);



第三步: 設置動畫監聽器
如果你要監聽動畫的事件,如開始,結束等,你需要實現AnimationListener監聽器,重寫以下方法。
onAnimationEnd(Animation animation) - 當動畫結束時調用
onAnimationRepeat(Animation animation) - 當動畫重復時調用
onAniamtionStart(Animation animation) - 當動畫啟動時調用
復制代碼 代碼如下:

@Override
public void onAnimationEnd(Animation animation) {
// 在動畫結束后使用

// check for fade in animation
if (animation == animFadein) {
Toast.makeText(getApplicationContext(), "Animation Stopped",
Toast.LENGTH_SHORT).show();
}

}

@Override
public void onAnimationRepeat(Animation animation) {
//當動畫重復時使用

}

@Override
public void onAnimationStart(Animation animation) {
//當動畫開始使用

}

最后一步: 讓動畫動起來啦。可以使用任何UI元素調用startAnimation方法。
以下是一個Textview元素調用的。
txtMessage.startAnimation(animFadein);
完整代碼:
復制代碼 代碼如下:

FadeInActivity(淡入動畫)
?package com.chaowen.androidanimations;

import info.androidhive.androidanimations.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 
 * @author chaowen
 *
 */
public class FadeInActivity extends Activity implements AnimationListener {

    TextView txtMessage;
    Button btnStart;

    Animation animFadein;

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

        txtMessage = (TextView) findViewById(R.id.txtMessage);
        btnStart = (Button) findViewById(R.id.btnStart);

        // 加載動畫
        animFadein = AnimationUtils.loadAnimation(getApplicationContext(),
                R.anim.fade_in);

        // 設置監聽
        animFadein.setAnimationListener(this);

        // 按鈕
        btnStart.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                txtMessage.setVisibility(View.VISIBLE);

                // 開始動畫
                txtMessage.startAnimation(animFadein);
            }
        });

    }

    @Override
    public void onAnimationEnd(Animation animation) {
        // 在動畫結束后使用

        // check for fade in animation
        if (animation == animFadein) {
            Toast.makeText(getApplicationContext(), "Animation Stopped",
                    Toast.LENGTH_SHORT).show();
        }

    }

    @Override
    public void onAnimationRepeat(Animation animation) {
        //當動畫重復時使用

    }

    @Override
    public void onAnimationStart(Animation animation) {
        //當動畫開始使用

    }

}

一些重要的XML屬性
重要的XML動畫屬性
android:duration 動畫持續時間,時間以毫秒為單位
android:startOffset 動畫之間的時間間隔,從上次動畫停多少時間開始執行下個動畫
android:interpolator 指定一個動畫的插入器
android:fillAfter 當設置為true ,該動畫轉化在動畫結束后被應用
android:repeatMode 定義重復的行為
android:repeatCount 動畫的重復次數
 
以下是一些基本的動畫XML.
Fade In:  淡入
alpha是漸變透明度效果,值由0到1
fade_in.xml 
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true" >

    <alpha
        android:duration="1000"
        android:fromAlpha="0.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toAlpha="1.0" />

</set>

Fade Out : 淡出
 以Fade In剛好相反,值由1到0.
fade_out.xml
復制代碼 代碼如下:

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true" >

    <alpha
        android:duration="1000"
        android:fromAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toAlpha="0.0" />

</set>

Cross Fading:  交叉的淡入和淡出
 同時使用Fade in和Fade out可以達到交叉的效果
復制代碼 代碼如下:

public class CrossfadeActivity extends Activity implements AnimationListener {

    TextView txtMessage1, txtMessage2;
    Button btnStart;

     
    Animation animFadeIn, animFadeOut;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_crossfade);

        txtMessage1 = (TextView) findViewById(R.id.txtMessage1);
        txtMessage2 = (TextView) findViewById(R.id.txtMessage2);
        btnStart = (Button) findViewById(R.id.btnStart);

        // load animations
        animFadeIn = AnimationUtils.loadAnimation(getApplicationContext(),
                R.anim.fade_in);
        animFadeOut = AnimationUtils.loadAnimation(getApplicationContext(),
                R.anim.fade_out);

        // set animation listeners
        animFadeIn.setAnimationListener(this);
        animFadeOut.setAnimationListener(this);

        // button click event
        btnStart.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                txtMessage2.setVisibility(View.VISIBLE);

                txtMessage2.startAnimation(animFadeIn);

                 
                txtMessage1.startAnimation(animFadeOut);
            }
        });

    }

    @Override
    public void onAnimationEnd(Animation animation) {

 

        if (animation == animFadeOut) {
            txtMessage1.setVisibility(View.GONE);
        }

        if(animation == animFadeIn){
            txtMessage2.setVisibility(View.VISIBLE);
        }

    }

    @Override
    public void onAnimationRepeat(Animation animation) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAnimationStart(Animation animation) {
        // TODO Auto-generated method stub

    }

}

BLink:  若隱若現,酷
blink.xml
復制代碼 代碼如下:

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="600"
        android:repeatMode="reverse"
        android:repeatCount="infinite"/>
</set>

Zoom In : 放大
zoom_in.xml 
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true" >

    <scale
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="1000"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="3"
        android:toYScale="3" >
    </scale>

</set>

Zoom Out: 縮小
zoom_out.xml 
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true" >

    <scale
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="1000"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0.5"
        android:toYScale="0.5" >
    </scale>

</set>

Rotate: 旋轉
rotate.xml
復制代碼 代碼如下:

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate android:fromDegrees="0"
        android:toDegrees="360"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="600"
        android:repeatMode="restart"
        android:repeatCount="infinite"
        android:interpolator="@android:anim/cycle_interpolator"/>

</set>

還有幾個就不再列出,有興趣下源碼看。點擊下載

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩一区二区av| 国产成人激情视频| 国产婷婷色综合av蜜臀av| 超碰97人人做人人爱少妇| 海角国产乱辈乱精品视频| 欧美高清电影在线看| 欧美在线欧美在线| 国产乱肥老妇国产一区二| 粉嫩av一区二区三区免费野| 7m精品福利视频导航| 国产视频久久久| 亚洲成年人在线播放| 国产精品美女网站| 欧美有码在线观看视频| 久久久久北条麻妃免费看| 国产精品高清免费在线观看| 国产精品久久久久久一区二区| 国产精品第一页在线| 日韩中文字幕免费看| 欧美在线一级va免费观看| 久久久精品一区二区三区| 国产精品电影在线观看| 98精品国产自产在线观看| 欧美孕妇毛茸茸xxxx| 亚洲最大av网站| 国产精品自产拍在线观看中文| 欧美在线性视频| 国产一区二区黑人欧美xxxx| 欧美成在线观看| 97国产suv精品一区二区62| 中文日韩电影网站| 亚洲国产欧美日韩精品| 国产精品日韩av| 揄拍成人国产精品视频| 另类少妇人与禽zozz0性伦| 欧美性猛交xxxx乱大交极品| 亚洲福利视频网| 日韩在线不卡视频| 91极品视频在线| 热99精品只有里视频精品| 国产成人av在线播放| 亚洲精品国产综合久久| 成人免费黄色网| 在线亚洲国产精品网| 国产精品视频免费在线观看| 国产在线拍揄自揄视频不卡99| 日韩av大片免费看| 国产大片精品免费永久看nba| 91免费在线视频网站| 久久久久999| 亚洲欧美日韩精品久久奇米色影视| 777777777亚洲妇女| 亚洲一区制服诱惑| 伊是香蕉大人久久| 亚洲乱码av中文一区二区| 97国产精品人人爽人人做| 亚洲欧美国产va在线影院| 日韩大陆毛片av| 亚洲精品丝袜日韩| 国产精品精品视频| 国产免费一区二区三区香蕉精| 91黄色8090| 中文字幕视频一区二区在线有码| 亚洲人成电影在线观看天堂色| 久久国产精品久久精品| 国产精品久久久久99| 亚洲欧美在线一区二区| 亚洲丝袜av一区| 91精品国产自产在线| 久久久久国产精品免费网站| 欧美日韩精品在线| 国产日韩在线播放| 日韩毛片中文字幕| 国语自产精品视频在线看一大j8| 国产日韩精品在线播放| 69精品小视频| 国产成人精品av| 最近2019中文字幕mv免费看| 丁香五六月婷婷久久激情| 97视频在线观看亚洲| 国模私拍一区二区三区| 亚洲人成免费电影| 国产成人精彩在线视频九色| 91精品国产91久久久久| 久久精品久久久久久| 亚洲qvod图片区电影| 91网站在线看| 久久在线免费观看视频| 2019中文字幕免费视频| 亚洲aa中文字幕| 亚洲精品视频网上网址在线观看| 成人av在线天堂| 亚洲精品色婷婷福利天堂| 日韩经典一区二区三区| 欧美日产国产成人免费图片| 国产91精品久久久| 日韩精品视频中文在线观看| 欧美专区在线视频| 国产激情久久久| 亚洲美女在线观看| 日本高清+成人网在线观看| 久久久成人av| 欧美精品18videos性欧美| 精品无人区乱码1区2区3区在线| 伦理中文字幕亚洲| 深夜福利一区二区| 欧美中文字幕第一页| 91精品啪aⅴ在线观看国产| 91在线视频导航| 国产精品久久久久久久久久久新郎| 国产亚洲成av人片在线观看桃| 亚洲精品电影网站| 国产精品白嫩初高中害羞小美女| 欧美一级bbbbb性bbbb喷潮片| 精品国产欧美一区二区三区成人| 亚洲精品中文字幕女同| 亚洲免费视频在线观看| 亚洲免费福利视频| 午夜免费在线观看精品视频| 国产精品国产三级国产专播精品人| 中文字幕欧美日韩在线| 4388成人网| 亚洲国产一区二区三区在线观看| 欧洲成人性视频| 欧美人与物videos| 欧美日韩亚洲一区二| 久久久久久亚洲精品| 国产a∨精品一区二区三区不卡| 97国产精品视频人人做人人爱| 亚洲免费人成在线视频观看| 国产精品亚洲精品| 久久精品国产69国产精品亚洲| 久久青草精品视频免费观看| 亚洲国模精品私拍| 欧美人在线视频| 日韩中文字幕欧美| 国产综合在线看| 九九热精品视频在线播放| 国产成人啪精品视频免费网| 国产精品久久久久久中文字| 91免费人成网站在线观看18| 国外成人性视频| 亚洲国产91精品在线观看| 欧美黄色片视频| 亚洲精品久久7777777| 日韩电影中文字幕一区| 欧美成aaa人片在线观看蜜臀| 日韩欧美精品免费在线| 国产精品人成电影| 久久久久久久电影一区| 国产日韩中文字幕在线| 欧美日韩亚洲激情| 欧美与欧洲交xxxx免费观看| 成人亚洲激情网| 久久成人免费视频| 亚洲精品mp4| 亚洲欧美中文字幕| 日韩电影中文字幕| 欧美激情精品久久久久久黑人| 国产精品私拍pans大尺度在线| 中文字幕久久亚洲| 疯狂欧美牲乱大交777| 欧美性在线视频| 午夜精品国产精品大乳美女|