دوست داری برنامه اندروید بسازی ...!؟
نمی دونی از کجا شروع کنی ... !؟
یادگیری گام به گام و کاملا رایگان در
آکادمی همیار اندروید
شروع یادگیری
همکاران ما
تبلیغات
مطلب انتخابی شما

تاریخ ارسال : ۱۲ , ۰۵ , ۱۳۹۵
تعداد نظرات : ۱۲ نظر
دسته بندی : Android Studio, Animation

آموزش کار با انیمیشن ها در برنامه نویسی اندروید (Animation)

به نام خدا

 

سلام دوستان

در این جلسه قراره که با Animation ها کار کنیم ، انیمیشن ها یکی از امکانات فوق العاده در برنامه نویسی اندروید هستند ،

شما به کمک انیمیشن ها می تونید یک اپلیکیشن جذاب طراحی کنید ، و حتی می تونید اپلیکیشن های سرگرمی هم با کمک انیمیشن ها طراحی کنید ،

تصویر زیر اپلیکیشنی است که من به کمک Animation ها طراحی کرده ام ،

 

درک روش استفاده از انیمیشن ها

روش استفاده از انیمیشن ها به این صورت هستش که

ما نوع و ویژگی های یک انیمیشن رو درون یک فایل xml ذخیره می کنیم ، مثلا یک انیمیشن که کارش ورود از سمت راست صفحه می باشد

بعد این انیمیشنی که ساخته ایم را درون اکتیویتی فراخوانی می کنیم و به هر ویویی که دوست داشتیم وصلش می کنیم

از این به بعد ویو ما خاصیت انیمیشن رو می گیره مثلا ورود از سمت راست صفحه

و مراحل انجام کار هم به صورت زیر هستش :

مرحله اول : ساخت یک پروژه جدید

مرحله دوم : ساخت فایل های انیمیشنی

مرحله سوم : طراحی یک لایوت زیبا

مرحله چهارم : کدنویسی در اکتیویتی

نکته مهم : چون قراره مرحله به مرحله پیش بریم ، شما دقیقا از نام هایی که من در پروژه خودم استفاده می کنم ، استفاده کنید تا به مشکل بر نخورید و پس از پایان کار در صورت تمایل نام ها را تغییر دهید .

و یه نکته دیگه : پس از پایان هر مرحله نتیجه کار را مشاهده کنید تا تغییرات را درک کنید

 

مرحله اول : ساخت یک پروژه جدید

نام پروژه من : Animation

نام پکیج من : HamyarRoid.com

نام اکتیویتی من : MainActivity

نام لایوت من : activity_main

توجه مهم : برای انتخاب یکی از حالت های پیش فرض در اندروید استودیو از حالت Empty Activity استفاده کنید

 

مرحله دوم : ساخت فایل های انیمیشنی

۱ )  اول از همه روی پوشه res کلیک راست کنید و بعد New و بعد روی گزینه Directory کلیک کنید ،

در پنجره ای که نمایان می شود دقیقا عبارت anim را بنویسید و ok کنید ،

خب با این کار شما یک پوشه به نام anim ساخته اید ،

حالا ما هر انیمیشنی که می خواهیم طراحی کنیم رو باید در یک فایل مجزا درون پوشه  anim طراحی کنیم ،

برای این کار روی پوشه anim کلیک راست کنید و از قسمت New ، گزینه Animation resource file را انتخاب کنید ،

در پنجره ای که نمایان می شود ، باید یک نام برای فایل انیمیشن خود بنویسید و ok کنید ،

۲ ) در اینجا من نام move_right را انتخاب کرده ام ،

خوب حالا کدهای زیر را به صورت کامل درون فایل move_right قرار دهید (جلوتر توضیح می دم)

توضیح کدهای بالا :

خط ۵ : ما چندیدن خاصیت کلی برای انیمیشن ها داریم که در اینجا ما از translate استفاده کرده ایم

خط ۶: در این خط با استفاده از خاصیت duration ، مدت زمان برای اجرای انیمیشن را تنظیم کرده ایم (۱۰۰۰ میلی ثانیه)

خط ۷: در این خط خاصیت fromXDelta ، به معنی شروع حرکت در محور X ها می باشد ، که در اینجا ما مقدار ۳۰۰ را وارد کرده ایم ( یعنی از فاصله ۳۰۰ نسبت به مرکز حرکت کن ، در محور X ها)

خط ۸ : در این خط خاصیت toXDelta ، به معنی پایان حرکت در محور X ها می باشد ، که مقدار ۰ به آن داده ایم (یعنی در فاصله ۰ از محور X ها  توقف کن ، درواقع در مرکز توقف می کند)

