¡Descarga esta aplicación!
https://play.google.com/store/apps/details?id=com.peenats.ayana.colorlens
Esta es una aplicación de edición de fotografías para Android. Puede hacer fotos como las de CHEKI. Puedes decorar tu foto con el filtro de lentes de color, el marco de fotos y garabatear con el dedo.
Estoy usando Java para esta aplicación. Soy nuevo en el lenguaje Java. Así que como desafío decidí hacer un proyecto Java. Sin embargo, en el evento I/O 2019, Google anunció que el desarrollo de Android se basaría cada vez más en Kotlin. Así que la próxima vez decidí crear una aplicación para Android usando Kotlin. También Google I/O anunció el nuevo Android Jetpack. No utilicé ninguna función en este proyecto de Jetpack. Pero necesito ponerme al día con todas las funciones de Jetpack.
✂︎Recortar
Está implementado por la biblioteca SimpleCropView. Acabo de configurar cropMode, frameScale y ShowMode. ¡Fue súper fácil de usar y hermoso! Este es el código.
mCropView = findViewById(R.id.cropImageView);
mCropView.setCropMode(CropImageView.CropMode.SQUARE);
mCropView.setInitialFrameScale(0.75f);
mCropView.setGuideShowMode(CropImageView.ShowMode.SHOW_ON_TOUCH);
?Filtro de lentes de color
Esta es la función principal de esta aplicación. Para hacer el filtro de color, utilicé la matriz de rgba. Por ejemplo, este es el código para cambiar el color a rojo.
float[] red_colour_matrix = {
3f, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, 0
};
?Marco
Estaba particularmente preocupado por estos marcos. Quería acercar estos marcos al marco CHEKI real. Hice estos marcos usando Sketch. Luego los exporté para obtener la densidad deseada (1x, 1,5x, 2x, 3x, 4x). Luego los configuro en cada carpeta de densidad. El directorio dibujable se parece a la imagen de abajo.
?Garabatear
Quería hacer que la aplicación de edición de fotos se pudiera garabatear con el dedo. No fue difícil de implementar pero sí un poco complicado. Para dibujar una línea en el dispositivo con el dedo, tuve que anular el método onTouchEvent (puede detectar 3 acciones del dedo: abajo, mover y arriba). Agregué la ruta y pinté en ArrayList cada vez que me ahogaba. Luego anulé el método onDraw para dibujar rutas dentro de ArrayList en Canvas. Llamé al método onDraw cada vez que dibujaba cada línea.
@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;
}
Planeo
Para obtener imágenes de forma rápida y eficiente, esta aplicación utiliza Glide.
Vista de recorte simple
Al recortar una imagen de la galería, estoy usando esta biblioteca. La razón por la que decidí usar esto es que esta biblioteca tiene una vista simple y agradable. También es fácil de usar.