您的位置:首页 > 其它

简单的窗口抖动——Animation

2015-07-14 14:30 274 查看
在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);
}
});

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: