در این آموزش، یک برنامه اندرویدی خواهیم نوشت که با کلیک روی یک دکمه، تصویر موجو در ImageView به رنگ خاکستری تغییر رنگ خواهد کرد.

پروژه جدیدی با حداقل SDK مورد نیاز ۱۰ ایجاد کنید و لایوت اصلی (activity_main.xml) را باز کنید. در این لایوت، یک button و یک imageView به شکل زیر وارد کنید:

پوشه ای با نام drawable هم در پوشه res ایجاد کرده و یک تصویر دلخواه در آن قرار دهید. من نام این تصویر را image گذاشته ام.

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

تصویر اصلی چیزی شبیه به تصویر زیر خواهد بود:

برنامه نویسی اندروید - خاکستری کردن تصویر

این هم نتیجه کار:

برنامه نویسی اندروید - خاکستری کردن تصویر

در این آموزش، در ادامه پردازش تصویر در برنامه نویسی اندروید، نحوه چرخاندن تصویر با زاویه دلخواه را آموزش می دهم. در این برنامه تابعی ساده با نام rotateImage به برنامه اضافه کرده و با ارسال یک تصویر و یک مقدار اعشاری (float) به این تابع به عنوان درجه چرخش، تصویر را با زاویه مورد نظر می چرخانیم.

پروژه جدیدی با حداقل SDK مورد نیاز ۱۰ ایجاد کنید و لایوت اصلی (activity_main.xml) را باز کنید. در این لایوت، یک button و یک imageView به شکل زیر وارد کنید:

پوشه ای با نام drawable هم در پوشه res ایجاد کرده و یک تصویر دلخواه در آن قرار دهید. من نام این تصویر را image گذاشته ام.

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

تصویر اصلی:

برنامه نویسی اندروید - چرخاندن تصویر

این هم نتیجه کار:

برنامه نویسی اندروید - چرخاندن تصویر

من مقدار ۲۷۰ رو به عنوان ورودی تابع در نظر گرفتم. با تغییر این مقدار، می توانید میزان چرخش تصویر را تغییر دهید.

در این آموزش، از سری آموزش های پردازش تصویر، نحوه برگرداندن تصویر در راستای محور x-ها (به صورت افقی) یا در راستای محور y-ها (به صورت عمودی) را آموزش خواهم داد.

ما در این برنامه، ابتدا ۲ متغیر از نوع صحیح (int) تعریف می کنیم و به یکی از آنها مقدار عددی ۱ و به دیگری مقدار عددی ۲ را اختصاص می دهیم. سپس تابعی با نام flipImage تعریف می کنیم که کار برگرداندن تصویر یا mirroing و آینه کردن آن را انجام می دهد. تابع flipImage یک تصویر و یکی از دو  مقدار بالا (۱ یا ۲) را به عنوان ورودی می گیرد. سپس با توجه به عدد دریافتی تصویر را به صورت عمودی یا افقی بر می گرداند.

من مقدار ۱ را برای برگرداندن عمودی و ۲ را برای جهت افقی در نظر گرفته ام.

پروژه جدیدی با حداقل SDK مورد نیاز ۱۰ ایجاد کنید و لایوت اصلی (activity_main.xml) را باز کنید. در این لایوت، یک button و یک imageView به شکل زیر وارد کنید:

پوشه ای با نام drawable هم در پوشه res ایجاد کرده و یک تصویر دلخواه در آن قرار دهید. من نام این تصویر را image گذاشته ام.

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

 

تصویر اصلی چیزی شبیه به تصویر زیر خواهد بود:

 برنامه نویسی اندروید - برگرداندن تصویر (آینه کردن)

این هم نتیجه کار:

 برنامه نویسی اندروید - برگرداندن تصویر (آینه کردن)

من مقدار ۲ را به تابع فرستاده ام تا تصویر به صورت افقی برگردانده شود. اگر مقدار ۱ را به آن بفرستید تصویر در جهت عمودی برگردانده می شود.

کاهش عمق رنگ Color Depth مورد دیگری است که امروز در ادامه مبحث پردازش تصاویر در برنامه نویسی اندروید آموزش خواهم داد. برای درک بهتر این ویژگی، ۲ تصویر را که در انتهای مطلب قرار داده ام ببینید و تصویر اصلی و نتیجه کار را با هم مقایسه کنید. در این آموزش هم مانند قبل، در برنامه، یک تابع تعریف می کنیم سپس با کمک یک button آن را روی تصویر اعمال می کنیم.

