Baixe este aplicativo!
https://play.google.com/store/apps/details?id=com.peenats.ayana.colorlens
Este é um aplicativo de edição de fotos para Android. Pode fazer fotos como a foto CHEKI. Você pode decorar sua foto com filtro de lente colorida, moldura de foto e rabiscar com o dedo.
Estou usando Java para este aplicativo. Eu sou novo na linguagem Java. Então como desafio decidi fazer um projeto Java. No entanto, no evento I/O 2019, o Google anunciou que o desenvolvimento do Android se tornaria cada vez mais baseado em Kotlin. Então decidi fazer um aplicativo Android usando Kotlin na próxima vez. Também o Google I/O anunciou o novo Android Jetpack. Não utilizei nenhuma função neste projeto do Jetpack. Mas preciso atualizar todos os recursos do Jetpack.
✂︎Recorte
É implementado pela biblioteca SimpleCropView. Acabei de definir cropMode, frameScale e ShowMode. Foi super fácil de usar e lindo! Este é o 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 lente colorida
Esta é a função principal deste aplicativo. Para fazer o filtro de cores, usei matriz de rgba. Por exemplo, este é o código para mudar a cor para vermelho.
float[] red_colour_matrix = {
3f, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, 0
};
?Quadro
Fiquei particularmente preocupado com esses quadros. Eu queria aproximar essas molduras da moldura CHEKI real. Fiz esses quadros usando Sketch. Depois exportei-os para a densidade desejada (1x, 1,5x, 2x, 3x, 4x). Então eu os configurei para cada pasta de densidade. O diretório Drawable se parece com a imagem abaixo.
?Doodle
Eu queria fazer o aplicativo editor de fotos, que pudesse ser rabiscado com o dedo. Não foi difícil de implementar, mas um pouco complicado. Para desenhar alguma linha no dispositivo com o dedo, tive que substituir o método onTouchEvent (ele pode detectar 3 ações do dedo: para baixo, mover e para cima). Eu adicionei o caminho e pintei em ArrayList sempre que fui afogado. Então substituí o método onDraw para desenhar caminhos dentro de ArrayList no Canvas. Chamei o método onDraw sempre que desenhava cada linha.
@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;
}
Deslizar
Buscando imagens de forma rápida e eficiente, este aplicativo usa o Glide.
SimpleCropView
Cortando uma imagem da galeria, estou usando esta biblioteca. A razão pela qual decidi usar isso é que esta biblioteca tem uma visão simples e agradável. Também é fácil de usar.