توجه : در جلسه آینده خصوصیات را به صورت تخصصی تر و کامل تر آموزش خواهیم داد

۳ ) ما در این پروژه از یک انیمیشن دیگر هم استفاده می کنیم برای این کار یک فایل دیگر با نام move_left ایجاد کنید و کدهای زیر را درون آن قرار دهید

توضیح کدهای بالا

این کدها هم دقیقا مانند کدهای بالا هستند با این تفاوت که شروع حرکت یعنی  fromXDelta از فاصله (۳۰۰-) شروع می شود

۴ ) درنهایت ما دو نوع انیمیشن طراحی کرده ایم

۱- وارد شدن از سمت راست ( move_right )

۲- وارد شدن از سمت چپ ( move_left )

به تصویر زیر دقت کنید

 

 

مرحله دوم : طراحی یک لایوت زیبا

خب ما به سراغ لایوت خودمون میریم و یک لایوت به صورت دلخواه طراحی می کنیم (کدهای زیر مربوط به لایوت من هستند)

توضیح کدهای بالا :

من در لایوت خودم ۴ دکمه طراحی کرده ام و چندیدن خاصیت دل به خواهی به آنها داده ام

فقط ۴ خط کد مهم هستند که مربوط به id های دکمه ها می باشند

خط ۱۶ / خط ۲۶ / خط ۳۶ / خط ۴۶

 

 

مرحله چهارم : کدنویسی در اکتیویتی

خب به سراغ کدهای جاوا یا همان اکتیویتی خود بروید و کدهای زیر را به صورت کامل در آن کپی کنید

توضیح کدهای بالا :

خط ۱۷ تا ۲۰ : در این جا من با استفاده از آن چهار id مربوط به دکمه ها ، چهار شی ساخته ام

btn1  و  btn2  و  btn3  و  btn4

خط ۲۳ و ۲۴ : در این دو خط ، همان دو انیمیشن خود را فراخوانی کرده ام و دو نام اختصاصی به آنها داده ام

anim_m_right   و  anim_m_left

خط ۲۷ و ۲۹ : در اینجا یکی در میان انیمیشن anim_m_right را به دکمه ها داده ام (درواقع به شی ، دکمه ها) تا از سمت راست صفحه وارد شوند

خط ۲۸ و ۳۰ : در اینجا یکی در میان انیمیشن anim_m_left را به دکمه ها داده ام (درواقع به شی ، دکمه ها) تا از سمت راست صفحه وارد شوند

 

 

 

خیلی خب دوستان این جلسه هم به پایان رسید

در جلسه بعدی خاصیت های انیمیشن ها را به صورت تخصصی تر و کامل تر بیان خواهم کرد

شما در این جلسه باید به درکی کامل از روش استفاده از انیمیشن ها برسید

خسته نباشید

با ارائه پیشنهادات و انتقادات خود ، گروه آموزشی همیار اندروید را در این مسیر یاری فرمایید
این نوشته را در گوگل پلاس محبوب کنید
ارسال مطلب توسط : سامان سلطانی پور
من عاشق طراحی و کدنویسی هستم ، سایت همیار اندروید رو با عشق تاسیس کردم تا هرچی که می دونم رو به دیگران آموزش بدم ... چیزی به نام فوت و فن استادی وجود نداره ، همه چیز رو بی منت تقدیم شما می کنم تا شاید یه کمک کوچیکی به شما دوستای عزیز بشه ...

همیار اندروید را در شبکه های اجتماعی دنبال کنید
یــــــک راه آسان برای ارتباط با هـــــــم :)
مطالب مرتبط با موضوع شما

برچسب‌ها: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

نظرات کاربران

لطفا نظر ، پیشنهاد و انتقاد خود را فقط در ارتباط با موضوع بالا ذکر کنید و از سوالات پراکنده خود داری کنید
برای حفظ و برقراری نظم در سایت به سوالات پراکنده پاسخ داده نمی شود
در آینده سیستم پرسش و پاسخ راه اندازی خواهد شد
لطفا به قوانین احترام بگذارید