پروژه جدیدی با حداقل SDK مورد نیاز ۱۰ ایجاد کنید و لایوت اصلی (activity_main.xml) را باز کنید. در این لایوت، یک button و یک imageView به شکل زیر وارد کنید:

پوشه ای با نام drawable هم در پوشه res ایجاد کرده و یک تصویر دلخواه در آن قرار دهید. من نام این تصویر را image گذاشته ام.

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

تصویر اصلی چیزی شبیه به تصویر زیر خواهد بود:

برنامه نویسی اندروید - کاهش عمق رنگ

این هم نتیجه کار:

برنامه نویسی اندروید - کاهش عمق رنگ

من مقدار ۱۶ رو به عنوان ورودی تابع در نظر گرفتم. با تغییر این مقدار، می توانید تصاویر با عمق رنگ متفاوتی به دست آورید.

تنظیم Sharpness یا تیزی تصویر، یکی دیگر از موارد پرکاربرد در برنامه های ویرایش تصویر است. در این آموزش، در برنامه، تابعی با نام sharpenImage تعریف کرده و سپس با اعمال آن روی تصویر، روشنایی آن را تغییر می دهیم. این تابع، یک تصویر و یک مقدار صحیح به عنوان ورودی می گیرد.

در این آموزش، برنامه ای خواهیم نوشت که در این برنامه، با کلیک روی یک دکمه، تصویر موجود در ImageView برفکی می شود. در واقع ما یک تابع با نام sharpenImage داریم که تصویر را sharp می کند.

پروژه جدیدی با حداقل SDK مورد نیاز ۱۰ ایجاد کنید و لایوت اصلی (activity_main.xml) را باز کنید. در این لایوت، یک button و یک imageView به شکل زیر وارد کنید:

پوشه ای با نام drawable هم در پوشه res ایجاد کرده و یک تصویر دلخواه در آن قرار دهید. من نام این تصویر را image گذاشته ام.

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

همانطور که می بینید، ما نیاز به یک کلاس دگیر با نام ConvolutionMatrix داریم تا عملیات مروبط به ایجاد افکت و تغییرات روی تصویر را انجام دهد. یک اکتیویتی جدید به با همین نام ایجاد کرده و دستورات زیر را درون آن قرار دهید:

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

تصویر اصلی چیزی شبیه به تصویر زیر خواهد بود:

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

این هم نتیجه کار:

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

من مقدار ۱۲ رو به عنوان ورودی تابع در نظر گرفتم. با تغییر این مقدار، می توانید میزان تیزی های متفاوتی به دست آورید.

در این آموزش، ما در ImageView یک تصویر داریم که می خواهیم آن را منعکس کنیم و سپس نیمه پایینی قسمت منعکس شده را به تصویر اصلی بچسبانیم و نمایش دهیم.

در این برنامه، با کلیک روی یک دکمه، تصویر موجود در ImageView به حالت منعکس شده در خواهد آمد. در واقع ما یک تابع با نام getRefelection داریم که تصویر را انعکاس می دهد. با کلیک روی دکمه، سیستم عامل اندروید، تابع getRefelection را روی تصویر اعمال می کند.

در واقع در این اپلیکشن اندرویدی، ما تصویر اصلی را برعکس کرده و سپس روی آن سایه می اندازیم و در انتها آن را به بخش پایینی تصویر اصلی می چسبانیم.

پروژه جدیدی با حداقل SDK مورد نیاز ۱۰ ایجاد کنید و لایوت اصلی (activity_main.xml) را باز کنید. در این لایوت، یک button و یک imageView به شکل زیر وارد کنید:

پوشه ای با نام drawable هم در پوشه res ایجاد کرده و یک تصویر دلخواه در آن قرار دهید. من نام این تصویر را image گذاشته ام.

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

تصویر اصلی چیزی شبیه به تصویر زیر خواهد بود:

برنامه نویسی اندروید - انعکاس تصویر

این هم نتیجه کار:

برنامه نویسی اندروید - انعکاس تصویر

