import
android.app.ProgressDialog;
import
android.content.ContentValues;
import
android.graphics.Bitmap;
import
android.graphics.BitmapFactory;
import
android.graphics.Color;
import
android.graphics.drawable.BitmapDrawable;
import
android.graphics.drawable.Drawable;
import
android.net.Uri;
import
android.os.Build;
import
android.os.Bundle;
import
android.os.Environment;
import
android.provider.MediaStore;
import
android.text.Editable;
import
android.text.TextWatcher;
import
android.view.View;
import
android.widget.Button;
import
android.widget.EditText;
import
android.widget.ImageButton;
import
android.widget.TextView;
import
android.widget.Toast;
import
androidx.appcompat.app.AppCompatActivity;
import
androidx.core.content.res.ResourcesCompat;
import
java.io.File;
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.OutputStream;
import
petrov.kristiyan.colorpicker.ColorPicker;
public
class
MainActivity
extends
AppCompatActivity {
TextView textSticker;
EditText editTextSticker;
ImageButton fontchange;
ImageButton colorPickerText;
Button createSticker;
int
i =
0
;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textSticker = (TextView) findViewById(R.id.stickerTextview);
editTextSticker = (EditText) findViewById(R.id.stickerEditText);
colorPickerText = (ImageButton) findViewById(R.id.changeColor);
fontchange = (ImageButton) findViewById(R.id.changeFont);
createSticker = (Button) findViewById(R.id.convert);
createSticker.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View view) {
try
{
executeSticker();
}
catch
(IOException e) {
e.printStackTrace();
}
}
});
editTextSticker.addTextChangedListener(
new
TextWatcher() {
@Override
public
void
beforeTextChanged(CharSequence charSequence,
int
i,
int
i1,
int
i2) {
}
@Override
public
void
onTextChanged(CharSequence charSequence,
int
i,
int
i1,
int
i2) {
textSticker.setText(charSequence);
}
@Override
public
void
afterTextChanged(Editable editable) {
}
});
fontchange.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View view) {
switch
(i) {
case
0
:
i =
1
;
textSticker.setTypeface(ResourcesCompat.getFont(MainActivity.
this
, R.font.summer));
break
;
case
1
:
i =
2
;
textSticker.setTypeface(ResourcesCompat.getFont(MainActivity.
this
, R.font.angel));
break
;
case
2
:
i =
3
;
textSticker.setTypeface(ResourcesCompat.getFont(MainActivity.
this
, R.font.cute));
break
;
case
3
:
i =
4
;
textSticker.setTypeface(ResourcesCompat.getFont(MainActivity.
this
, R.font.mandala));
break
;
case
4
:
i =
5
;
textSticker.setTypeface(ResourcesCompat.getFont(MainActivity.
this
, R.font.painter));
break
;
case
5
:
i =
6
;
textSticker.setTypeface(ResourcesCompat.getFont(MainActivity.
this
, R.font.newfont));
break
;
case
6
:
i =
0
;
textSticker.setTypeface(ResourcesCompat.getFont(MainActivity.
this
, R.font.orange));
break
;
}
}
});
colorPickerText.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View view) {
final
ColorPicker colorPicker =
new
ColorPicker(MainActivity.
this
);
colorPicker.setOnFastChooseColorListener(
new
ColorPicker.OnFastChooseColorListener() {
@Override
public
void
setOnFastChooseColorListener(
int
position,
int
color) {
textSticker.setTextColor(color);
}
@Override
public
void
onCancel() {
colorPicker.dismissDialog();
}
})
.setColumns(
5
)
.setDefaultColorButton(Color.parseColor(
"#000000"
))
.show();
}
});
}
private
void
executeSticker()
throws
IOException {
OutputStream imageOutStream;
final
ProgressDialog progressDialog =
new
ProgressDialog(MainActivity.
this
);
progressDialog.setMessage(
"Please wait.."
);
progressDialog.show();
textSticker.destroyDrawingCache();
textSticker.buildDrawingCache();
Bitmap textStickerBitmap = textSticker.getDrawingCache();
if
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentValues values =
new
ContentValues();
values.put(MediaStore.Images.Media.DISPLAY_NAME,
"gfg.png"
);
values.put(MediaStore.Images.Media.MIME_TYPE,
"image/png"
);
values.put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_PICTURES);
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
imageOutStream = getContentResolver().openOutputStream(uri);
textStickerBitmap.compress(Bitmap.CompressFormat.PNG,
100
, imageOutStream);
imageOutStream.close();
progressDialog.dismiss();
final
InputStream imageStream;
try
{
imageStream = getContentResolver().openInputStream(uri);
final
Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
Drawable drawable =
new
BitmapDrawable(getResources(), selectedImage);
}
catch
(FileNotFoundException e) {
Toast.makeText(MainActivity.
this
,
"File not found!!"
, Toast.LENGTH_SHORT).show();
}
}
else
{
String imagesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
File image =
new
File(imagesDir,
"gfg.jpg"
);
imageOutStream =
new
FileOutputStream(image);
textStickerBitmap.compress(Bitmap.CompressFormat.PNG,
100
, imageOutStream);
imageOutStream.close();
final
Uri imageUri = Uri.fromFile(image);
final
InputStream imageStream;
try
{
imageStream = getContentResolver().openInputStream(imageUri);
final
Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
Drawable drawable =
new
BitmapDrawable(getResources(), selectedImage);
}
catch
(FileNotFoundException e) {
Toast.makeText(MainActivity.
this
,
"File not found!!"
, Toast.LENGTH_SHORT).show();
}
}
Toast.makeText(
this
,
"Sticker created successfully!!"
, Toast.LENGTH_SHORT).show();
}
}