简单的窗口抖动——Animation


在res 文件夹下增加 文件夹 anim ,  anim文件夹中的 anim.xml文件

fromXDelta 属性值 的缺省单位 为px,但在avd中显示大小还是有点差值 

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@anim/cycle"    <span style="white-space:pre">	</span>------------------->引用 cycle.xml 文件 
    >
    <translate
        android:fromXDelta="0"
        android:toXDelta="-10"
        android:fromYDelta="0"
        android:toYDelta="-10"
        android:duration="300"/>
    <translate
        android:fromXDelta="0"
        android:toXDelta="10"
        android:fromYDelta="0"
        android:toYDelta="-10"
        android:startOffset="300"
        android:duration="300"/>
    <translate
        android:fromXDelta="0"
        android:toXDelta="-10"
        android:fromYDelta="0"
        android:toYDelta="10"
        android:startOffset="600"
        android:duration="300"/>
    <translate
        android:fromXDelta="0"
        android:toXDelta="10"
        android:fromYDelta="0"
        android:toYDelta="10"
        android:startOffset="900"
        android:duration="300"/>
</set>

<!--
    每一个translate 标签就是一个“晃动”动作,只需要 设置该动作的发生时间(startOffset属性) 就可以连续晃动产生抖动效果
    <translate


            android:fromXDelta="0"
            android:toXDelta="10"
                        ——————————> x坐标  formXDelta:  组件晃动的起始位置;  0 表示控件的当前位置
                                                     toXDelta:  组件相对于起始位置的终止位置,
                                              (formXDelta-toXDelta)的值为正先向左晃动, 为负则先向右晃动
                                             |formXDelta - toXDelta| 的值为 晃动的最大幅度 
                                                 缺省单位 px
                                    *左右晃动, toXDelte 属性影响 晃动幅度和 晃动开始方向

            android:fromYDelta="0"
            android:toYDelta="10"
                        ——————————> x坐标  formYDelta:  组件晃动的起始位置;   0 表示控件的当前Y位置
                                           toYDelta:  组件晃动的终点位置(相对起始位置) ;
                                           (formXDelta - toXDelta)的值 为正先向上晃动, 为负则先向下晃动
                                            | formXDelta - toXDelta|的值为 晃动的幅度
                         上下晃动 ,最后会回到组件动作前的位置;toYDelte 属性限定了 晃动幅度和 晃动开始方向

            android:startOffset="900"
                         ——————————> 动作开始时间  900毫秒时发生(startOffset属性值是相对于事件发生时开始计算)
            android:duration="300"
                            ——————————>  动作持续时间 300毫秒
            />

    -->


 anim文件夹中的 cycle.xml文件

<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
    android:cycles="1" />
<!--
    cycleInterpolator 标签用于设置  次数/S  
    android:cycles="次数" 
-->



mainActivity.class 中:

rel 不一定非得是RelativeLayout 控件, 只需要设置了width、 height 并可以显示出来 就可以看见抖动效果

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

        rel = (RelativeLayout)findViewById(R.id.rel);
        bt = (Button)findViewById(R.id.bt);
        bt.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Animation ai = AnimationUtils.loadAnimation(MainActivity.this,R.anim.alpha);
<span style="white-space:pre">			</span>Animation  不能直接通过new创建实例对象 ,需要通过 AnimationUtils调用static方法创建Animation对象
                rel.startAnimation(ai);
            }
        });

    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值