このアプリをダウンロードしてください!
https://play.google.com/store/apps/details?id=com.peenats.ayana.colorlens
Android用の写真編集アプリです。チェキ写真のような写真が作れます。 colorlensのフィルターやフォトフレームで写真をデコレーションしたり、指で落書きしたりすることができます。
このアプリには Java を使用しています。私は Java 言語の初心者です。そこで、挑戦として Java プロジェクトを行うことにしました。しかし、I/O 2019 イベントで、Google は Android 開発がますます Kotlin ベースになると発表しました。ということで、今度はKotlinを使ってAndroidアプリを作ってみることにしました。また、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
};
?フレーム
特に気になったのはこのフレームです。本物のチェキフレームに近づけたかったのです。これらのフレームはSketchを使って作りました。次に、目的の密度 (1x、1.5x、2x、3x、4x) でエクスポートしました。次に、それらを各密度フォルダーに設定します。Drawable ディレクトリは以下の画像のようになります。
?いたずら書き
指で落書きできるフォトエディターアプリを作りたいと思いました。実装するのは難しくありませんでしたが、少し複雑でした。指でデバイスに線を描くには、onTouchEvent メソッドをオーバーライドする必要がありました (指の 3 つの動作 (下、移動、上) を検出できます)。溺れるたびにパスとペイントを ArrayList に追加しました。次に、onDraw メソッドをオーバーライドして、Canvas 上の ArrayList 内にパスを描画しました。各線を描画するたびに 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
ギャラリーから画像をトリミングするために、このライブラリを使用しています。なぜこれを使おうと思ったかというと、このライブラリはシンプルで見た目が良いからです。使い方も簡単です。