12 پاسخ به “آموزش کار با انیمیشن ها در برنامه نویسی اندروید (Animation)”

  1. دانیال می‌گه:

    سلام خدا خیرتون بده میشه بهم کمک کنید میشه زود جوابمو بدید

     

  2. دانیال می‌گه:

    من یه برنامه اشپزی درست کردم که یه قسمتش کاربر اموزش میده برنامه انلاین هستش حالا من نوشتهارو به دیتابیس میفرستم دیتابیس به جیسون تبدیل میکنه بعد برش میگردونم به گوشی حالا من نمیدونم عکسو چجوری اپلود کنم و به جیسون تبدیل کنم و به برنامه برگرده میشه سورسشو بهت بدم این قسمتو برام درست کنی از شرمندگیت در میام

    • سامان سلطانی پور می‌گه:

      ببخشید دوست عزیز 

      نمی خوام کلاس الکی بزارم ، اما خداییش اصلا وقت ندارم ،

      حتی خیلی از روزها وقت ندارم به کامنتهای کاربرا پاسخ بدم

      امیدوارم که موفق شوید

  3. دانیال می‌گه:

    اشکال نداره دستت درد نکنه استاد همین که جوابمو دادید ازت ممنونم 

  4. mitra می‌گه:

    سلام وققتون بخیر خسته نباشید

    من تمامی مرحله هارو پیش رفتم ماشین مجازیم هم درسته اما خروجی نمیده

    از این ارور میده

    ممنون میشم پاسخگو باشید

     

    AGPBI: {"kind":"error","text":"java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.defineClass1(Native Method)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.defineClass(ClassLoader.java:800)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.defineClass(URLClassLoader.java:449)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.access$100(URLClassLoader.java:71)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader$1.run(URLClassLoader.java:361)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader$1.run(URLClassLoader.java:355)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.security.AccessController.doPrivileged(Native Method)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.findClass(URLClassLoader.java:354)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.loadClass(ClassLoader.java:425)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.loadClass(ClassLoader.java:358)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)","sources":[{}]}
    AGPBI: {"kind":"error","text":"Exception in thread \"main\" ","sources":[{}]}

    :app:transformClassesWithDexForDebug FAILED

    AGPBI: {"kind":"error","text":"java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.defineClass1(Native Method)","sources":[{}]}

    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.defineClass(ClassLoader.java:800)","sources":[{}]}
    FAILURE: Build failed with an exception.

    * What went wrong:
    Execution failed for task ':app:transformClassesWithDexForDebug'.
    > com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_80\bin\java.exe'' finished with non-zero exit value 1
    AGPBI: {"kind":"error","text":"\tat java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)","sources":[{}]}

    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.defineClass(URLClassLoader.java:449)","sources":[{}]}
    * Try:
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.access$100(URLClassLoader.java:71)","sources":[{}]}
    Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output.
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader$1.run(URLClassLoader.java:361)","sources":[{}]}

    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader$1.run(URLClassLoader.java:355)","sources":[{}]}

    BUILD FAILED

    AGPBI: {"kind":"error","text":"\tat java.security.AccessController.doPrivileged(Native Method)","sources":[{}]}

    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.findClass(URLClassLoader.java:354)","sources":[{}]}

    Total time: 15.592 secs

    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.loadClass(ClassLoader.java:425)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.loadClass(ClassLoader.java:358)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)","sources":[{}]}
    AGPBI: {"kind":"error","text":"Exception in thread \"main\" ","sources":[{}]}
    AGPBI: {"kind":"error","text":"java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.defineClass1(Native Method)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.defineClass(ClassLoader.java:800)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.defineClass(URLClassLoader.java:449)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.access$100(URLClassLoader.java:71)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader$1.run(URLClassLoader.java:361)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader$1.run(URLClassLoader.java:355)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.security.AccessController.doPrivileged(Native Method)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.findClass(URLClassLoader.java:354)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.loadClass(ClassLoader.java:425)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.loadClass(ClassLoader.java:358)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)","sources":[{}]}
    AGPBI: {"kind":"error","text":"Exception in thread \"main\" ","sources":[{}]}
    AGPBI: {"kind":"error","text":"java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.defineClass1(Native Method)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.defineClass(ClassLoader.java:800)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.defineClass(URLClassLoader.java:449)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.access$100(URLClassLoader.java:71)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader$1.run(URLClassLoader.java:361)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader$1.run(URLClassLoader.java:355)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.security.AccessController.doPrivileged(Native Method)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.net.URLClassLoader.findClass(URLClassLoader.java:354)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.loadClass(ClassLoader.java:425)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat java.lang.ClassLoader.loadClass(ClassLoader.java:358)","sources":[{}]}
    AGPBI: {"kind":"error","text":"\tat sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)","sources":[{}]}
    AGPBI: {"kind":"error","text":"Exception in thread \"main\" ","sources":[{}]}

     

  5. mitra می‌گه:

    ممنون برنامه ام اجرا شد .

     

  6. آرش می‌گه:

    واقعا عالی….

    دمتون گررررررم…خسته نباشید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


ما را محبوب کنید