android XML動畫初步解析(activity介面之間跳轉demo)

來源:互聯網
上載者:User

android XML動畫初步解析(activity介面之間跳轉demo)

上一篇文章android 簡單地設定Activity介面的跳轉動畫講了簡單的activity介面之間的跳轉,並且使用的是android內建的一些動畫,此章就小提一下如何自己寫一些動畫來進行跳轉。

按例,還是上一下效果:(結尾附上源碼)

要自己寫動畫,首先要對動畫的一些屬性有一定瞭解:

interpolator:被用來修飾動畫效果,定義動畫的變動率,可以使存在的動畫效果accelerated(加速),decelerated(減速),repeated(重複),bounced(彈跳)等。

android:duration:動畫的期間。

pivotX和pivotY:這兩個屬性控制著View對象的支點位置,圍繞著這個支點進行旋轉和縮放變換。預設情況下,該支點的位置就是View對象的中心。

Translate:(有X和Y)這是屬性作為一種增量來控制著View對象從它版面配置容器的左上方座標位移的位置。

rotate:這個屬性控制View對象圍繞它的指點進行2D旋轉。

scale:(有X和Y)這個屬性控制著View對象圍繞它的指點進行2D縮放。

alpha:它表示View對象的透明度。預設值是1(不透明),0帶表完全透明(不可見)。

筆者已經極力希望描述的清楚一些了,新手僅僅看解起來可能還會概念理有比較大的問題,在後面demo的代碼中希望可以再次給讀者一些協助。

demo還是比較簡單的,僅僅實現的是兩個activity之間的跳轉,主要是在xml的檔案上需要讀者自己去理解一下,當然筆者demo中可嘗試的還是有限的,有興趣的讀者可以自己多鑽研一下。

貼下代碼:

MainActivity:

package com.example.animationchanges;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button button=(Button)findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent=new Intent(MainActivity.this,OneActivity.class);                startActivity(intent);                //設定跳轉動畫//                overridePendingTransition(R.anim.scale_in,R.anim.scale_out);//                overridePendingTransition(R.anim.rotate_in,R.anim.rotate_out);                overridePendingTransition(R.anim.translate_in,R.anim.translate_out);            }        });    }}

rotate_in:
<!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%2D%2D%3E--><set xmlns:android="http://schemas.android.com/apk/res/android"><rotate android:duration="@android:integer/config_mediumAnimTime" android:fromdegrees="0" android:pivotx="50%p" android:pivoty="50%p" android:todegrees="360"></rotate></set>
rotate_out:
<!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%2D%2D%3E--><set xmlns:android="http://schemas.android.com/apk/res/android"><rotate android:duration="@android:integer/config_mediumAnimTime" android:fromdegrees="360" android:pivotx="50%p" android:pivoty="50%p" android:todegrees="0"></rotate></set>
scale_in:
<!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%2D%2D%3E--><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator">    <scale android:duration="@android:integer/config_mediumAnimTime" android:fromxscale="2.0" android:fromyscale="2.0" android:toxscale="1.0" android:toyscale="1.0" android:pivotx="50%p" android:pivoty="50%p"></scale></set>
scale_out:
<!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%2D%2D%3E--><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" android:zadjustment="top">    <scale android:duration="@android:integer/config_mediumAnimTime" android:fromxscale="1.0" android:fromyscale="1.0" android:toxscale=".5" android:toyscale=".5" android:pivotx="50%p" android:pivoty="50%p">    <alpha android:duration="@android:integer/config_mediumAnimTime" android:fromalpha="1.0" android:toalpha="0"></alpha></scale></set>

translate_in:
<!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%2D%2D%3E--><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator">    <translate android:duration="@android:integer/config_mediumAnimTime" android:fromydelta="50%p" android:toydelta="0"></translate></set>

translate_out:
<!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%2D%2D%3E--><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator">    <translate android:duration="@android:integer/config_mediumAnimTime" android:fromydelta="0" android:toydelta="50%p"></translate></set>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.