原理:监听控件的事件,在touch事件触发是播放放大动画;
说明:在onTouch()事件中,动画的播放要放在对DOWN事件的处理中,不能简单的放在onTouch()的方法里面里了事,那样会有一个多次不均匀触发的bug;
动画放在OnClick方法里也勉强可以,但是有个问题,它在手指抬起时才触发,如果有这样特殊需求的话倒是可以,不过应该很少吧。
MainActivity代码:
private LinearLayout llA; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); llA = (LinearLayout) findViewById(R.id.ll_a); llA.setFocusableInTouchMode(true); llA.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.normal_to_large); v.startAnimation(animation); break; } return false; } }); }
动画的代码:
<set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:interpolator= "@android:anim/accelerate_decelerate_interpolator" android:fromXScale="1.0" android:toXScale="1.2" android:fromYScale="1.0" android:toYScale="1.2" android:pivotX="50%" android:pivotY="50%" android:duration="300" android:repeatCount="0" /> </set>
超简单吧!哈哈,其实细说起来也不少内容,关于不同动画的属性什么的,控件直接可以播放动画这也是知识点。