自訂控制項——旋轉動畫,自訂控制項旋轉

來源:互聯網
上載者:User

自訂控制項——旋轉動畫,自訂控制項旋轉

                                      

RotateAnimation (float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) 
參數說明: 
float fromDegrees:旋轉的開始角度。 
float toDegrees:旋轉的結束角度。 
int pivotXType:X軸的伸縮模式,可以取值為ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。 
float pivotXValue:X座標的伸縮值。 
int pivotYType:Y軸的伸縮模式,可以取值為ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。 
float pivotYValue:Y座標的伸縮值。

 

//animation.setRepeatCount(int repeatCount);//設定重複次數 
//animation.setFillAfter(boolean);//動畫執行完後是否停留在執行完的狀態 
//animation.setStartOffset(long startOffset);//執行前的等待時間

package com.org.demo.youku;import com.org.wangfeng.R;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget.RelativeLayout;public class MainActivity extends Activity implements OnClickListener {    private ImageView iv_home, iv_menu;    private RelativeLayout level1, level2, level3;    private boolean isShowLevel2 = true;// 是否顯示2級菜單    private boolean isShowLevel3 = true;// 是否顯示3級菜單    private boolean isShowMenu = true;// 是否顯示整個菜單,包括1級,2級,3級的菜單    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.mainyouku);        iv_home = (ImageView) findViewById(R.id.iv_home);        iv_menu = (ImageView) findViewById(R.id.iv_menu);        level1 = (RelativeLayout) findViewById(R.id.level1);        level2 = (RelativeLayout) findViewById(R.id.level2);        level3 = (RelativeLayout) findViewById(R.id.level3);        iv_home.setOnClickListener(this);        iv_menu.setOnClickListener(this);    }    @Override    public void onClick(View arg0) {        // TODO Auto-generated method stub        switch (arg0.getId()) {        case R.id.iv_home:            if (AnimUtil.animCount != 0) {                // 說明有動畫在執行                return;            }            if (isShowLevel2) {                // 需要隱藏                int startOffset = 0;                if (isShowLevel3) {                    AnimUtil.closeMenu(level3, startOffset);                    startOffset += 200;                    isShowLevel3 = false;                }                AnimUtil.closeMenu(level2, startOffset);            } else {                // 需要顯示                AnimUtil.showMenu(level2, 0);            }            isShowLevel2 = !isShowLevel2;            break;        case R.id.iv_menu:            if (AnimUtil.animCount != 0) {                // 說明有動畫在執行                return;            }            if (isShowLevel3) {                // 隱藏3級菜單                AnimUtil.closeMenu(level3, 0);            } else {                // 顯示3級菜單                AnimUtil.showMenu(level3, 0);            }            isShowLevel3 = !isShowLevel3;            break;        default:            break;        }    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_MENU) {            if (isShowMenu) {                // 需要關閉所有菜單                int startOffset = 0;                if (isShowLevel3) {                    AnimUtil.closeMenu(level3, startOffset);                    isShowLevel3 = false;                    startOffset += 200;                }                if (isShowLevel2) {                    AnimUtil.closeMenu(level2, startOffset);                    isShowLevel2 = false;                    startOffset += 200;                }                AnimUtil.closeMenu(level1, startOffset);            } else {                // 需要顯示所有菜單                AnimUtil.showMenu(level1, 0);                AnimUtil.showMenu(level2, 200);                isShowLevel2 = true;                AnimUtil.showMenu(level3, 400);                isShowLevel3 = true;            }            isShowMenu = !isShowMenu;            return true;        }        return super.onKeyDown(keyCode, event);    }}
package com.org.demo.youku;import android.view.animation.Animation;import android.view.animation.RotateAnimation;import android.view.animation.Animation.AnimationListener;import android.widget.RelativeLayout;public class AnimUtil {    public static int animCount = 0;// 記錄當前執行的動畫數量    public static void closeMenu(RelativeLayout rl, int startOffset) {        for (int i = 0; i < rl.getChildCount(); i++) {            rl.getChildAt(i).setEnabled(false);        }        // pivotXValue: 0-1        RotateAnimation animation = new RotateAnimation(0, -180,                RotateAnimation.RELATIVE_TO_SELF, 0.5f,                RotateAnimation.RELATIVE_TO_SELF, 1);        animation.setDuration(500);        animation.setFillAfter(true);// 動畫結束後保持當時的狀態        animation.setStartOffset(startOffset);        animation.setAnimationListener(new MyAnimationListener());        rl.startAnimation(animation);    }    public static void showMenu(RelativeLayout rl, int startOffset) {        for (int i = 0; i < rl.getChildCount(); i++) {            rl.getChildAt(i).setEnabled(true);        }        RotateAnimation animation = new RotateAnimation(-180, 0,                RotateAnimation.RELATIVE_TO_SELF, 0.5f,                RotateAnimation.RELATIVE_TO_SELF, 1);        animation.setDuration(500);        animation.setFillAfter(true);// 動畫結束後保持當時的狀態        animation.setStartOffset(startOffset);        animation.setAnimationListener(new MyAnimationListener());        rl.startAnimation(animation);    }    static class MyAnimationListener implements AnimationListener {        @Override        public void onAnimationStart(Animation animation) {            animCount++;        }        @Override        public void onAnimationEnd(Animation animation) {            animCount--;        }        @Override        public void onAnimationRepeat(Animation animation) {        }    }}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <!--  -->    <RelativeLayout        android:layout_width="100dp"        android:id="@+id/level1"        android:layout_height="50dp"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:background="@drawable/level1" >        <ImageView            android:id="@+id/iv_home"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerInParent="true"            android:background="@drawable/icon_home"            android:contentDescription="@null" />    </RelativeLayout>    <RelativeLayout        android:id="@+id/level2"        android:layout_width="180dp"        android:layout_height="90dp"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:background="@drawable/level2" >        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_marginBottom="10dp"            android:layout_marginLeft="10dp"            android:background="@drawable/icon_search"            android:contentDescription="@null" />        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_alignParentRight="true"            android:layout_marginBottom="10dp"            android:layout_marginRight="10dp"            android:background="@drawable/icon_myyouku"            android:contentDescription="@null" />        <ImageView            android:id="@+id/iv_menu"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerHorizontal="true"            android:layout_marginTop="5dp"            android:background="@drawable/icon_menu"            android:contentDescription="@null" />    </RelativeLayout>    <RelativeLayout        android:id="@+id/level3"        android:layout_width="280dp"        android:layout_height="142dp"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:background="@drawable/level3" >        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_marginBottom="15dp"            android:layout_marginLeft="12dp"            android:background="@drawable/channel1"            android:contentDescription="@null" />        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_alignParentRight="true"            android:layout_marginBottom="15dp"            android:layout_marginRight="12dp"            android:background="@drawable/channel5"            android:contentDescription="@null" />        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_marginBottom="55dp"            android:layout_marginLeft="32dp"            android:background="@drawable/channel2"            android:contentDescription="@null" />        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_alignParentRight="true"            android:layout_marginBottom="55dp"            android:layout_marginRight="32dp"            android:background="@drawable/channel6"            android:contentDescription="@null" />        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_marginBottom="85dp"            android:layout_marginLeft="62dp"            android:background="@drawable/channel3"            android:contentDescription="@null" />        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_alignParentRight="true"            android:layout_marginBottom="85dp"            android:layout_marginRight="62dp"            android:background="@drawable/channel7"            android:contentDescription="@null" />        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerHorizontal="true"            android:layout_marginTop="5dp"            android:background="@drawable/channel4"            android:contentDescription="@null" />    </RelativeLayout></RelativeLayout>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.