تنظیم روشنایی تصویر، یکی دیگر از موارد پرکاربرد در برنامه های ویرایش تصویر است که با استفاده از این ویژگی، می توانید تصویری تیره تر یا روشن تر از تصویر اصلی به دست آورید. در این آموزش، در برنامه، تابعی با نام SetBrightness تعریف کرده و سپس با اعمال آن روی تصویر، روشنایی آن را تغییر می دهیم. این تابع، یک تصویر و یک مقدار صحیح به عنوان ورودی می گیرد و از مقدار دریافت شده، به عنوان میزان روشنایی تصویر استفاده می کند.

پروژه جدیدی با حداقل SDK مورد نیاز ۱۰ ایجاد کنید و لایوت اصلی (activity_main.xml) را باز کنید. در این لایوت، یک button و یک imageView به شکل زیر وارد کنید:

پوشه ای با نام drawable هم در پوشه res ایجاد کرده و یک تصویر دلخواه در آن قرار دهید. من نام این تصویر را image گذاشته ام.

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

تصویر اصلی چیزی شبیه به تصویر زیر خواهد بود:

برنامه نویسی اندروید - تنظیم روشنایی تصویر

این هم نتیجه کار:

 برنامه نویسی اندروید - تنظیم روشنایی تصویر

من مقدار ۸۰- رو به عنوان ورودی تابع در نظر گرفتم. با تغییر این مقدار، می توانید میزان روشنایی های متفاوتی به دست آورید.

اگر با برنامه های ویرایش تصویر کار کرده باشید و یا از کاربران اینستاگرام باشید، می دانید که در این برنامه ها، قابلیت تغییر رنگ تصویر و اعمال افکت های مختلف برای تغییر رنگ و زیباتر کردن آن از ویژگی های پایه ای این برنامه هاست. امروز نحوه اعمال افکت Color Boost یا تغییر رنگ تصویر را آموزش می دهیم.

این آموزش، برنامه ای خواهیم نوشت که در این برنامه، با کلیک روی یک دکمه، رنگ تصویر موجود در ImageView تغییر می کند. در واقع ما یک تابع با نام boostColor داریم که رنگ تصویر را کمی تغییر می دهد.

پروژه جدیدی با حداقل SDK مورد نیاز ۱۰ ایجاد کنید و لایوت اصلی (activity_main.xml) را باز کنید. در این لایوت، یک button و یک imageView به شکل زیر وارد کنید:

پوشه ای با نام drawable هم در پوشه res ایجاد کرده و یک تصویر دلخواه در آن قرار دهید. من نام این تصویر را image گذاشته ام.

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

تصویر اصلی چیزی شبیه به تصویر زیر خواهد بود:

 اعمال افکت تغییر رنگ Color Boost

این هم نتیجه کار:

 اعمال افکت تغییر رنگ Color Boost

بسم الله الرحمن الرحیم

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

در میان آموزش های برنامه نویسی اندروید ما، آموزش های برنامه نویسی موزیک پلیر نسخه های ۱ و ۲ بیشترین طرفدار را داشته است. البته این پخش کننده های موزیک نسخه های ساده ای از پخش کننده موزیک اندروید بودند و قطعا قابلیت انتشار در مارکت های اندروید را ندارند. به همین دلیل، و نیز به دلیل درخواست و طرح پرسش های زیاد توسط کاربران، تصمیم گرفتم نسخه ای پیشرفته تر از پخش کننده موزیک اندروید را آموزش دهم.

در این نسخه، ما یک اکتیویتی اصلی با نام MainActivity داریم که توسط یک ListView تمامی موزیک های موجود در حافظه گوشی را جمع آوری کرده و نمایش می دهد. هز یک از آیتم های ListView شامل نام موزیک و نام خواننده آن موزیک استکه توسط یک کلاس جاوا یا نام Song از فایل موزیک دریافت شده و با استفاده از دو TextView که در فایل activity_song.xml قرار دارند، در لیست ویو نمایش داده می شود. با کلیک روی هر یک از آیتم های ListView موزیک مورد نظر شروع به پخش خواهد کرد و کلیدهای پخش/توقف، عقب و جلو بردن موزیک، رفتن به موزیک بعدی و قبلی، نمایش داده می شوند. همچنین مدت زمان موزیک نیز قابل مشاهده است.

