ただし、アニメーションの所要時間と sleep で待つ時間はリソースの同じ個所を参照するように気をつけました。
参考にさせてもらったソース等々は 「throw Life - ActivityのOpenとCloseをアニメーションさせる」 です。以下のソースは差分があるところをちらほら。
res/values/anims.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="animation_duration">1000</integer> </resources>
res/anim/activity_open_enter.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" > <translate android:duration="@integer/animation_duration" android:fillAfter="true" android:fillEnabled="true" android:fromYDelta="100%" android:toYDelta="0%" /> </set>
Activity1 .java
package com.sample.activityanimation; import android.os.Bundle; import android.os.SystemClock; import android.app.Activity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class Activity1 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity1); Button btnBack = (Button) findViewById(R.id.btnBack); btnBack.setOnClickListener(new OnClickListener() { public void onClick(View v) { finish(); } }); } @Override protected void onStart() { super.onStart(); new Thread(new Runnable() { @Override public void run() { int duration = Activity1.this.getResources().getInteger(R.integer.animation_duration); SystemClock.sleep(duration * 2); Activity1.this.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(Activity1.this, "Hello world!!", Toast.LENGTH_SHORT).show(); } }); } }).start(); } }
もっとスマートな方法を知りたい...
0 件のコメント:
コメントを投稿