diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/TransferReceiptFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/TransferReceiptFragment.kt index 8b8f647..c7aa1e6 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/TransferReceiptFragment.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/TransferReceiptFragment.kt @@ -11,17 +11,13 @@ import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint -import android.graphics.Rect import android.net.Uri import android.os.Build import android.os.Bundle import android.os.Environment -import android.os.Handler -import android.os.Looper import android.provider.MediaStore import android.util.Base64 import android.view.LayoutInflater -import android.view.PixelCopy import android.view.View import android.view.ViewGroup import android.widget.Toast @@ -159,9 +155,6 @@ class TransferReceiptFragment : Fragment() { } }) - view.findViewById(R.id.btnDone).setOnClickListener { - parentFragmentManager.popBackStack() - } view.findViewById(R.id.btnShare).setOnClickListener { shareReceipt() } @@ -377,21 +370,19 @@ class TransferReceiptFragment : Fragment() { // ── Helpers ─────────────────────────────────────────────────────────────── /** - * Captures the receipt card using PixelCopy, which correctly handles - * hardware-accelerated views (avoids the black-square problem with view.draw()). + * Draws the receipt card to an offscreen bitmap at its natural (unscaled) + * dimensions, so the captured image isn't affected by the on-screen scale + * applied to fit small viewports and doesn't pick up overlapping siblings. */ private fun captureReceiptBitmap(callback: (Bitmap?) -> Unit) { val view = _receiptCard ?: run { callback(null); return } if (view.width == 0 || view.height == 0) { callback(null); return } val bitmap = Bitmap.createBitmap(view.width, view.height, Bitmap.Config.ARGB_8888) - val location = IntArray(2) - view.getLocationInWindow(location) - val srcRect = Rect(location[0], location[1], location[0] + view.width, location[1] + view.height) - - PixelCopy.request(requireActivity().window, srcRect, bitmap, { result -> - callback(if (result == PixelCopy.SUCCESS) bitmap else null) - }, Handler(Looper.getMainLooper())) + val canvas = Canvas(bitmap) + canvas.drawColor(Color.WHITE) + view.draw(canvas) + callback(bitmap) } private fun formatBmlTimestamp(raw: String): String { diff --git a/app/src/main/res/layout/fragment_receipt_bml.xml b/app/src/main/res/layout/fragment_receipt_bml.xml index 41e77e8..0dd0d2f 100644 --- a/app/src/main/res/layout/fragment_receipt_bml.xml +++ b/app/src/main/res/layout/fragment_receipt_bml.xml @@ -246,18 +246,10 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:layout_marginHorizontal="4dp" + android:layout_marginStart="4dp" android:text="Save" app:icon="@drawable/ic_save" /> - - diff --git a/app/src/main/res/layout/fragment_receipt_mfaisa.xml b/app/src/main/res/layout/fragment_receipt_mfaisa.xml index 3fdb0b8..7a27c11 100644 --- a/app/src/main/res/layout/fragment_receipt_mfaisa.xml +++ b/app/src/main/res/layout/fragment_receipt_mfaisa.xml @@ -376,18 +376,10 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:layout_marginHorizontal="4dp" + android:layout_marginStart="4dp" android:text="Save" app:icon="@drawable/ic_save" /> - - diff --git a/app/src/main/res/layout/fragment_receipt_mib.xml b/app/src/main/res/layout/fragment_receipt_mib.xml index 02e4018..a641cfb 100644 --- a/app/src/main/res/layout/fragment_receipt_mib.xml +++ b/app/src/main/res/layout/fragment_receipt_mib.xml @@ -273,18 +273,10 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:layout_marginHorizontal="4dp" + android:layout_marginStart="4dp" android:text="Save" app:icon="@drawable/ic_save" /> - -