在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);
}
});
}