آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آیا همه ی کنترول های این برنامه در یک اکتیویتی هستن که با انیمیشن ظاهر میشن ؟

JSONObject  12 سال پیش  12 سال پیش
+6 0

این بازی رو حتما دیدین 

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

و اینکه اگر تو یه اکتیویتی هستن چطور همشون رو جا دادن که با انیمیشن ظاهرشون میکنن و اینقدر با نظم هستن ؟

  

   

 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
sadeghbarout  12 سال پیش
+1 0

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

خب اگه اینجوره خیلی چیز سختی نیست. نیاز نیست که هر کدوم از گزینه ها ی single player و ... به اکتیویتی باشن. میشه هرکدوم یه لایه باشن و background شون به عکس ست شده باشه و  دو عکس و 1 متن هم توی هرکدوم باشه. حالا فقط کافیه با چند تا  thread منظم و دادن انیمیشن به لایه ها (نه به عکس ها و متن ها ) اونها رو وارد صفحه کنی.

اگه نیازه بگو بیشتر توضیح بدم :)

پاسخ به سوال 
hamidd  12 سال پیش
+4 0

همون طور که میدونید میتوانید با android ndk از کدهای c++ در پروژه ی اندرویدی خود استفاده کنید که به این کار کدنویسی محلی (native code) می گویند.
این پردازش تصویر هایی که به این طریق در این برنامه ها انجام میشه معمولا (نه در همه ی مواقع)  از طریق native code (کدنویسی محلی) انجام میشه و نکته ای وجود دارد این است  که این کنترل هایی (در واقع گرافیک هایی) که در این صفحه ها وجود داره و همچنین کدهایی که باعث ایجاد این انیمیشن ها میشه را با native code طراحی و کدنویسی می کنند.
توضیحات تکمیلی:
نکته:دلیل این که از واژه ی گرافیک استفاده کردم اینه که این کنترلها توسط کدهای محلی ایجاد شده اند، نه توسط پلاگین ADT
نکته: وقتی شما روی جایی از صفحه کلیک می کنید در واقع روی این کنترلها کلیک نمی کنید، بلکه از طریق کدها ی جاوا مختصات x , y را که کاربر کلیک کرده است را به کدهای محلی  میفرستید و کدهای C++ با توجه به مختصاتی که گرفته اند تشخیص میدهند که چه انیمیشنی باید انجام دهند که این انیمیشن ها با تایمر ها انجام میپذیره و در نتیجه پردازش تصویر مورد نظر رو که  در این جا منظورمان ایجاد انیمیشن است رو انجام میده. یعنی کدهای c++ لمس صفحه را نمی توانند تشخیص دهند شما باید از طریق کدهای جاوا مختصات صفحه رو بگیرید بعد تابع محلی را که در c++ قرار دارد را فراخوانی کنید.