ما در این برنامه از یک سرویس برای پخش موزیک در پس زمینه و هنگام بیرون رفتن از برنامه استفاده خواهیم کرد. با پخش هر موزیک، یک نوتیفیکیشن دریافت می کنید و اگر روی آن کلیک کنید به برنامه باز می گردید.

خوب! بهتره شروع کنیم.

در ابتدا توجه داشته باشید که حداقل API مورد نیاز برای این برنامه API16 است.

ابتدا، ۲ تصویر PNG زیر را دریافت کرده و در پوشه drawable (که در گوشه res قرار دارد) کپی کنید. اگر این پوشه موجود نیست آن را ایجاد کنید.

آیکن پخش با نام play:

برنامه نویسی اندروید - موزیک پلیر نسخه 3

آیکن خروج از برنامه با نام end:

برنامه نویسی اندروید - موزیک پلیر نسخه 3

حالا، به یک uses-permission نیاز داریم. دستور زیر را به فایل AndroidManifest.xml (بالای application) اضافه کنید:

و همینطور به یک سرویس نیاز داریم. آن را داخل application و زیر activity اضافه کنید:

فایل AndroidManifest.xml باید چیزی مانند زیر باشد:

ما در این برنامه به ۲ لایوت نیاز داریم. یکی با نام activity_main.xml که حاوی لیست آهنگ ها خواهد بود و دیگری با نام activity_song.xml که دارای دو TextView برای نمایش نام موزیک و نام خواننده در لیست ویو است. در واقع لیست ویو از این فایل xml برای نمایش هر یک از آیتم های خود استفاده می کند.

در فایل activity_main.xml یک ImageButton برای خروج از برنامه و یک ListView برای نمایش لیست آهنگ ها اضافه می کنیم:

 

و این هم activity_song.xml:

خوب حالا باید کدها و دستورات اصلی برنامه برای اجرای موزیک پلیر را بنویسیم. در این پخش کننده موسیقی، به پنج کلاس جاوا نیاز داریم که عبارتند از:

MainActivity.java

MusicController.java

MusicService.java

Song.java

SongAdapter.java

خوب ابتدا دستورات کلاس Song.java را می نویسیم. از این کلاس استفاده می کنیم برای جمع آوری اطلاعات موسیقی. وقتی این کلاس فراخوانی شود نام موزیک و نام خواننده آن و همچنین ID آن موزیک را به ما می دهد.

حالا اکتیویتی اصلی برنامه یعنی همان MainActivity.java را باز کنید. این کلاس (اکتیویتی)، حاوی لیستی است که آهنگ ها را جمع آوری کرده و نمایش می دهد و استفاده از دیگر کلاس ها برای پخش موزیک در این کلاس انجام می شود.

کلاس بعدی MusicController.java است که چیز خاصی نداره:

حالا SongAdapter.java که موزیک ها رو در لیست قرار میده:

و آخرین کلاس که یک سرویس است با نام MusicService.java

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

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

برنامه نویسی اندروید - موزیک پلیر نسخه 3

برنامه نویسی اندروید - موزیک پلیر نسخه 3 برنامه نویسی اندروید - موزیک پلیر نسخه 3 برنامه نویسی اندروید - موزیک پلیر نسخه 3

در این آموزش، برنامه ای خواهیم نوشت که در این برنامه، با کلیک روی یک دکمه، یک افکت با نام افکت emboss روی تصویر موجود در ImageView اعمال می شود. اگر آموزش های قبل از سری کار با تصویر را دنبال کرده باشید، حتما افکت حکاکی را دیده اید. افکت emboss نیز چیزی شبیه همان است.

پروژه جدیدی با حداقل SDK مورد نیاز ۱۰ ایجاد کنید و لایوت اصلی (activity_main.xml) را باز کنید. در این لایوت، یک button و یک imageView به شکل زیر وارد کنید:

پوشه ای با نام drawable هم در پوشه res ایجاد کرده و یک تصویر دلخواه در آن قرار دهید. من نام این تصویر را image گذاشته ام.

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

همانطور که می بینید، ما نیاز به یک کلاس دگیر با نام ConvolutionMatrix داریم تا عملیات مروبط به ایجاد افکت و تغییرات روی تصویر را انجام دهد. ایک اکتیویتی جدید به با همین نام ایجاد کرده و دستورات زیر را درون آن قرار دهید:

این هم نتیجه کار:

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