Кнопка Oncliclk конвертировать RelativeLayout в изображение (PNG) и поделиться - PullRequest
0 голосов
/ 01 мая 2020

Я хочу, чтобы onClick кнопка преобразовала RelativeLayout в изображение (.PNG) и поделилась, я попробовал, но их проблема, поэтому, пожалуйста, проверьте мой код. Моя XML:

    <RelativeLayout
        android:background="#A4000000"
        android:orientation="vertical"
        android:id="@+id/item_quote_background"
        android:layout_width="fill_parent"
        android:layout_height="250dp">


        <ImageView
            android:id="@+id/image_view"
            android:background="@android:color/black"
            android:layout_width="fill_parent"
            android:layout_height="250dp"
            android:scaleType="centerCrop"
            android:adjustViewBounds="true"
            />





    </RelativeLayout>

Java активность:

Context mCtx;
RelativeLayout relativeLayout;

        relativeLayout = findViewById(R.id.item_quote_background);

Вызванная функция Onclick

public void onClick(View v) {
            Bitmap bitmap = Bitmap.createBitmap(relativeLayout.getWidth(), relativeLayout.getHeight(),
                    Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            relativeLayout.draw(canvas);
            Intent intent = new Intent(Intent.ACTION_SEND);
            intent.setType("image/png");
            intent.putExtra(Intent.EXTRA_STREAM, getLocalBitmapUri(bitmap));
            mCtx.startActivity(Intent.createChooser(intent, "Premium Quotes"));
            Toast.makeText(mCtx, "Share image", Toast.LENGTH_SHORT).show();
        }
    });

Моя функция здесь я использовал растровое изображение для преобразования макета в образ.

private Uri getLocalBitmapUri(Bitmap bmp) {
    Uri bmpUri = null;
    try {
        File file = new File(mCtx.getExternalFilesDir(Environment.DIRECTORY_PICTURES),
                "wallpaper" + System.currentTimeMillis() + ".png");
        FileOutputStream out = new FileOutputStream(file);
        bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
        out.close();
        bmpUri = FileProvider.getUriForFile(mCtx, BuildConfig.APPLICATION_ID + ".provider", file);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return bmpUri;
}

Я пытался, но приложение остановилось при нажатии !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...