فکر می کنم جواب این سوالتون رو که آیا این کنترل ها در یک اکتیویتی هستند را هم گرفتید.
جواب سوال اینه که اکتیویتی ما فقط با کدهای محلی ارتباط برقرار میکنه.مثلا هر وقت صفحه لمس شد مختصات رو  به کدهای محلی می فرسته.همون طور که عرض کردم این کنترل ها توسط کدهای محلی ایجاد می شوند.
نکته ی جالبی که وجود داره اینه که حتی شما میتونید اکتیویتی خودتان را هم از طریق کدهای c++ طراحی کنید یعنی اکتیویتی محلی ایجاد کنید.
چرا از کدهای محلی برای انجام این کارها استفاده کنیم؟
1- چون به طور مستقیم اجرا می شود و پردازش بهتر انجام می شود.
چون پردازشهای سنگین با native code بهتر انجام میشود.
2- پایداری بهتر
تایمر ها  رو با native code بهتر میشه طراحی کرد.
من خودم تو پروژه هام تایمرهام رو با جاوا کدنویسی کردم که زیاد باگ و مشکل دارن که به سختی فراوان برنامه نویسی شون رو انجام دادم ولی چون توی native code حرفه ای نیستم مجبور شدم از همین کدهای جاوا  استفاده کنم.
3- توی بازی ها و موارد این چنینی نمیشه با کد نویسی جاوا این چنین انیمیشن های خوبی رو ایجاد کرد که برنامه یا بازی برای سایز های مختلف صفحه به خوبی کار کنه و این چنین انیمیشن هایی هم داشته باشه.
نکته : معمولا این بازی های معروف که بعد از مدتی که برای کامپیوتر طراحی میشوند و سپس سازندگان شان این بازی ها را برای اندروید نیز به اصطلاح پورت میکنند، در واقع همین کدهای c++ را که برای ساخت بازی در کامپیوتر  دارند را با کمی تغییرات (میشه گفت بدون تغییر، چون فقط بازی شان را به اندروید پورت میکنند) به بازی اندرویدی تبدیل می کنند. پس میشه گفت که این همه تعریفی که از اندروید برای ساخت گرافیکی ترین بازی ها میشه رو اندروید، مدیون همین c++ هست.
گوگل در واقع با عرضه ی سیستم عامل اندروید که از هسته ی سیستم عامل لینوکس استفاده می کنه زیاد کار شاخی نکرده.
در واقع کار گوگل استفاده از هسته ی (آماده ی) سیستم عامل لینوکس که آماده بود و متن باز بود، همچنین استفاده از پایکاه  داده های sqlite در آن،  استفاده از زبان برنامه نویسی جاوا برای طراحی پروژه های اندرویدی، محیط متن باز و آماده ی  ایکلیپس، استفاده از قدرت زبان c++ که در لینوکس امکان برنامه نویسی c++ هم وجود دارد و خیلی چیز های آماده ی دیگر برای طراحی سیستم عامل اندروید بود.
این چیزهای اوپن سورس و آماده ای که گوگل برای طراحی اندروید از انها استفاده کرده است خوب کار میکنن و تقریبا بدون باگ هستند
و باعث قوت گرفتن سیستم عامل اندروید هستند. مشکل این جاست که گوگل توانسته از این چیزهای آماده استفاده کنه  ولی نتوانسته یک سیستم عامل بدون باگ ایجاد کنه.باگهایی که در تایمرها  , countdown ها و thread های اندروید وجود داره شما رو مجبور میکنه تا برای ساخت چنین انیمیشن هایی از کدهای محلی استفاده کنید.
من خودم شخصا وقتی می خواستم نسخه ی دمو ی برنامه ام رو که بعد از 30 ثانیه باید اکتیویتی بسته میشد رو ایجاد کنم دو هفته طول کشید با همین کدهای جاوا پیاده سازیش کنم،چون وجود باگ در تایمرها باعث می شد بعضی اوقات  اکتیویتی بسته نشه و کاربر بتونه به طور بی نهایت از برنامه استفاده کنه.که البته با تلاش فراوان تونستم مشکلش رو حل کنم و درست پیاده سازیش کنم.
سیستم عامل اندروید و محیط برنامه نویس اش هزاران باگ داره که اگه هزاران صفحه هم درباره ی باگ هاش نوشته بشه باز هم کمه. هزینه ی وجود این باگ ها را ما برنامه نویسان باید بپردازیم ولی چیزی متوجه گوگل نخواهد شد.
این گوگل هست که با ساخت مارکت جهانی اش  تمام سرمایه دنیا را جلب خود می کند و بنا به همین سیاست های درآمدزایی اش امکان در آمد زایی برای برنامه نویسهای برخی از کشور ها را نمی دهد و در اکثر اوقات در صفحه ی اصلی مارکت و صفحه های جانبی اش برنامه هایی از برنامه نویسان USA ای وجود دارد.
و این ما برنامه نویسان هستیم که باید سعی کنیم از پیشرفت برنامه نویسی در دنیا عقب نمانیم.

0 0
داداش دمت گرم خوب و مبسوط توضیح دادی ، ولی من نفهمیدم، شاید جواب منو تو یه خط هم بشه داد؛ گفتم این کترول ها تو اکتیویتی هستن که داره روشون انیمیشن اجرا میشه دیگه ، چطور کنترول های دیگه ای میان جای اینا میشینن اگه اکتیویتی عوض نمیشه ؟ ؛ سیاسیشم نکنیم ، ببخشید (12 سال پیش)
+1 0
اگه با android ndk طراحی بشن .با کدهای c++ طراحی میشن. توی اکتیویتی ما قرار ندارن بلکه در کدهای c++ قرار دارند و کدهای c++ خروجی صفحه را می سازند و نمایش می دهند. با فریم ریت بالایی هم نمایش میدهند. مثلا بالاتر از  30 فریم در ثانیه . در سایز صفحه ی همه ی گوشی ها هم خوب نمایش داده میشن. توی ویندوز اگه دیده باشید با زبانهای برنامه نویسی خیلی راحت کنترل های صفحه را می توانند با انیمیشن جا به جا کنند.توی این برنامه ها هم همین طوره. اول میان با  کدهای c++ ،همه این ها را (شامل کنترلها، و همه چیز دیگه) طراحی و اجرا و تست میکنند.بعد میان توسط android ndk با رابط jni به پروژه اندرویدی ربطش میدن. البته بعضی برنامه ها هم بدون android ndk یه سری انیمیشن هایی ایجاد میکنند که روشش رو من نمیدونم، اگه یه وقت بلد شدم بهت میگم.سیاسیش نکردم. منظورم این بود که وظیفه ای بر دوش ما برنامه نویسان است که خودمونو با تکنولوژی روز دنیا تطابق بدیم و باعث پیشرفت کشورمون بشیم. (12 سال پیش)
پاسخ به سوال 
javac  12 سال پیش
0 0

