星空网 > 软件开发 > 操作系统

自定义控件——旋转动画

                                       自定义控件——旋转动画images/loading.gif' data-original="http://images2015.cnblogs.com/blog/781624/201512/781624-20151216130420693-1125998581.png" />

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) {    }  }}

<?  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>

 




原标题:自定义控件——旋转动画

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

继TikTok之后,中国电商平台Shein和Temu又遭美方围堵! :https://www.goluckyvip.com/news/9985.html
美国物流市场严查违规行为,部分违法人员已被调查:https://www.goluckyvip.com/news/9986.html
TIKTOK跨境MCN怎么提现? :https://www.goluckyvip.com/news/9987.html
拼多多“不要”Temu了:https://www.goluckyvip.com/news/9988.html
TikTok热度超10亿,“彩虹圈玩具”单个视频获6000万播放:https://www.goluckyvip.com/news/9989.html
怎样获取各口岸海关进出口货物贸易统计数据?海关进出口数据获取指南:https://www.goluckyvip.com/news/999.html
在古巴做游轮 古巴旅游项目:https://www.vstour.cn/a/363194.html
西藏旅游攻略自驾游需要多少天 去西藏旅游自驾游要多久时间:https://www.vstour.cn/a/363195.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流