قم بتنزيل هذا التطبيق!
https://play.google.com/store/apps/details?id=com.peenats.ayana.colorlens
هذا هو تطبيق محرر الصور لنظام Android. يمكنه عمل صورة مثل صورة CHEKI. يمكنك تزيين صورتك باستخدام مرشح العدسات الملونة وإطار الصورة ورسومات الشعار المبتكرة بإصبعك.
أنا أستخدم Java لهذا التطبيق. أنا جديد على لغة جافا. لذلك قررت أن أقوم بمشروع Java كتحدي. ومع ذلك، في حدث I/O 2019، أعلنت Google أن تطوير Android سيصبح يعتمد بشكل متزايد على لغة Kotlin. لذلك قررت إنشاء تطبيق Android باستخدام Kotlin في المرة القادمة. كما أعلن Google I/O عن نظام Android Jetpack الجديد. لم أستخدم أي وظيفة في هذا المشروع من Jetpack. لكني أحتاج إلى التعرف على جميع ميزات Jetpack.
✂︎الاقتصاص
يتم تنفيذه بواسطة مكتبة SimpleCropView. لقد قمت للتو بتعيين CropMode وframeScale وShowMode. لقد كان سهل الاستخدام للغاية وجميلًا! هذا هو الرمز.
mCropView = findViewById(R.id.cropImageView);
mCropView.setCropMode(CropImageView.CropMode.SQUARE);
mCropView.setInitialFrameScale(0.75f);
mCropView.setGuideShowMode(CropImageView.ShowMode.SHOW_ON_TOUCH);
?مرشح العدسات الملونة
هذه هي الوظيفة الرئيسية في هذا التطبيق. لصنع مرشح الألوان، استخدمت مصفوفة rgba. على سبيل المثال، هذا هو الكود لتغيير اللون إلى اللون الأحمر.
float[] red_colour_matrix = {
3f, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, 0
};
؟إطار
كنت قلقة بشكل خاص بشأن هذه الإطارات. كنت أرغب في تقريب هذه الإطارات من إطار CHEKI الحقيقي. لقد صنعت هذه الإطارات باستخدام Sketch. ثم قمت بتصديرها للكثافة المطلوبة (1x، 1.5x، 2x، 3x، 4x). ثم قمت بتعيينها على كل مجلد كثافة. يبدو الدليل القابل للرسم كما هو موضح في الصورة أدناه.
؟خربش
كنت أرغب في إنشاء تطبيق محرر الصور، ويمكن رسمه بالإصبع. لم يكن التنفيذ صعبًا ولكنه معقد بعض الشيء. لرسم خط ما على الجهاز بإصبعك، كان عليّ تجاوز طريقة onTouchEvent (يمكنها اكتشاف 3 حركات للإصبع: للأسفل، والتحريك، والأعلى). أضفت المسار والطلاء إلى ArrayList في كل مرة أغرق فيها. ثم قمت بتجاوز طريقة onDraw لرسم المسارات داخل ArrayList on Canvas. لقد قمت باستدعاء طريقة onDraw عند رسم كل سطر.
@Override
public boolean onTouchEvent( MotionEvent event) {
float x = event.getX();
float y = event.getY();
if (event.getAction() == MotionEvent.ACTION_DOWN) {
startPath(x, y);
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
updatePath(x, y);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
}
invalidate();
return true;
}
الانزلاق
جلب الصور سريع وفعال، هذا التطبيق يستخدم Glide.
SimpleCropView
عند قص صورة من المعرض، أستخدم هذه المكتبة. السبب الذي جعلني أقرر استخدام هذا هو أن هذه المكتبة تتمتع بمظهر بسيط وجميل. كما أنه سهل الاستخدام.