【Animation】 使用handler和Runnable实现某一个控件的抖动效果
布局:
package com.example.viewpager;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.view.animation.TranslateAnimation;import android.widget.Button;public class MainActivity extends Activity {private Button btn;private int length;Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {switch (msg.what) {case 0:length -= 2.5;TranslateAnimation animation = new TranslateAnimation(0,length , 0, 0);animation.setDuration(50);Log.i("----", length+"");btn.startAnimation(animation);if(length==0){handler.removeCallbacks(runnable);}break;default:break;}};};Runnable runnable = new Runnable() {public void run() {handler.sendEmptyMessage(0);handler.postDelayed(this, 80);}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {length = 30;handler.post(runnable);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}