Этот код позволяет выбрать картинку и сделать эту картинку иконкой , но проблема в том что изначально (до выбора картинки иконка круглая) , а после выбора картинки становится квадратной , товя задача сделать так чтобы поле выбора картинки эта картинка должны остаться круглой : <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    android:gravity="center_vertical">
    <ImageButton

        android:id="@+id/imageButtonProfile"
    android:layout_width="156dp"
    android:layout_height="156dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginBottom="16dp"
    android:background="@drawable/circle_background"

    android:padding="24dp"
    android:src="@drawable/baseline_person_add_24"
        android:clipToOutline="true"
        android:outlineProvider="background"
        />

<LinearLayout
android:layout_width="380dp"
    android:layout_height="69dp"
    android:orientation="horizontal"
    android:gravity="center"
    android:weightSum="2.5"
    android:maxWidth="380dp"
    android:minWidth="380dp">

<TextView

android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:gravity="center"
    android:text="Name: "
    android:layout_weight="1"
    style="@style/CustomTextViewStyle"
    android:maxWidth="120dp"
    android:minWidth="120dp"/>

<TextView
android:id="@+id/textViewName_2"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:gravity="center"
    android:text="E mail: "
    android:layout_weight="1"
    style="@style/CustomTextViewStyle"
    android:maxWidth="120dp"
    android:minWidth="120dp"/>
    </LinearLayout>

<LinearLayout
android:layout_width="380dp"
    android:layout_height="69dp"
    android:orientation="horizontal"
    android:gravity="center"
    android:weightSum="2.5"
    android:maxWidth="380dp"
    android:minWidth="380dp">

<TextView

android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:gravity="center"
    android:text="Email: "
    android:layout_weight="1"
    style="@style/CustomTextViewStyle"
    android:maxWidth="120dp"
    android:minWidth="120dp"/>

<TextView
android:id="@+id/editTextEmail_2"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:gravity="center"
    android:text="E mail: "
    android:layout_weight="1"
    style="@style/CustomTextViewStyle"
    android:maxWidth="120dp"
    android:minWidth="120dp"/>
    </LinearLayout>

<LinearLayout
android:layout_width="380dp"
    android:layout_height="69dp"
    android:orientation="horizontal"
    android:gravity="center"
    android:weightSum="2.5"
    android:maxWidth="380dp"
    android:minWidth="380dp">

<TextView

android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:gravity="center"
    android:text="Password: "
    android:layout_weight="1"
    style="@style/CustomTextViewStyle"
    android:maxWidth="120dp"
    android:minWidth="120dp"/>

<TextView
android:id="@+id/password_2"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:gravity="center"
    android:text="Email: "
    android:layout_weight="1"
    style="@style/CustomTextViewStyle"
    android:maxWidth="120dp"
    android:minWidth="120dp"/>
    </LinearLayout>

    </LinearLayout>package com.example.myapp_2;

import static android.app.Activity.RESULT_OK;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Shader;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.example.myapp_2.Data.register.LoginFragment;
import com.example.myapp_2.Data.register.User;
import com.example.myapp_2.Data.register.UserDAO;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

public class ProfileFragment extends Fragment {

    private UserDAO userDAO;
    private int userId;
    private User user;

    private EditText editTextName, editTextEmail, editTextPassword;
    private Button buttonUpdate;

    public ProfileFragment() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        userDAO = new UserDAO(getActivity());
        userDAO.open();

// получение id последнего авторизовавшегося пользователя
        SharedPreferences sharedPreferences = getActivity().getSharedPreferences("myPrefs_profile", Context.MODE_PRIVATE);
        List<User> users = userDAO.getAllUsers();
        SharedPreferences prefs = getActivity().getSharedPreferences("MY_PREFS_NAME", getActivity().MODE_PRIVATE);
        int profile_num = prefs.getInt("profile_num", 0); // 0 - значение по умолчанию
        userId = sharedPreferences.getInt("lastLoggedInUserId", profile_num);

// получение данных пользователя по его id
        user = userDAO.getUserById(userId);
    }

    @SuppressLint("MissingInflatedId")
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.profile, container, false);
        ImageButton imageButtonProfile = view.findViewById(R.id.imageButtonProfile);
        imageButtonProfile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
// вызов диалогового окна для выбора изображения
                Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setType("image/*");
                startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);
            }
        });
        SharedPreferences sharedPreferences = getActivity().getSharedPreferences("myPrefs_profile", Context.MODE_PRIVATE);
        String imagePath = sharedPreferences.getString("profile_picture_path", null);

// отображение сохраненного изображения на месте круглой иконки
        if(imagePath != null) {
            Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
            imageButtonProfile = view.findViewById(R.id.imageButtonProfile);
            imageButtonProfile.setImageBitmap(bitmap);
        }

        getActivity().findViewById(R.id.bottomNavigationView).setVisibility(View.VISIBLE);

// отображение данных последнего авторизовавшегося пользователя
        TextView textViewName = view.findViewById(R.id.textViewName_2);
        textViewName.setText(getLastLoggedInUser().getName());

        TextView textViewEmail = view.findViewById(R.id.editTextEmail_2);
        textViewEmail.setText(getLastLoggedInUser().getEmail());

        TextView textViewPassword = view.findViewById(R.id.password_2);
        textViewPassword.setText(getLastLoggedInUser().getPassword());


        return view;
    }

    // метод получения данных последнего авторизовавшегося пользователя
    private User getLastLoggedInUser() {
        return userDAO.getUserById(userId);
    }

    // метод обновления данных пользователя
    private void updateUser() {
        String name = editTextName.getText().toString();
        String email = editTextEmail.getText().toString();
        String password = editTextPassword.getText().toString();

// обновление данных пользователя в базе данных
        user.setName(name);
        user.setEmail(email);
        user.setPassword(password);
        userDAO.updateUser(user);

// отправка результата в MainActivity
        Intent intent = new Intent();
        intent.putExtra("profile_updated", true);
        intent.putExtra("user_id", userId);
        getActivity().setResult(RESULT_OK, intent);
        getActivity().finish();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        userDAO.close();
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
            // получение выбранного изображения
            Uri imageUri = data.getData();

            try {
                // конвертация изображения в Bitmap
                Bitmap sourceBitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), imageUri);

                // вычисление размера стороны квадрата, который округляется до круга
                int sideLength = Math.min(sourceBitmap.getWidth(), sourceBitmap.getHeight());

                // создание нового Bitmap, который содержит круглое изображение
                Bitmap clippedBitmap = Bitmap.createBitmap(sideLength, sideLength, Bitmap.Config.ARGB_8888);
                Canvas canvas = new Canvas(clippedBitmap);
                BitmapShader shader = new BitmapShader(sourceBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
                Paint paint = new Paint();
                paint.setShader(shader);
                paint.setAntiAlias(true);
                float radius = sideLength / 2f;
                canvas.drawCircle(radius, radius, radius, paint);

                // сохранение круглого изображения в файл
                File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
                File imageFile = File.createTempFile("profile_picture_", ".jpg", storageDir);
                FileOutputStream out = new FileOutputStream(imageFile);
                clippedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
                out.flush();
                out.close();

                // сохранение пути к файлу в SharedPreferences
                SharedPreferences sharedPreferences = getActivity().getSharedPreferences("myPrefs_profile", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.putString("profile_picture_path", imageFile.getAbsolutePath());
                editor.apply();

                // отображение круглого изображения на ImageButton
                ImageButton imageButtonProfile = getActivity().findViewById(R.id.imageButtonProfile);
                imageButtonProfile.setImageBitmap(clippedBitmap);
            } catch (IOException e) {
                e.printStackTrace();
                Toast.makeText(getActivity(), "Failed to open image", Toast.LENGTH_SHORT).show();
            }
        }
    }
    private void saveImageToStorage(Bitmap bitmap) {
        try {
// создание файла для сохранения изображения
            File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
            File imageFile = File.createTempFile(
                    "profile_picture_", ".jpg",
            storageDir);

// сохранение изображения в файл
            FileOutputStream out = new FileOutputStream(imageFile);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
            out.flush();
            out.close();

// сохранение пути к файлу в SharedPreferences
            SharedPreferences sharedPreferences = getActivity().getSharedPreferences("myPrefs_profile", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putString("profile_picture_path", imageFile.getAbsolutePath());
            editor.apply();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}