Android 用Timer做小動畫

  • 2452
  • 0
  • 2013-01-19

摘要:Android 用Timer做小動畫

這篇對SV來說實在太重要了!

在星期五的今天一個早上終於研究出來!

我果然要大嘆C#比較好用QQ

本來想說以C#的方式思考,結果還是Orz

總之,有時候我們遊戲會用到很簡單的動畫,比方拿起東西,你可以用東西的移動(昨天教的)來達到這樣的效果。

於是我們又可以拿培根貓做例子:

Timer timer = new Timer();
Handler handler=new Handler();
Runnable runnable; 先定義這三個變數(然後Import), 接著
runnable=new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
bacon1.layout(bacon1.getLeft(), bacon1.getTop()-20, bacon1.getRight(), bacon1.getBottom());
}
}; 這邊是你要做的動畫 最後在要執行的地方寫上: handler.postDelayed(runnable, 500); 這樣好像看不太清楚什麼意思, 以下為實例:
package com.sv.baconcat;
 
import java.util.Timer;
import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
 
public class GameActivity extends Activity {
 
Timer timer = new Timer();
Handler handler=new Handler();
Runnable runnable;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.gam);
 
final ImageView bacon1=(ImageView)findViewById(R.id.bacon1);
 
TextView count=(TextView)findViewById(R.id.tvCount);
 
bacon1.setOnClickListener(new OnClickListener()
{
 
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
bacon1.layout(bacon1.getLeft(), bacon1.getTop()+10, bacon1.getRight(), bacon1.getBottom());
 
handler.postDelayed(runnable, 500);
}
 
});
runnable=new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
bacon1.layout(bacon1.getLeft(), bacon1.getTop()-20, bacon1.getRight(), bacon1.getBottom());
}
};
}
}

也就是當你點一個培根,那麼就會做"拿起培根"的動畫,也就是讓培根先往下移動(約10單位),0.5秒後往上移動(約20單位,與原本位置往上10單位)。

這樣就可以做微動畫了~

SV竟然研究了這麼久Orz

因為習慣C#的Timer,

所以就用這種方式了。

好處是你每點一次培根他都會有這樣的動畫。

阿~學程式與flash概念結合真不錯smiley(算是小撇步囉~)

 

然後要感謝這一篇:

http://rritw.com/a/JAVAbiancheng/JAVAzonghe/20130115/291117.html

 

因為SV看了很多篇都看不懂,是這篇救了我喔~~~~!