اگر ویدیو قسمت 21-1 رو ببینید استاد در مورد انیمیشن ها  توضیحاتی کاملی رو دادن حالا برای این طرحی که شما میگین میشه با دادن duration های مختلف به button ها اون ها رو یکی بعد از دیگری ظاهر کرد

0 0
تشکر می کنم از javac و sadeghbarout. بله- بعد از دانلود این برنامه و انجام چند تا تست متوجه شدم این برنامه ای که شما عکسش رو گذاشتید از این روشی که این دو دوستمون گفتند استفاده میکنه. همون یک روشیه که من هنوز به اون اموزشها نرسیدم و شما با دیدن اون آموزشها میتوانید انیمیشن ها رو ایجاد کنید. اگه خواستید متوجه بشید که هر بازی یا برنامه ای از کدوم روش استفاده میکنه یه ترفندی وجود داره که می تونید متوجه بشید از کدوم روش استفاده میکنه، اگه خواستید بگید تا براتون توضیحش بدم. (12 سال پیش)
0 0
@hamidd نیکی و پرسش؟ ترفند رو بگو خب :)) (12 سال پیش)
پاسخ به سوال 
hamidd  12 سال پیش
+3 0

D:
یک ترفندی برای دیدن جزئیات کنترل های صفحه وجود داره، پیشنهاد میکنم حتما امتحان کنید تا همه ی این چیزایی که گفتم رو بتونی بهتر متوجه بشی. روی گوشی گلکسی گرند با اندروید 4.1.2 امتحان کردم جواب میده، رو بعضی گوشی های دیگه هم کار میکنه. برو داخل settings ،بعد داخل developer options اگه developer options غیر فعاله فعالش بکن، بعد تیک گزینه ی Show layout boundaries رو بزن تا این گزینه فعال بشه. بعد میبینی که دور هر جزئی از صفحه خط کشیده شده است .حالا اگه داخل بازی هایی بری که پردازش سنگینی استفاده میکنند(این نشون میده که از android ndk استفاده می کنه) میبینی که کنترل هایی که داخل صفحه قرار دارند از هم مجزا نیستند دلیلش هم اینه که کنترل ها داخل android ndk طراحی شدن و نمیتونه تشخیص شون بده ولی داخل بازی ها و برنامه هایی که از android ndk استفاده نمی کنند و کنترل ها توسط ایکلیپس ایجاد شده اند میتونه تشخیص شون بده و دور هر کدام از کنترل های داخل صفحه خط کشیده شده است و مجزا هستند.
مثلا تو بازی temple run امتحان کردم خط ها را دور کنترل ها رو نشون نداد ولی توی برنامه ای که گفتید(reversi free)  خط ها را دور کنترل ها نشون داد.
اگه مشکلی داشتید بگید تا براتون بیشتر توضیح بدم، اسکرین شات هم بزارم.
البته این گزینه ای که گفتم توی بعضی گوشی ها وجود داره.بستگی به ورژن اندرویدتون داره.

پاسخ به سوال 
uncocoder  12 سال پیش
+5 0

من این برنامه رو ندیدم و نمی دونم چطور کار می کنه اما می تونم بگم، لزومی نداره همه چیز کنترل، Activity و Animation باشه. شاید این صفحه یک OpenGL باشه که داره سه بعدی ترسیم میشه.

چه با OpenGL و چه با Canvas ( همان کنترل های مرسوم ) میشه چنین برنامه هایی رو ساخت اما برای تمیز و نرم اجرا شدن نیاز به کار زیاد و دقت به جزئیات و البته درگیریهای بصری زیادی داره.

+1 0
بله استاد منم میخواستم همین رو بگم.ولی استاد یه سوالی برام پیش اومده.درسته که میگن OpenGL با c++ کار میکنه و برای کار را با OpenGL باید از android ndk استفاده کنیم؟ (12 سال پیش)
0 0
سوال hamidd بی پاسخ مونده ، برای منم همین سوال پیش اومد (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .