Как преобразовать scrollview в растровое изображение? - PullRequest
0 голосов
/ 02 августа 2020
  • Если я хочу напечатать ScrollView, как мне это сделать?
  • Моим временным решением было преобразовать ScrollView в растровые изображения, а затем разделить растровые изображения на несколько небольших изображений для рисования на холсте, но их часто прерывали.
  • Есть ли более эффективное решение? В предыдущем примере я использовал метод view.draw ().
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:fillViewport="true"
    android:fitsSystemWindows="true"
    android:orientation="vertical">
        
            

    <EditText
     android:id="@+id/txt_content"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:autoLink="web|email"
     android:ems="10"
     android:autoSizeTextType="uniform"
     android:gravity="top|start"
     android:inputType="textMultiLine"
     android:padding="6dp"
     android:textSize="17sp"
     app:layout_constraintTop_toTopOf="parent"
     tools:layout_editor_absoluteX="1dp" /> 
        
</ScrollView>


1 Ответ

0 голосов
/ 02 августа 2020

Вы можете получить bitmap на ScrollView потомка.

for (int i=0; i<scrollView.getChildCount(); i++) {
    View v = scrollView.getChildAt(i);
    Bitmap b = loadBitmapFromview(v);
    //save bitmap or so
}

public static Bitmap loadBitmapFromView(View v) {
    Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
    Canvas c = new Canvas(b);
    v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
    v.draw(c);
    return b;
}

Обратите внимание, что loadBitmapFromView(View v) и последующее сохранение bitmap может занять много времени. Поэтому в данном случае рассмотрим Threading.

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