Search code examples
androidcamera2

ImageView not fitting sides of screen


Well my app should let me take a picture of my face and display it until i delete it where I can take another one. What is happening when I first open the app is that the pink side lines of the layout backround shows but when I take a picture the pink lines dissapear. This shouldnt happen because the imageview that i am setting the backround bitmap to is match_parent on width and height

The second problem is that the when I set the background imageview back to the background before which is transparent in the center so you can see where the camera is pointing does not happen even though I set it back. The screen should revert back to the transparent center but it stays the screenshot that is taken when takePicture is run. Thanks for any help as i am ripping my hair out right now

enter image description here

   background_view = (ImageView) view.findViewById(R.id.backround_view);
            background = BitmapFactory.decodeResource(getResources(), R.drawable.camera_backround);
            background_view.setImageBitmap(background);

private void takePicture() {
        if (picturePresent == false) {
            edit_button.setVisibility(View.INVISIBLE);

            pictureBitmap = getBitmapFromView();

            edit_button.setVisibility(View.VISIBLE);

            closeCamera();
            stopBackgroundThread();

            BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), pictureBitmap);
            background_view.setBackground(bitmapDrawable);
            picturePresent = true;

        } else {
        }
    }


    private void deletePicture() {
        if (picturePresent == true) {
            startBackgroundThread();
            openCamera(mTextureView.getWidth(), mTextureView.getHeight());
            background_view.setImageBitmap(background);
            picturePresent = false;
        } else {
        }
    }

    public Bitmap getBitmapFromView() {
        Bitmap bitmap = mTextureView.getBitmap();
        Bitmap bitmap2 = BitmapFactory. decodeResource(getResources(), R.drawable.camera_backround);
        Bitmap bmOverlay = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
        Canvas canvas = new Canvas(bmOverlay);
        canvas.drawBitmap(bitmap, new Matrix(), null);
        canvas.drawBitmap(bitmap2, new Matrix(), null);
        return bmOverlay;
    }

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             tools:context="yourfacelivewallpaper.alexcz.yourfacelivewallpaper.CameraFragment"
                android:background="#ffbf1ec5">

    <!-- TODO: Update blank fragment layout -->

    <view
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        class="yourfacelivewallpaper.alexcz.yourfacelivewallpaper.AutoFitTextureView"
        android:id="@+id/texture"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"/>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/backround_view"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:longClickable="false"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true"/>

Solution

  • android:scaleType="fitXY"

    Add above code in xml file.