می خواهیم برای هر کدام از عناصر صفحه (Button, TextView و غیره) انیمیشن هایی ساده اما جذاب تعریف کنیم.
- نفیسه افقی 5 سال قبل سوال کرد
- آخرین ویرایش 5 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید
در ادامه، با مراحل مورد نیاز برای اجرای یک انیمیشن بر روی هر کدام از عناصر UI، نظیر Button یا Image آشنا خواهید شد. ساخت انیمیشن خیلی ساده است. تنها لازم است تا تعدادی فایل ساخته و چند خطی هم کد بزنید.
مرحله اول: در یک فایل xml، انیمیشن را تعریف کنید
در ابتدا باید انیمیشن مورد نظر خودتان را با xml بنویسید. سپس این فایل (animation.xml) را در مسیر زیر قرار دهید.
res > anim > animation.xml
fade_in.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" > <alpha android:duration="1000" android:fromAlpha="0.0" android:interpolator="@android:anim/accelerate_interpolator" android:toAlpha="1.0" /> </set>
<< در این لینک ، انواعی از انیمیشن های مهم xml ای را می توانید مشاهده کنید. >>
مرحله دوم: انیمیشن را لود کنید
سپس در اکتیویتی خود، یک شیئ از کلاس Animation
بسازید و با استفاده از تابع loadAnimation
از کلاس AnimationUtils ، انیمیشن را لود کنید.
FadeInActivity.java:
public class FadeInActivity extends Activity{
TextView txtMessage;
// Animation
Animation animFadein;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fadein);
txtMessage = (TextView) findViewById(R.id.txtMessage);
// load the animation
animFadein = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.fade_in);
}
}
مرحله سوم: animation listeners را تنظیم کنید (این قسمت اختیاری است)
اگر می خواهید به رویدادهایی نظیر شروع، تکرار یا تمام شدن انیمیشن گوش دهید، باید کلاس AnimationListener را پیاده سازی کنید. اگر بخواهید این کلاس را پیاده سازی کنید، باید توابع زیر را دوباره تعریف کنید (override).
onAnimationStart
: وقتی فراخوانی می شود که انیمیشن شروع شود.onAnimationEnd
: وقتی فراخوانی می شود که انیمیشن تمام شود.
onAnimationRepeat
: وقتی فراخوانی می شود که انیمیشن تکرار شود.
public class FadeInActivity extends Activity implements AnimationListener {
.
.
.
// set animation listener
animFadein.setAnimationListener(this);
.
.
.
// animation listeners
@Override
public void onAnimationEnd(Animation animation) {
// Take any action after completing the animation
// check for fade in animation
if (animation == animFadein) {
Toast.makeText(getApplicationContext(), "Animation Stopped",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onAnimationRepeat(Animation animation) {
// Animation is repeating
}
@Override
public void onAnimationStart(Animation animation) {
// Animation started
}
مرحله چهارم: در نهایت، انیمیشن را شروع کنید
در هر جا و زمانی که خواستید، می توانید انیمیشن را شروع کنید، البته با فراخوانی تابع بر روی هر کدام از عناصر UI و دادن یک شیئ از کلاس Animation
. در اینجا، ما انیمیشن fade_in
را بر روی یک TextView
اجرا می کنیم.
// start the animation
txtMessage.startAnimation(animFadein);
کد کامل
در زیر می توانید کد کامل را برای FadeInActivity
مشاهده کنید.
package info.androidhive.androidanimations;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class FadeInActivity extends Activity implements AnimationListener {
TextView txtMessage;
Button btnStart;
// Animation
Animation animFadein;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fadein);
txtMessage = (TextView) findViewById(R.id.txtMessage);
btnStart = (Button) findViewById(R.id.btnStart);
// load the animation
animFadein = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.fade_in);
// set animation listener
animFadein.setAnimationListener(this);
// button click event
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtMessage.setVisibility(View.VISIBLE);
// start the animation
txtMessage.startAnimation(animFadein);
}
});
}
@Override
public void onAnimationEnd(Animation animation) {
// Take any action after completing the animation
// check for fade in animation
if (animation == animFadein) {
Toast.makeText(getApplicationContext(), "Animation Stopped",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
}
- نفیسه افقی 5 سال قبل پاسخ داد
- آخرین ویرایش 5 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید